解决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位配置。

posted @ 2026-01-15 20:21  Linux驱动开发  阅读(0)  评论(0)    收藏  举报