原子STM32带freeRTOS程序使用Timer3定时器时持续进入中断的问题解决

Posted Winter_world

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原子STM32带freeRTOS程序使用Timer3定时器时持续进入中断的问题解决相关的知识,希望对你有一定的参考价值。

【问题】:使用原子STM32F103最小系统板时,基于freeRTOS开发,使用定时器Timer3时发现,在中断加一句打印语句,程序持续进入中断,初始化设置的定时器周期都无效。

【原因】:

1)进一步查看程序,原子的timer.c文件中有一个ConfigureTimeForRunTimeStats函数,使用TIM3为FreeRTOS的时间统计提供时基,初步怀疑问题出现在此。

//初始化TIM3使其为FreeRTOS的时间统计提供时基
void ConfigureTimeForRunTimeStats(void)
{
	//定时器3初始化,定时器时钟为72M,分频系数为72-1,所以定时器3的频率
	//为72M/72=1M,自动重装载为50-1,那么定时器周期就是50us
	FreeRTOSRunTimeTicks=0;
	TIM3_Int_Init(50-1,72-1);	//初始化TIM3
}

2)查找该函数,查看调用的地方:在开始任务调度函数中

所以TIMER3是被freeRTOS占用了,启动任务调度,该定时器就开始工作了,这就是为什么裸机测试TIMER3工作正常,freeRTOS下测试就不行的原因。

【解决方案】:时间统计不用的话就把ConfigureTimeForRunTimeStats该函数中对TIMR3的配置注释掉,或者不用TIMER3即可解决。

作于202107201040,已归档

———————————————————————————————————

本文为博主原创文章,转载请注明出处!

若本文对您有帮助,轻抬您发财的小手,关注/评论/点赞/收藏,就是对我最大的支持!

祝君升职加薪,鹏程万里!

以上是关于原子STM32带freeRTOS程序使用Timer3定时器时持续进入中断的问题解决的主要内容,如果未能解决你的问题,请参考以下文章

使用HAL对STM32F407ZGT6单片机移植FreeRTOS(参考正点原子)

FreeRTOS-06任务运行时间信息统计

STM32CubeIDE+FreeRTOS软件定时器实验

Stm32的中断在测试FREERTOS的时候的问题

主从配置中的 STM32 奇数 timer1 行为 - mb 代码问题

FreeModbus移植实例(转)