canFestival移植(2)

前序

前面一篇文章后,其实基本上就可以让canFestival运行起来了,但是移植过程中,你可能还有以下萌币:
(1)“核心层”中的timer.c到底有什么作用?跟drivers下面的硬件定时器到底是怎么交互的?
(2)“核心层”怎么使用到drivers下面的can硬件接口?
(3)怎么生成对象字典啊?应用层应该怎么使用呀?
(4)用户业务逻辑咋设计啊?
通过这篇文章,大家会进一步加强移植的信心。

“核心层”time.c分析

(1)TimeDispatch()函数分析。分析的大部分注释放在源码里面。

void TimeDispatch(void)
{
   
   
	TIMER_HANDLE i;
	TIMEVAL next_wakeup = TIMEVAL_MAX; /* 下一次定时周期 */

	/* 定时中断产生后,定时器的计数又增加了多少,一般是0 */
	UNS32 overrun = (UNS32)getElapsedTime();

    /* total_sleep_time记录的是本次定时时长 */
	TIMEVAL real_total_sleep_time = total_sleep_time + overrun;

	s_timer_entry *row;

	for(i=0, row = timers; i <= last_timer_raw; i++, row++)
	{
   
   
		if (row->state & TIMER_ARMED) /* if row is active */
		{
   
   
		    /* 根据row->val判断软定时器timers是否超时,超时就要触发软定时的回调函数 */
			if (row->val <= real_total_sleep_time) /* to be trigged */
			{
   
   
			    /* 如果ro
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值