文章目录
一、内容介绍
二、逻辑梳理
1、初始化
2、针对其中预分频为什么是72做一个解释
预分频
解释
3、理解两个变量:STA 、VAL
三、部分代码
1、变量STA 、 VAL
2、输入捕获初始化,定时器5通道1输入捕获配置
3、中断函数,使用定时器TIM5
4、计算高电平时间
四、总结
一、内容介绍
之前对一个输入捕获的实验没有理解透彻,虽然当时实验是有结果,但现在时间过去太久,所以印象很模糊,搞得我再次谈到这个竟然变得语无伦次,所以我还是决定复盘。所以今天我回顾了之前自己做过的输入捕获实验-获取一个高电平的持续时间,并进行重新梳理。此次更多是帮助自己回忆并加深理解,也算是给自己擦屁股了,真是让人感到不爽。
二、逻辑梳理
1、初始化
![输入捕获初始化](https://img-blog.csdnimg.cn/20200513110239753.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NzY196Y3lz,size_16,color_FFFFFF,t_70)
2、针对其中预分频为什么是72做一个解释
预分频
![预分频:72](https://img-blog.csdnimg.cn/20200513110428815.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NzY196Y3lz,size_16,color_FFFFFF,t_70)
解释
![解释预分频为什么为72](https://img-blog.csdnimg.cn/20200513110454217.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NzY196Y3lz,size_16,color_FFFFFF,t_70)
3、理解两个变量:STA 、VAL
补充:上图中,捕获方式:0-上升沿捕获,1-下降沿捕获
三、部分代码
1、变量STA 、 VAL
u8 STA; //输入捕获状态 单字节(8位)
u16 VAL; //输入捕获值 双字节
2、输入捕获初始化,定时器5通道1输入捕获配置
void input_init()
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
TIM_ICInitTypeDef TIM5_ICInitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
/* 开启定时器5时钟 */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE); //使能TIM5时钟
TIM_ClearITPendingBit(TIM5,TIM_IT_Update|TIM_IT_CC1); //清除中断标识位
TIM_TimeBaseInitStructure.TIM_Period = 0xffff; //设置定时器自动重装载值
TIM_TimeBaseInitStructure.TIM_Prescaler = 71; //以1MHz的频率计数,一次是1μs(微妙
|