关于osal_start_timerEx的疑问
在OSAL 下使用官方demo测试osal_start_timerEx函数,发现在其前面增加一个延时相当的延时程序时,发现osal_start_timerEx是不起作用的。原因是什么呢?
程序如下:
DelaynMS(5000); //加此延时后 osal_start_timerEx不起作用.DelaynMS(5000)后 LED马上进入闪烁(并非会再等 // 待5s再闪烁)。
//如果去掉DelaynMS(5000),则正常,会先延时5s后亮LED,一直等待到5s后再进入闪烁。
HalLedSet( (HAL_LED_1), HAL_LED_MODE_ON ); //点亮LED,以确认5s延时结束
osal_start_timerEx(SimpleBLETest_TaskID, SBP_START_DEVICE_EVT,5000); //经过5s后,闪烁
补充一下:这几行程序是放在任务初始化当中的(SimpleBLETest_Init),而不是大循环当中
测试发现osal_start_timerEx真正的延时时间是DelaynMS延时的时间减去osal_start_timerEx的时间。
顶起来啊~~
啥意思
看以上图片,应该可以看到我说的情况。本来DelaynMS处是一个EEPROM读写操作的,同样也有这样的问题。现在用DelaynMS取代EEPROM读写,模拟这一过程。不知是什么原因,感觉在DelaynMS处就开了osal_start_timerEx定时,osal_start_timerEx真正的定时时间是要减去DelaynMS的时间。
顶起~~~