OpenEdv-开源电子网

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

我写了个用定时器计算某段代码运行时间的程序,但是设定时间和实际时间差1ms?

[复制链接]

27

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
425
金钱
425
注册时间
2019-11-13
在线时间
50 小时
发表于 2020-12-31 16:05:41 | 显示全部楼层 |阅读模式
1金钱
按照网上案例改写的,部分代码如下:
1. 定时器 2 开始计时函数,将CNT至0,同时将计数中断次数的overflownum至0,失能TIM2;
1.JPG

2. 定时器 2 结束计时函数,获取最新的CNT值,失能TIM2;
2.JPG

3. 定时器 2 中断服务函数,当发生中断时,先判断overflownum是否溢出,无溢出则overflownum加1;
3.JPG

4. 主函数
4.JPG
某段代码用delay_ms(delay_time_ms)替代,计算代码的运行时间公式如图所示;
现在的问题时,初始化定时器2后(TIM2_Init(7199, 0),arr=7199,psc=0,即中断间隔为0.0001s) ,当delay_time_ms为10ms时,实际测得的时间为9ms。反正,不管我怎么设
delay_time_ms,实际测得时间就是少1ms。不知道具体原因是什么?



最佳答案

查看完整内容[请看2#楼]

把滴答计时器的中断优先级设置的比TIM2的中断优先级高
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

219

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1426
金钱
1426
注册时间
2020-5-12
在线时间
392 小时
发表于 2020-12-31 16:05:42 | 显示全部楼层
把滴答计时器的中断优先级设置的比TIM2的中断优先级高
回复

使用道具 举报

27

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
425
金钱
425
注册时间
2019-11-13
在线时间
50 小时
 楼主| 发表于 2020-12-31 16:54:28 | 显示全部楼层
叶子君 发表于 2020-12-31 16:05
把滴答计时器的中断优先级设置的比TIM2的中断优先级高

是我自己的问题
我把delay_time_ms加1后再输出了,实际上加1ms的目的是为了下一次运行而做的。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-15 10:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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