楼主: xingqing

RemoTI原版按键程序分析

[复制链接]
meitianshi 发表于 2013-5-8 18:16:00 | 显示全部楼层
好东西一定要顶起来
jjzap 发表于 2013-6-5 13:33:10 | 显示全部楼层
很透彻了!
darkyyy 发表于 2014-4-16 13:49:13 | 显示全部楼层
楼主能不能帮忙分析下回调函数里面的具体功能,我想改下按键的功能,但是回调函数其实很复杂,很多内容不太理解。
bobde163 发表于 2015-1-10 15:46:58 | 显示全部楼层
看了楼主的分享,又进一步了解其过程了,有一个地方就是“至于定时器具体是怎么操作的,那些程序被TI 封了”,这个应该没有被TI封装起来吧,osalTimerUpdate()函数中的如下代码应该就是判断时间是否到达超时的,
// Look for open timer slot 开始轮询,看看哪个事件到时间了,如果到时间了会设置相应的标志位
    while ( srchTimer )
    {
      osalTimerRec_t *freeTimer = NULL;
     
      HAL_ENTER_CRITICAL_SECTION( intState );  // Hold off interrupts.
      
      if (srchTimer->timeout <= updateTime)
      {
        srchTimer->timeout = 0;
      }
      else
      {
        srchTimer->timeout = srchTimer->timeout - updateTime;
      }
每一次运行到这个函数里,都会对定时器列表里的每个定时器的Timeout值进行判断和更新,首先判断Timeout值是否大于本次的时间更新值updatetime,如果大于,则表示从上次轮询到本次轮询之间过去的时间updatetime超过了Timeout值,表示该定时器超时了,所以将Timeout = 0;如果小于的话,则表示超时时间还没有到,于是执行srchTimer->timeout = srchTimer->timeout - updateTime,更新Timeout值,在这个函数里,Timeout更像是剩余时间值。新手拙见,不知是否正确
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表