STM32的PWM捕获
STM32的PWM捕获
更多
在 STM32 中实现 PWM 捕获(测量 PWM 信号的周期和占空比)通常使用定时器的 输入捕获 功能。以下是详细步骤和代码示例(基于 STM32 HAL 库):
1. 硬件连接
- 将 PWM 信号源连接到支持输入捕获的定时器通道引脚(如
TIMx_CHy,例如TIM2_CH1对应 PA0)。
2. 配置步骤
(1) 定时器基础设置
- 选择定时器(如 TIM2)。
- 配置时基:
- 时钟源:内部时钟(
TIM_CLOCKSOURCE_INTERNAL)。 - 预分频器(
Prescaler):根据信号频率调整(确保计数器频率 > PWM 频率)。 - 自动重装载值(
Period):设置为最大(如0xFFFF),防止溢出。
- 时钟源:内部时钟(
(2) 输入捕获通道配置
- 通道 1(上升沿捕获):用于测量 周期。
- 通道 2(下降沿捕获):用于测量 高电平时间(占空比计算用)。
TIM_IC_InitTypeDef sICConfig;
// 通道 1 配置(上升沿捕获周期)
sICConfig.ICPolarity = TIM_ICPOLARITY_RISING; // 上升沿触发
sICConfig.ICSelection = TIM_ICSELECTION_DIRECTTI; // 直接连接到通道
sICConfig.ICPrescaler = TIM_ICPSC_DIV1; // 无分频
sICConfig.ICFilter = 0x0; // 无滤波
HAL_TIM_IC_ConfigChannel(&htim2, &sICConfig, TIM_CHANNEL_1);
// 通道 2 配置(下降沿捕获高电平时间)
sICConfig.ICPolarity = TIM_ICPOLARITY_FALLING; // 下降沿触发
sICConfig.ICSelection = TIM_ICSELECTION_INDIRECTTI; // 间接连接到通道
HAL_TIM_IC_ConfigChannel(&htim2, &sICConfig, TIM_CHANNEL_2);
(3) 从模式触发配置
- 设置 复位模式(Reset Mode),在上升沿复位计数器:
TIM_SlaveConfigTypeDef sSlaveConfig; sSlaveConfig.SlaveMode = TIM_SLAVEMODE_RESET; // 上升沿复位计数器 sSlaveConfig.InputTrigger = TIM_TS_TI1FP1; // 触发源为 TI1(通道1) sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_RISING; HAL_TIM_SlaveConfigSynchro(&htim2, &sSlaveConfig);
(4) 启用捕获和中断
// 启动捕获通道
HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_1); // 通道1 + 中断
HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_2); // 通道2 + 中断
// 启用定时器全局中断(需在 NVIC 中配置)
HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(TIM2_IRQn);
3. 中断处理
在中断回调函数中读取捕获值并计算周期/占空比:
// 全局变量存储结果
volatile uint32_t period = 0;
volatile uint32_t pulse = 0;
volatile float duty_cycle = 0.0;
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) {
if (htim->Instance == TIM2) {
// 通道1捕获上升沿(周期结束)
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET) {
__HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC1);
period = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1) + 1; // 周期 = CCR1 + 1
}
// 通道2捕获下降沿(高电平结束)
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET) {
__HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC2);
pulse = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_2); // 高电平时间 = CCR2
duty_cycle = (pulse * 100.0f) / period; // 占空比(%) = (高电平时间 / 周期) * 100
}
}
}
4. 关键点说明
- 计数方向:确保定时器为向上计数(默认)。
- 信号频率范围:
- 最小周期: > 2 个定时器时钟周期。
- 最大周期: <
(0xFFFF + 1) * (Prescaler + 1) / TIM_CLK。
- 抗干扰:通过
ICFilter参数配置数字滤波器(取值范围0x0~0xF)。 - 精度:由定时器时钟和预分频器决定。
5. 进阶优化
- DMA 传输:避免频繁中断,适合高频 PWM。
- 双边沿捕获:单通道交替捕获上升/下降沿(需在中断中切换极性)。
- 输入分频(
ICPrescaler):降低捕获事件频率。
通过以上步骤,即可实现 STM32 对 PWM 信号的周期和占空比精确捕获。
使用STM32捕获PWM时同时捕获2个通道时会出现捕获的频率值不准确,是什么原因导致的?
在使用STM32F103芯片的2个定时器捕获2路PWM波时,当2路信号同时输入时,会出现
2025-05-14 06:24:00
使用STM32捕获PWM时同时捕获2个通道时会出现捕获的频率值不准确是什么原因导致的?
在使用STM32F103芯片的2个定时器捕获2路PWM波时,当2路信号同时输入时,会出现
2025-04-27 08:39:28
使用STM32捕获PWM时同时捕获2个通道时会出现捕获的频率值不准确的问题,是什么原因导致的?
在使用STM32F103芯片的2个定时器捕获2路PWM波时,当2路信号同时输入时,会出现
2025-04-25 08:29:21
STM32第八章-TIM输入捕获
在第七章我们介绍了 STM32 的定时器作为 PWM 输出的使用方法,这一章,我们将向大家介绍通用定时器作为输入捕获的使
资料下载
康辅佑
2022-02-07 11:00:19
使用STM32捕获PWM时同时捕获2个通道时会出现捕获的频率值不准,为什么?
在使用STM32F103芯片的2个定时器捕获2路PWM波时,当2路信号同时输入时,会出现
2025-04-22 10:43:06
STM32F103VE搭建的PWM输入捕获功能,移植到STM32F103VD无法捕获的原因?
利用STM32F103VE芯片搭建的PWM输入捕获功能,移植到STM32
2024-03-20 08:21:39
一个通道如何捕获PWM的频率和占空比?
一,前言正常情况是双通道捕获PWM波,这种方法简单且准确,但是它占用的资源太多了,因为它使用定时器的两个通道,且这两个通道映射在一个通道上,同时配置一路捕获
2023-12-30 08:00:54
7天热门专题
换一换
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机