解决FreeRTOS中定时器时间错误的问题
解决FreeRTOS中定时器时间错误的问题
问题现象是:定时1min就没问题,但是定时10min就会开机就定时器回调函数启动
#define TIMEOUT (10*60*1000)
#define configCPU_CLOCK_HZ ( ( unsigned long ) 72000000 )
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) /*tick频率是1000Hz,也就是1ms一个tick*/
#define configUSE_16_BIT_TICKS 1 //配置为1表示16位
time_F = xTimerCreate(
"ALERT_TIMER",
pdMS_TO_TICKS(TIMEOUT),
pdFALSE,
(void *)1,
vCallbackFunction
);
xTimerStart(time_F, pdMS_TO_TICKS(100));
16位最大值为0xFFFF,换算成十进制为65535,所以只能表示65535个tick,但经过pdMS_TO_TICKS(TIMEOUT),传入函数的tick为10 * 60 * 100 * 1 (tick) = 60000溢出,所以出现问题,解决方案为关掉16位,默认32位配置。
浙公网安备 33010602011771号