分享定时器输入捕获程序,直接操作寄存器(看手册配置成功)

2019-07-21 08:11发布

 刚刚开始做定时器输入捕获的时候在这个论坛上找了好久,都没有人分享,也有很多人问,无奈自己动手写了。花了一天的时间,这个东西真的不好写了,对比了库的例子,仿真,等。可以说付出了很多。现在完成了和大家分享。希望大家多多支持。 程序说明:1、程序中定时器4的PB6用于输出频率为1K,占空比为50%的PWM信号。
               2、定时器2的PA0用于输入捕获,当程序下到板子上,只有两个脚连在一起才会发生捕获。
               3、串口用于发送捕获的值到PC机上。

我在这里再声明一下,如果你捕获的信号不是1K,那要先经过计算ARR和分频,在这里改Capture_Init(2000,72-1);
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
49条回答
一剑飘飘
1楼-- · 2019-07-23 00:44
请问这个程序硬件仿真时在逻辑分析窗口设置信号引脚时总是提示是未知信号,是怎么回事?
软件仿真正常。
suqingxiao
2楼-- · 2019-07-23 05:40
没有用引脚仿真,程序是直接在板子上验证的。
满地的流浪
3楼-- · 2019-07-23 10:11
非常感谢你的分享~~~~~~~~
lhy111lhy
4楼-- · 2019-07-23 13:29
求助:为啥我串口打印出来的值一直是666那?
我以前修改过    在主函数里写
if(dir)led0pwmval++;
else led0pwmval--;

if(led0pwmval>300)dir=0;
if(led0pwmval==0)dir=1;
 
TIM4->CCR1=led0pwmval;

在void Capture_Init(u16 arr,u16 psc) 里也做了修改
然后串口就可以跟随打印出0~300,
最后程序丢了,现在怎么改都不行了!!

不知道怎么回事啊

求助解决啊
sun
5楼-- · 2019-07-23 18:34
 精彩回答 2  元偷偷看……
suqingxiao
6楼-- · 2019-07-24 00:28

打印出666说明你捕获的信号是一直保持不变的,你捕获到的信号是对的。你最好用示波器看一下输入信号,再看你捕获的值是不是和输入信号是相同的。

 

一周热门 更多>