文章目录
一、内容介绍
之前对一个输入捕获的实验没有理解透彻,虽然当时实验是有结果,但现在时间过去太久,所以印象很模糊,搞得我再次谈到这个竟然变得语无伦次,所以我还是决定复盘。所以今天我回顾了之前自己做过的输入捕获实验-获取一个高电平的持续时间,并进行重新梳理。此次更多是帮助自己回忆并加深理解,也算是给自己擦屁股了,真是让人感到不爽。
二、逻辑梳理
1、初始化
2、针对其中预分频为什么是72做一个解释
预分频
解释
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(微妙)
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseInitStructure.TIM_CounterMode