TI的工作人员,
在中断函数HAL_ISR_FUNCTION( halKeyPort0Isr, P0INT_VECTOR )里放了osal_start_timerEx( SampleApp_TaskID, PIR_Status_Send_EVT, HAL_PIR_INTERVAL_VALUE); 这个函数。希望如果在2S内再无脉冲触发中断则置位PIR_Status_Send_EVT任务发送数据。
但是在运行时发现,数据总是发两次。只要第一次进中断就发数据,但是数据显示从触发osal_start_timerEx函数到执行PIR_Status_Send_EVT任务,经过了10多秒,远远超过设定的2S。在第一次数据的2S之后就发送了第二次数据,第二次数据的时间是2S。
请问这是为什么呢?
melanie zhou:
当我把低功耗模式关掉,osal_start_timerEx( SampleApp_TaskID, PIR_Status_Send_EVT, HAL_PIR_INTERVAL_VALUE);的延时时间和发送次数都正常了。请问是因为进入PM2模式,导致的计时不正常吗?
Viki Shi:
回复 melanie zhou:
如果只是进入PM2的胡,应该不影响osal_start_timerEx,PM3才会影响
melanie zhou:
回复 Viki Shi:
您好,我查了,程序只进入了PM2模式,定时发送的任务也没有错误,时间也都正确。但是就是在中断中触发中的osal_start_timerEx函数不正常,这是为什么呢?
斌斌有礼:
回复 VV:
你好:
我也遇到在中断函数里调用osal_start_timerEx()函数的问题,解决办法就是用你说的那样,但我不知道为什么会出现这种情况,你解答一下吗?谢谢了!