osal_start_timerEx(Lock_TaskID,SBP_START_DEVICE_EVT,SBP_PERIODIC_EVT_PERIOD)的理解
osal_start_timerEx(Lock_TaskID,SBP_START_DEVICE_EVT,SBP_PERIODIC_EVT_PERIOD)与osal_set_event(Music_TaskID,event)的区别是osal_start_timerEx周期性的一直推送事件周期时间由SBP_PERIODIC_EVT_PERIOD决定,而osal_set_event是只推送一次。osal_start_timerEx开始周期性推送以后由osal_stop_timerEx(Lock_TaskID,SBP_START_DEVICE_EVT);停止周期性推送事件。
应用例子:
if ( events & SBP_START_DEVICE_EVT )
{
/*检查是否从消息队列中收到数据*/
if(1==lock_task()) //判断是否位空闲任务
{
osal_stop_timerEx(Lock_TaskID,SBP_START_DEVICE_EVT);
}
else
{
osal_start_timerEx(Lock_TaskID,SBP_START_DEVICE_EVT,SBP_PERIODIC_EVT_PERIOD);
}
return ( events ^ SBP_START_DEVICE_EVT );
}