用407采集700-7000HZ的频率。关于定时器设置的一些疑问

2019-07-20 11:09发布

用407采集700-7000HZ的频率。只是采集频率,不采集占空比。
配置程序用的是这个帖子的思路三:输入捕获

思路:一般来说,对STM32有一定了解的坛友们在测量频率的问题上往往都会想到利用输入捕获。首先设定为上升沿触发,当进入中断之后(rising)记录与上次中断(rising_last)之间的间隔(周期,其倒数就是频率)。再设定为下降沿,进入中断之后与上升沿时刻之差即为高电平时间(falling-rising_last),高电平时间除周期即为占空比。http://www.openedv.com/forum.php?mod=viewthread&tid=82594&highlight=%E9%A2%91%E7%8E%87

然而,问题来了。TIM5_Cap_Init(0XFFFFFFFF,84-1),将 TIM5_CH1 的捕获计数器设计为 1us 计数一次,并设置
重装载值为最大以达到不让定时器溢出的作用(溢出时间为 232-1 us) ,所以我们的捕获时间精
度为 1us。  
最大如果是7000HZ,那么每个上升沿间隔大约是143us。我如果设定捕获精度是1US,这样是不太浪费了?设置成TIM5_Cap_Init(0XFFFF,84-1) 。捕获是否会有影响??


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-07-20 12:15
统计频率,用外部计数模式,简便得多。所以,别考虑输入捕获模式了。
HerryZ
2楼-- · 2019-07-20 16:48
 精彩回答 2  元偷偷看……
HerryZ
3楼-- · 2019-07-20 19:01
正点原子 发表于 2017-11-4 22:32
统计频率,用外部计数模式,简便得多。所以,别考虑输入捕获模式了。

谢谢原子哥的回答。我有想过,外部中断计数每20个上升沿,然后标记这20个 上升沿所用的时间。我的思路是,开一个2us的定时器中断,在开始取得第一个上升沿之后,在定时器中断里面计数,直到取得20个定时器之后。定时器中断里面计算的时间就是这20个上升沿所用的时间。
原子哥,这样的方案可行度高吗?开了一个2us的定时器中断,会不会影响其他程序的运行??
我是用来测量700-7000HZ的频率的。有一个朋友用的是飞思卡尔的CPU。他的思路就是,就是20个脉冲所用的时间,然后计算出频率。
HerryZ
4楼-- · 2019-07-20 22:59
 精彩回答 2  元偷偷看……

一周热门 更多>