stm32---输入捕获实验实操(巨详细)

这次来分享上次没说完的输入捕获的知识点

实验中用到两个引脚,一个是通用定时器 TIM3 的通道 1,即 PA6,用于输出 PWM 信号,另一

个是高级控制定时器 TIM1 的通道 1,即 PA8,用于 PWM 输入捕获,实验中直接用一根杜邦线

短接即可 PA6 和 PA8 即可,同时可用示波器监控 PA6 的波形,看看实验捕获的数据是否正确。

PA6:用定时器的输出比较功能输出波形。

PA8:用定时器的输入捕获功能捕获波形。

步骤

1.通用定时器产生 PWM 配置

2.高级定时器 PWM 输入配置

3.编写中断服务程序,计算测量的频率和占空比,并仿真调试看是否一致。

编程的要点主要分成两部分,一个是通用定时器的 PWM 信号输出,另一个是 PWM 信号输入捕
获。

下面就贴出代码,全文跟着我操作,可以和我实现一样的效果

1.定时器产生 PWM 配置(输出比较)

1.1 配置GPIO

由于我们用到的是PA6,那么就配置PA6复用推挽输出就行,因为他用的不是普通GPIO口的功能,而是TIM3_CH1所以要用到复用功能,同时开启复用的时钟。

1.2 初始化定时器

1.3 初始化输出比较

最后在最上面加上,使能一下TIM3的时钟

bash 复制代码
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);

这样就可以产生50%占空比的波形了,周期频率那些由Psc, arr来决定

那么现在我们用示波器量一下看看到底是不是50%的占空比

实际测量,的确是的。那么下面就开始写输入捕获的代码

2.定时器 PWM 输入配置

1.1 配置GPIO

由于我们用到的是PA8,那么就配置PA8,但是这次要配置成浮空输入模式

1.2配置中断(因为我们要用到捕获和溢出处理中断)

中断通道别选错

1.3 初始化定时器

我们可以算出计数器的计数周期为 T=72M/72=1uS,1us*1000=1MS,这个是定时

器在不溢出的情况下的最大计数周期,也就是说周期小于 1ms 的 PWM 信号都可以被捕获到,转

换成频率就是能捕获到的最小的频率为 1KHZ。

1.4 初始化输入捕获功能

因为是 PWM 输入模式,只能使用通道 1 和通道 2 ,假如我们使用的是通道 1,即 TI1,输入

的 PWM 信号会被分成两路,分别是 TI1FP1 和 TI1FP2,两路都可以是触发信号。如果选择

TI1FP1 为触发信号,那么 IC1 捕获到的是 PWM 信号的周期,IC2 捕获到的是占空比,这种

输入通道 TI 和捕获通道 IC 的映射关系叫直连,输入捕获结构体的 TIM_ICSelection 要配置为

TIM_ICSelection_DirectTI。如果选择 TI1FP2 为触发信号,则 IC2 捕获到的是周期,IC1 捕获到的是占空比,这种输入通道 TI 和捕获通道 IC 的映射关系叫非直连,输入捕获结构体的 TIM_ICSelection要配置为 TIM_ICSelection_IndirectTI。有关输入通道 TI 和捕获通道 IC 的具体映射关系见图输入通道 TI 和捕获通道 IC 的映射图 ,有直连和非直连两种。

好,我们来分析上上面的一大堆术语。

Q:如果选择TI1FP1 为触发信号,那么 IC1 捕获到的是 PWM 信号的周期,IC2 捕获到的是占空比。这句话怎么理解呢?

A点:由于上面的输入捕获的配置。当捕获到 PWM 信号的第一个上升沿时,产生中断,计数器被复位,锁存到捕获寄存器 IC1 和 IC2的值都为 0。

B点:当下降沿到来时,IC2 会捕获,对应的是占空比,但是会产生中断。

C点:当捕获到第二个上升沿时,IC1 会捕获,对应的是周期,而且会再次进入中断,这个时间就可以根据 IC1 和 IC2的值计算出频率和占空比。

中断复位函数中,我们获取输入捕获寄存器 CCR1 和 CCR2 寄存器中的值,当 CCR1 的值不为 0

时,说明有效捕获到了一个周期,然后计算出频率和占空比。在计算的时候 CCR1 和 CCR2 的值

都必须要加 1,因为计数器是从 0 开始计数的。

现在我们全速跑代码看看是否一致,还是很准的

全文就是这样,非常的简单易懂

以上仅是个人学习笔记,若对你有帮助,那么最好不过,共勉!

相关推荐
不悔哥4 天前
开源OV-Watch:怎么做一个智能手表
单片机·开源·嵌入式
XiHongShi20164 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
优信电子4 天前
AIT1001 非接触式红外测温模块 STM32 驱动开发实战:从引脚到代码全解析
stm32·嵌入式·温度传感器·红外测温·非接触式测温·ait1001
深圳老胡4 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
wuyk5554 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
女神下凡4 天前
嵌入式设计的各种存储芯片的硬件/软件设计规范,非常全面。
arm开发·单片机·嵌入式硬件
梅梅9664 天前
一款mipi转lvds的lcd调试(LT8912B)
单片机·计算机外设·电脑·显示器·pd芯片
开发笔记-阿牛4 天前
蓝牙音乐灯拆解,又一次拆到蓝牙音乐灯芯片CK6865L
人工智能·单片机·嵌入式硬件·音视频·音频
从零开始的嵌入式之旅4 天前
day47
arm开发·经验分享·笔记·嵌入式硬件
恒锐丰科技林技术员4 天前
EG1164 高压大电流升压同步整流芯片解析
经验分享·嵌入式硬件·硬件工程