STM32 CubeIDE 通过PWM占空比控制舵机角度

PWM(Pulse Width Modulation)脉冲宽度调制,是一种通过改变脉冲信号的高电平持续时间(占空比)来模拟输出不同电压的技术。

占空比:在一个周期内,高电平时间与总周期时间的比值,通常用百分比表示。

新建工程,在SYS将Debug模式设置为Serial Wire,在RCC中设置高速时钟源为晶振,时钟时钟里时钟主频为72HMz。

设置旋转编码器,在TIM1里面打开TIM1的旋转编码器模式。

硬件连接使用的是PB8口对应TIM4的通道3

在TIM4勾选时钟源为内部时钟源将通道3设置为PWM生成模式

将PWM信号的频率控制在50MHz(72MHz / (预分频器)720分频 / 自动重装载(2000)= 50Hz)

启动TIM1编码器模式来捕获编码器脉冲HAL_TIM_Encoder_Start(&htim1, TIM_CHANNEL_ALL);

启动TIM4通道3的PWM输出模式HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3);

编码器计数读取与保护:从TIM1读取当前计数值,并做了上限和下限保护,防止溢出或异常值。

PWM占空比计算:将编码器的计数值 count 经过一个公式转换为PWM比较值 duty ,从而控制输出波形的占空比。

PWM输出更新:通过 __HAL_TIM_SET_COMPARE 函数更新TIM4通道3的比较值,改变PWM输出。

程序最终实现效果:通过旋转编码器控制舵机旋转

相关推荐
Zevalin爱灰灰7 小时前
能源与电源管理电路——防倒灌电路
单片机·嵌入式硬件·电源管理
jianqiang.xue10 小时前
ESP-IDF保姆级入门02|Ubuntu24.04搭建EIM-GUI开发环境,打通Windows_Linux双平台统一开发
stm32·单片机·物联网
无垠的广袤10 小时前
【工业树莓派 CM0 Dev Board】扩展板设计
linux·python·嵌入式硬件·pcb设计·模块化·传感器
嵌入式-老费11 小时前
esp32开发与应用(添加数据分区)
单片机·嵌入式硬件
嵌入式-老费12 小时前
esp32开发与应用(OTA升级)
嵌入式硬件
CYLAM202514 小时前
STC32G 单片机0.96“OLED 西历农历可调万年历 (1901-2100)
单片机·嵌入式硬件·stc32g·万年历·西历农历·0.96”oled 12864·4x4 矩阵键盘
Discipline~Hai15 小时前
ARM03-蜂鸣器和中断
c语言·arm开发·单片机·嵌入式硬件·嵌入式
KaifuZeng15 小时前
电源面试问题汇总一
单片机·嵌入式硬件·面试·电路
驱动探索者17 小时前
RISC-V PLIC 深度解析:从 Spec 到 Zephyr 驱动实现
单片机·嵌入式硬件·中断控制器
LCG元18 小时前
STM32 FreeRTOS 实战:任务调度 + 互斥锁 + 消息队列 + 串口命令解析器
stm32·单片机·嵌入式硬件