
MG90S舵机 如图所示,舵机有三根线,红色接5V正极,黑色接地;黄色为信号线,接收PWM信号 ![]() 实物图 ![]() 输出PWM控制舵机 STM32控制舵机,总的来说是向舵机信号线发送周期为20ms的PWM(Pulse Width Modulation 脉冲宽度调制)信号来控制舵机转角,PWM脉冲的占空比决定了舵机的转角位置,对应关系如下图; ![]() STM32靠定时器TIM实现PWM信号的输出,STM32有多个定时器,分为通用定时器和高级定时器,每个通用定时器都可以输出4路PWM,本文采用TM2_CH4,及定时器2的第4路PWM;对应STM32F103C8T6上的PB11引脚; 创建工程输出PWM 本文使用STM32CubeMX创建工程,更加简单高效,即便对单片机不熟悉也可操作成功; 一、打开STM32CubeMX,新建一个工程,搜索并选择STM32F103C8,然后start project; ![]() 二、进行基本设置,配置RCC、SYS、HCLK RCC -> 设置高速外部时钟HSE 选择外部时钟源 SYS -> 选择Debug方式 serial wire HCLK -> 设置为72MHZ ![]() ![]() ![]() 三、设置定时器 1.选择TIM2 2.选择内部时钟源 3.设置Channel4为PWM模式 4.右侧对应管脚自动设置为复用模式 ![]() 设置定时器参数 控制舵机我们需要设置PWM输出一个周期时间为20ms的信号,定时器时钟为72Mhz 1.预分频Prescaler设置为720-1,则单周期为72M/(Prescaler + 1) = 100Khz(0.01ms) 2.以20ms为周期,则Counter Period为20ms/0.01ms - 1 = 1999 3.此处可设定默认脉冲宽度为0.5ms,及0.5/20*2000 = 50 ![]() 四、接下来设置输出格式 1.添加工程名PWM 2.修改IDE为MDK-ARM V5 3.在Code Genetator中设置包含库与工程格式 ![]() ![]() 至此STM32CubeMX已设置完成,接下来GENERATE CODE,并打开文件; 在main函数中启动定时器,并输出一定的脉冲的PWM信号即可驱动舵机; 五、修改代码 在main.c文件相应位置处添加如下代码 1.启动PWM输出 2.输出PWM信号
添加完以上代码之后,编译,然后通过JLink将程序LOAD到STM32F103C8T6,将舵机信号线连接PB11(TIM2_CHANNEL4)口,并接上电源,舵机即可转动到指定角度;由以上定时器设定可知,compareValue值50、150、250 对应 0.5ms、1.5ms、2.5ms 对应 0°、90°、180°;若想让舵机连续转动,在50~250内循环改变compareValue值即可; 六、接线 开始时用单片机的5V输出给舵机供电,舵机哒哒哒响,但是不转,怀疑是供电不给力,单独供电后驱动成功; 1.JIink连接电脑和单片机,下载程序到单片机并给单片机供电 2.舵机黄色信号线接STM32F103C8T6引脚PB11,接收PWM信号 3.舵机红色电源线接稳压板5V输出正极,舵机黑色地线需与单片机地相连 ![]() 调试 实操中可能会出现各种各样的问题,以下有几种调试方法 一、舵机测试 调试模块一端接电,一段接舵机,手动模式下,舵机会跟着旋钮同步旋转,可以用来测试舵机是否健康; ![]() 二、串口调试助手 ![]() 可下载串口调试助手,用ttl转USB模块连接电脑,在特定位置进行打印输出,检查程序是否按预设运行 ———————————————— 版权声明:DDHEJKS |
STM32 GUI LTDC 最大像素时钟评估方法
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
OpenBLT移植到STM32F405开发板
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
STM32 以太网 MAC Loopback 的实现
STM32功能安全设计包,助力产品功能安全认证
基于STM32启动过程startup_xxxx.s文件经验分享
HRTIM 指南