标题: STM32单片机启用多个定时器会影响其他端口吗? [打印本页]

作者: sr861126    时间: 2023-4-4 17:19
标题: STM32单片机启用多个定时器会影响其他端口吗?
STM32 启用2个定时,一个喂狗,另外一个亮灯计数,但是总是灯亮的不正常,该怎么设置

作者: Hephaestus    时间: 2023-4-4 19:44
先把狗关了停止喂狗定时器,然后看看亮灯的是否正常。
作者: rayin    时间: 2023-4-5 10:28
喂狗的周期要比定时器的周期长. 定时器的中断改变灯的ON,off状态. 可能是喂狗超时系统复位了, 导致灯的on,off状态受到影响
作者: 可乐11A    时间: 2023-4-6 11:39
看优先级,看周期
作者: rctty    时间: 2023-4-6 14:16
定时器中断里喂狗?这不是只能防止跑飞,但不能防进入死循环;亮灯估计中断里任务太多跑不过来,区分一下中断优先级,高优先级嵌套就行
作者: sr861126    时间: 2023-4-7 09:23
可乐11A 发表于 2023-4-6 11:39
看优先级,看周期

应该是两个定时器开启了,导致中断都在进行,定时器出现互相干涉的现象
作者: sr861126    时间: 2023-4-7 09:47
可乐11A 发表于 2023-4-6 11:39
看优先级,看周期

  和优先级没有关系,是开启了2个定时器导致另一个不正常,关掉一个就可以了,怎么让2个定时器同时工作,不相互干涉
作者: yuxuesuixing    时间: 2023-4-7 11:28
1.喂狗不能用定时器,用定时器喂狗就和没开狗一样,定时器出问题也就是多中断快速触发阻塞了低优先级定时器中断,那就是软件系统出大问题了,或者晶振坏了,硬件出大问题了,用定时器喂狗等于脱裤子放屁,还不如不开狗。

2.两个定时器工作是不受影响的,因为定时器是独立的硬件,所有定时器一块用也是没问题的,只是中断会占用更多的系统时间而已。

由1得出题主基础不足,那2发生的原理大概率与两个定时器同时侵占了资源导致,所以猜测有以下几种情况
A:两个定时器使用了相同的全局变量,变量增减异常,导致数据错乱。
B:定时器修改的是状态值,但开关灯是在主程序中执行的,主程序仅读取了状态值,在某些优化下,主程序优化效率将状态值保存到内部寄存器,那该状态值需要用volatile关键字修饰(适用于51 ,32内存结构不太了解)
C:使用了相同名称的全局变量和局部变量,编译器没有发现(我的keil出现过几次),变量右键跳转到定义位置就发现了错误,修改不同名称即可。
作者: sr861126    时间: 2023-4-7 17:49
yuxuesuixing 发表于 2023-4-7 11:28
1.喂狗不能用定时器,用定时器喂狗就和没开狗一样,定时器出问题也就是多中断快速触发阻塞了低优先级定时器 ...

  我把喂狗的定时器关闭就正常了,其实逻辑很简单的,一个定时器15ms'喂狗一次,另外的一个1s闪烁led,
    把喂狗关了,led开关正常进入定时器




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1