OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3335|回复: 3

F429板子定时器莫名出现定时不准的问题

[复制链接]

0

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-11-1
在线时间
5 小时
发表于 2020-6-30 14:52:56 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 yhtc11 于 2020-6-30 14:55 编辑

工作过程当中遇到的实际问题,具体是这样的:


设备设置了一个定时器TIM5,溢出时间两秒,当一个特定外部中断进来的时候启动定时器,发生溢出的处理函数中直接关掉,相当于一次性2秒定时。这两秒过程中进行中断脉冲计数,溢出中断服务函数中关闭定时器,另外在外部中断处理函数中关掉中断。然后在主程序中读取标志位,得到脉冲值,置标志位用于主程序打印上传数据。
这个步骤一般都是能正常工作的,起到上传转速的作用。
工作机理就是定时器采完转速后对转速进行一个初步判断,置标志位,在主程序while1循环里读取标志位判断,读取到标志位就上传转速,并重新开启中断(用于下一次计时)
但是我在一个包含了一些数学运算的函数里面调用这段代码,输出的脉冲数目怎么都不对。
因为这段数学运算的代码耗时太长了,系统在里面的过程中跑不到主循环中标志位判断的位置,所以我就自己手动加了一些读取标志位判断的代码,相当于手动轮询
并不是完全的数据错误,就是2秒钟本来应该是222的脉冲数,进了这个函数中间,就一直给我一些50 160这种值,每次还都差不多的,领导一直说是我的原因,我是真的找不出来问题在哪。。
改变定时器时间会有用吗?现在临时的解决办法就是不用定时了,按照实际跑代码试出来的时间去定两秒的间隔,手动上传脉冲数。领导说这样做肯定是不对的,我也没什么其他好办法
想问下各位大佬数学运算对定时器会有影响吗?


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-11-1
在线时间
5 小时
 楼主| 发表于 2020-6-30 15:14:55 | 显示全部楼层
我感觉定位到问题所在了,在定时器溢出中断服务函数中关闭定时器,这个操作似乎总是关不上定时器,这个何解。。。
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14402
金钱
14402
注册时间
2018-8-3
在线时间
1156 小时
发表于 2020-6-30 16:16:02 | 显示全部楼层
yhtc11 发表于 2020-6-30 15:14
我感觉定位到问题所在了,在定时器溢出中断服务函数中关闭定时器,这个操作似乎总是关不上定时器,这个何解 ...

直接失能一下定时器你看看
啊哈~加油!!
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-11-1
在线时间
5 小时
 楼主| 发表于 2020-6-30 16:34:48 | 显示全部楼层
翼行园子 发表于 2020-6-30 16:16
直接失能一下定时器你看看

在外部的失能也会有不成功的情况,如果加延时的话就可以成功关闭。在中断服务函数里面失能就是关不了,而且也不能加延时。
不只是这个板子这样,我试的F429都出现了这个问题。。。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-1 05:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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