输入捕获-获取一个高电平的持续时间

本文介绍了STM32输入捕获功能,用于测量高电平持续时间。通过梳理初始化、预分频设置、变量STA和VAL的作用,以及中断函数的运用,详细解释了如何计算高电平时间。文章还讨论了定时器更新中断和输入捕获中断的处理,以确保准确捕获高电平事件。
摘要由CSDN通过智能技术生成





一、内容介绍


        之前对一个输入捕获的实验没有理解透彻,虽然当时实验是有结果,但现在时间过去太久,所以印象很模糊,搞得我再次谈到这个竟然变得语无伦次,所以我还是决定复盘。所以今天我回顾了之前自己做过的输入捕获实验-获取一个高电平的持续时间,并进行重新梳理。此次更多是帮助自己回忆并加深理解,也算是给自己擦屁股了,真是让人感到不爽。



二、逻辑梳理

1、初始化

输入捕获初始化

2、针对其中预分频为什么是72做一个解释

预分频

预分频:72

解释

解释预分频为什么为72

3、理解两个变量:STA 、VAL

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 
  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值