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输出。

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

相关推荐
松涛和鸣3 小时前
72、IMX6ULL驱动实战:设备树(DTS/DTB)+ GPIO子系统+Platform总线
linux·服务器·arm开发·数据库·单片机
简单中的复杂3 小时前
【避坑指南】RK3576 Linux SDK 编译:解决 Buildroot 卡死在 host-gcc-final 的终极方案
linux·嵌入式硬件
上海合宙LuatOS4 小时前
LuatOS核心库API——【audio 】
java·网络·单片机·嵌入式硬件·物联网·音视频·硬件工程
Hhh __灏4 小时前
stm32的SRAM内存不足如何分析和优化?堆栈空间如何优化?
单片机
LS_learner5 小时前
Snapd和Apt—Linux 上两种完全不同的软件包管理系统
嵌入式硬件
点灯小铭5 小时前
基于51单片机的双档交流电压表设计与实现
单片机·嵌入式硬件·毕业设计·51单片机·课程设计·期末大作业
厦门辰迈智慧科技有限公司5 小时前
全功能数据采集仪mcu主要用途
单片机·嵌入式硬件·水库大坝安全监测·数据采集仪mcu
jl48638216 小时前
变比测试仪显示屏的“标杆“配置!如何兼顾30000小时寿命与六角矢量图精准显示?
人工智能·经验分享·嵌入式硬件·物联网·人机交互