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

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-26 23:21
回复【26楼】suqingxiao:
---------------------------------
楼主,我发现有一个问题。如果你用信号源输入的时候,会发现占空比一直都是比实际少1。如果你用STM32的PWM输入的话,如果设为PWM2模式的时候,占空比是正常的,如果用PWM1模式的话,占空比依然是比实际少1.。
我这是为什么?为什么PWM的输出模式会影响
正点原子
2楼-- · 2019-07-27 00:52
回复【43楼】一蓑、烟雨。:
---------------------------------
这句话是开启捕获中断,至于上升沿还是下降沿,看你的设置了。
完成一个电平(高电平或者低电平)的捕获,必定需要2次捕获,所以在第一次捕获进入中断后,要修改捕获边沿为相反的方向。
一蓑、烟雨。
3楼-- · 2019-07-27 02:24
回复【45楼】正点原子:
---------------------------------
原子哥,在打扰一下。
TIM2->DIER|=1<<1; 这个只是开启CH1的捕获中断,而CH1的捕获中断只有设为上升沿捕获,而CH2的捕获中断只设为下降沿捕获,但只开启了CH1的捕获中断,那CH2的下降沿捕获中断没有开啊?也没有在中断函数中开CH2的捕获中断、那这是为什么?
正点原子
4楼-- · 2019-07-27 03:37
回复【46楼】一蓑、烟雨。:
---------------------------------
一样的,上升沿/下降沿,都叫捕获中断。。。
一蓑、烟雨。
5楼-- · 2019-07-27 04:26
 精彩回答 2  元偷偷看……
正点原子
6楼-- · 2019-07-27 07:46
在中断里面读取CCR1即可.

一周热门 更多>