原理简介:

如图,假定定时器初始为向上计数模式,t1~t2 时间,即为测量的高电平时间
测量方法:
首先,设置定时器通道 x 为上升沿捕获,于是在 t1 时刻,就会捕获到当前的 CNT 值。
然后立即清零 CNT,并设置通道 x为下降沿捕获。
到 t2 时刻,又会发生捕获事件,得到此时的 CNT 值,记为 CCRx2。
计算方法:
CNT计数的次数等于: N*ARR+CCRx2,有了这个计数次数,再乘以 CNT 的计数周期,即可得到 t2-t1 的时间长度,即高电平持续时间。
实验方法:
GPIO_F10:推挽输出,初始设置高电平,LED灭。
GPIO_A0复用定时器5,(上升/下降沿捕获/定时器溢出)触发定时器中断
连接PF10和PA0(注:也可以PA0接地,但一定要加电阻,否则会短路)
按键在GPIO_A0与电源中间(详见电路示意图)

程序编写:
main:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "timer.h"
#include "key.h"
extern u8 TIM5CH1_CAPTURE_STA; //输入捕获状态
extern u32

该博客详细介绍了使用STM32定时器进行输入捕获测量高电平时间的原理和步骤,包括设置定时器为上升沿捕获、清零计数器、切换到下降沿捕获,以及通过捕获值计算高电平持续时间。实验中,通过GPIO和按键触发中断,实现了LED亮灭和高电平时间的测量与显示。
最低0.47元/天 解锁文章
4621

被折叠的 条评论
为什么被折叠?



