要求:
一、PWM输出
PWM波生成原理
在此处使用TIM2生成PWM,PA1输出PWM波。CNT小于CCR时,输出高电平;CNT大于CCR时,输出低电平。
输入捕获测量频率的原理
输入捕获的捕获意思是它在PWM波上升沿或者下降沿的时候,会产生一个中断。这里设置为每遇到一个上升沿产生一次中断。
问:如何获取周期T
答:在上升沿(中断)产生的时候,将CNT置0,在下一个上升沿(中断)产生的时候,读取CNT的值,并将该CNT的值存放在一个变量capture_value(捕获值)中,这样就可以计算周期T了。
CNT加1,所耗费的时间
,
应用:测量定时器产生PWM波的频率。
通过PA15这个引脚来进行一个定时器的输入捕获,去测量555定时器产生的PWM波的一个频率。
PWM频率可调是通过电位器R40来调整的
此次输入捕获分为两个部分
1、配置PA15、PB4 这两个引脚,去输入捕获两个信号发生器(555定时器U8、U7)产生的PWM波,测量该PWM波的频率。
2、重新定义一个引脚(PA7)去测量PA1输出的PWM波的频率。(需要在PA7和PA1这两个引脚之间连上一根杜邦线)
问题
预分频的大小要介于可以测量高频率和低频信号不会溢出
为了准确地测量信号的变化,捕获定时器的频率必须至少高于输入信号的频率
第一部分:
HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
是STM32 HAL库中用于处理输入捕获(Input Capture)事件的回调函数。当定时器捕获到输入信号时,该回调函数会被调用。调用时机
输入捕获事件:
当定时器配置为输入捕获模式时,如果捕获到信号边沿(上升沿或下降沿),定时器会将当前计数器的值存入捕获寄存器,并触发中断。
此时,HAL库会调用
HAL_TIM_IC_CaptureCallback
函数。中断触发:
输入捕获事件会触发定时器的中断,HAL库在中断服务程序(ISR)中处理捕获事件,并调用回调函数。
典型应用场景
测量脉冲宽度:
通过捕获信号的上升沿和下降沿,计算两次捕获之间的时间差,从而测量脉冲宽度。
频率测量:
通过捕获两个连续上升沿或下降沿的时间差,计算输入信号的频率。
事件计时:
记录外部事件发生的时间戳。
在STM32的定时器中,CCR(Capture/Compare Register,捕获/比较寄存器) 是用于输入捕获和输出比较功能的关键寄存器。在输入捕获模式下,CCR 中存储的值是 定时器计数器(TIMx_CNT) 在捕获事件发生时的值。
CCR 里面装的是什么值?
在输入捕获模式下:
当捕获事件发生时(例如,检测到上升沿或下降沿),定时器的当前计数器值(
TIMx_CNT
)会被自动复制到 CCR 寄存器中。因此,CCR 中存储的值是 捕获事件发生时定时器计数器的值。
输入捕获,捕获的是什么值?
输入捕获功能的核心是 捕获外部信号的边沿事件,并记录此时定时器计数器的值。具体来说:
捕获的信号:
输入捕获功能通过定时器的输入通道(如 TIMx_CH1、TIMx_CH2 等)捕获外部信号的 边沿(上升沿、下降沿或双边沿)。
边沿的类型由定时器的配置决定(例如,配置为上升沿捕获、下降沿捕获或双边沿捕获)。
捕获的值:
当捕获到指定的边沿时,定时器的当前计数器值(
TIMx_CNT
)会被锁存到 CCR 寄存器中。这个值可以用来计算:
脉冲宽度:通过捕获上升沿和下降沿的计数器值,计算两者之差。
信号周期:通过捕获两个连续上升沿(或下降沿)的计数器值,计算两者之差。
事件时间戳:记录某个事件发生的时刻(以定时器计数器的值为单位)。
输入捕获的工作原理
配置定时器:
定时器以一定的频率计数(由预分频器和自动重装载值决定)。
配置输入捕获通道,设置捕获边沿(上升沿、下降沿或双边沿)。
捕获事件发生:
当外部信号满足捕获条件(例如,检测到上升沿)时,定时器的当前计数器值(
TIMx_CNT
)会被锁存到 CCR 寄存器中。同时,定时器会触发一个中断或 DMA 请求。
读取 CCR 的值:
在中断服务程序或回调函数中,读取 CCR 的值,用于后续计算(如脉冲宽度、信号周期等)。
示例:测量脉冲宽度
假设定时器配置为上升沿和下降沿捕获:
第一次捕获:
当检测到上升沿时,定时器的计数器值
TIMx_CNT
被锁存到 CCR1 中。假设此时
CCR1 = 1000
。第二次捕获:
当检测到下降沿时,定时器的计数器值
TIMx_CNT
被锁存到 CCR2 中。假设此时
CCR2 = 3500
。计算脉冲宽度:
脉冲宽度 =
CCR2 - CCR1 = 3500 - 1000 = 2500
。如果定时器的计数频率为 1 MHz(每个计数代表 1 µs),则脉冲宽度为 2500 µs。
总结
CCR 中存储的值:捕获事件发生时定时器计数器的值(
TIMx_CNT
)。输入捕获的功能:捕获外部信号的边沿,并记录此时定时器计数器的值。
典型应用:测量脉冲宽度、信号周期或记录事件时间戳。
通过合理配置定时器和分析 CCR 的值,可以实现精确的时间测量和信号分析。
第二部分(新建一个项目):