嵌入式开发学习日志33——stm32之PWM舵机简单项目

通过PWM输出控制舵机不同角度的转动,这是PWM经典的应用场景,本章就用代码展开讲讲。

这个项目需要用一个要求20ms的舵机,接下来就从最开始的代码看起。

头文件写法还是和以前一样,不过这一次还要加入舵机的应用函数。

源文件部分,还是先开启需要用到的时钟,这里要用到PA1引脚,因此开启GPIOA时钟,由于之后要用到复用输出模式,所以还要开启AFIO时钟。

而GPIO初始化模块的代码还是和之前写过的一样。

至于TIM2定时器模块,在初始化时没有采用上次手动输入参数的形式,由于项目的目标明确,所以先计算出pwm的频率。

舵机的周期是20ms,那么取倒数之后就是所需pwm频率50hz,根据pwm的频率计算公式50=72MHz/(PSC+1)/(ARR+1);为计算方便的数值,PSC取71,ARR+1取20k。

解决完定时器模块的初始化后,设置PWM的工作模式,Mode这里就选择最常用到的PWM1模式;极性设置polarity设置为高电平;而至于脉冲,先设置为0,之后再对输出比较通道CH2进行初始化。

就像之前说过的,这里需要手动使能(开启)预装载寄存器,最后开启定时器。

万事俱备后,就要进行舵机的配置,而舵机旋转角度与CCR值之间的数学关系可以通过查阅资料获得,代码如下

在主函数中,直接通过按键按下的形式实现舵机角度的旋转,但是这里对底层代码进行讲述,main函数中的部分暂时不讲。

相关推荐
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码5 天前
嵌入式学习路线
学习
Lester_11015 天前
STM32霍尔传感器输入口设置为复用功能输入口时,还能用GPIO函数直接读取IO的状态吗
stm32·单片机·嵌入式硬件·电机控制
LCG元5 天前
低功耗显示方案:STM32L0驱动OLED,动态波形绘制与优化
stm32·嵌入式硬件·信息可视化
三佛科技-187366133975 天前
120W小体积碳化硅电源方案(LP8841SC极简方案12V10A/24V5A输出)
单片机·嵌入式硬件
z20348315205 天前
STM32F103系列单片机定时器介绍(二)
stm32·单片机·嵌入式硬件
毛小茛5 天前
计算机系统概论——校验码
学习
babe小鑫5 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
古译汉书5 天前
【IoT死磕系列】Day 7:只传8字节怎么控机械臂?学习工业控制 CANopen 的“对象字典”(附企业级源码)
数据结构·stm32·物联网·http