找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1068|回复: 8
打印 上一主题 下一主题
收起左侧

STM32单片机启用多个定时器会影响其他端口吗?

[复制链接]
跳转到指定楼层
楼主
ID:302293 发表于 2023-4-4 17:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32 启用2个定时,一个喂狗,另外一个亮灯计数,但是总是灯亮的不正常,该怎么设置
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:883242 发表于 2023-4-4 19:44 | 只看该作者
先把狗关了停止喂狗定时器,然后看看亮灯的是否正常。
回复

使用道具 举报

板凳
ID:517951 发表于 2023-4-5 10:28 | 只看该作者
喂狗的周期要比定时器的周期长. 定时器的中断改变灯的ON,off状态. 可能是喂狗超时系统复位了, 导致灯的on,off状态受到影响
回复

使用道具 举报

地板
ID:1069354 发表于 2023-4-6 11:39 | 只看该作者
看优先级,看周期
回复

使用道具 举报

5#
ID:1045628 发表于 2023-4-6 14:16 | 只看该作者
定时器中断里喂狗?这不是只能防止跑飞,但不能防进入死循环;亮灯估计中断里任务太多跑不过来,区分一下中断优先级,高优先级嵌套就行
回复

使用道具 举报

6#
ID:302293 发表于 2023-4-7 09:23 | 只看该作者
可乐11A 发表于 2023-4-6 11:39
看优先级,看周期

应该是两个定时器开启了,导致中断都在进行,定时器出现互相干涉的现象
回复

使用道具 举报

7#
ID:302293 发表于 2023-4-7 09:47 | 只看该作者
可乐11A 发表于 2023-4-6 11:39
看优先级,看周期

  和优先级没有关系,是开启了2个定时器导致另一个不正常,关掉一个就可以了,怎么让2个定时器同时工作,不相互干涉
回复

使用道具 举报

8#
ID:1065084 发表于 2023-4-7 11:28 | 只看该作者
1.喂狗不能用定时器,用定时器喂狗就和没开狗一样,定时器出问题也就是多中断快速触发阻塞了低优先级定时器中断,那就是软件系统出大问题了,或者晶振坏了,硬件出大问题了,用定时器喂狗等于脱裤子放屁,还不如不开狗。

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

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

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

9#
ID:302293 发表于 2023-4-7 17:49 | 只看该作者
yuxuesuixing 发表于 2023-4-7 11:28
1.喂狗不能用定时器,用定时器喂狗就和没开狗一样,定时器出问题也就是多中断快速触发阻塞了低优先级定时器 ...

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表