STM32CUBEMX配置PWM,控制舵机

舵机

简介

舵机(Servo),由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统。其控制方式为PWM控制,通过调节控制信号的占空比来实现舵机转动指定角度。驱动舵机的PWM信号周期需要为20ms(50HZ),而控制脉宽为0.5~2.5ms。
黄色为信号线,红色是5V电源线,褐色(或黑色)是GND。

舵机控制

PWM

pwm中文名叫脉冲宽度调制,
pwm的频率:(Hz)
是指1秒钟内信号从高电平到低电平再回到高电平的次数(一个周期);
也就是说一秒钟PWM有多少个周期
pwm的周期:(s)
T=1/f
周期=1/频率
占空比:
是一个脉冲周期内,高电平的时间与整个周期时间的比例
单位: % (0%-100%)

CubeMX配置

基础配置,选择高速外部时钟,配置时钟树(我这里芯片为F103ZET6,最高频率是72MHz)。
配置定时器TIME(PWM模式):
舵机的信号控制周期(T)为20ms,
T= 1 / (系统时钟频率 / Prescaler(分频系数)) * CounterPeriod(计数周期,计数次数) ;
T=1 / (72MHz / (719 +1) ) * (1999+1) = 20ms;

设置初始脉冲时间为0.5ms,不旋转。

可以看到PWM的通道1和2分别是通过PA0和PA1输出的。

代码

初始化PWM。
新建两个文件,一个 .c和一个 .h文件(名字自己命名),我这里是pwm.c和pwm.h;
pwm.c代码:

#include "pwm.h"void SG90_Rotate(uint16_t ch,uint16_t Degrees)
{switch(ch){case 1:__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,Degrees);   //一个周期内(20ms)有0.5ms高电平HAL_Delay(1000); break;case 2:__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_2,Degrees);   //一个周期内(20ms)有0.5ms高电平HAL_Delay(1000); break;default:break;}
}

pwm.h代码:

#ifndef __PWM_H
#define __PWM_H#include "main.h"
#include "tim.h"
#include "gpio.h"#define Degrees_0    50  //原点位置
#define Degrees_45  100 //45度位置
#define Degrees_90   150 //90度位置
#define Degrees_135  200 //135度位置
#define Degrees_180  250 //180度位置void SG90_Rotate(uint16_t ch,uint16_t Degrees);#endif

主函数里的代码,main.c
好了,以上就是我本次分享的STM32通过PWM进行控制舵机旋转。

STM32CubeMX配置PWM驱动舵机相关推荐

  1. P16[6-4]:PWM驱动舵机(内含:1.接线原理图/实物图+2.代码部分+3.补充知识部分)

    1.接线原理图: 注:红线接5V,不是3.3V(电压小,带不动) 实物图: PWM驱动舵机:按下按键,舵机输出轴角度变化,OLED显示该角度. 2.代码部分如下: 主函数代码部分:

  2. 1:STM32CubeMX配置STM32F103C8T6驱动-下载软件配置RCC,CAN1,USART1

    1:下载软件 点击 这里立即下载,共454M. 2:通过STM32CubeMX配置USART1,CAN1 1:创建工程 创建文件夹存放工程 添加工程名称及路径: 为每个驱动单独创建.c和.h文件. 2 ...

  3. stm32cubemx配置pwm

    您可以参考STM32CubeMX文档中的以下步骤来配置PWM: 打开STM32CubeMX,然后选择您的芯片. 找到PWM功能,并将其拖放到您的芯片上. 选择PWM输出模式,并设置PWM参数. 生成代 ...

  4. 2:STM32CubeMX配置STM32F103C8T6驱动-TIM1配置

    1:STM32CubeMX配置 1:确定时钟 2:设置1ms触发一次,72M/72/1000= 1000/s 定时器触发中断: 2:代码配置 在main.c中 /* USER CODE BEGIN 2 ...

  5. 利用定时器的输出比较功能产生PWM驱动舵机

    一.定时器基本原理 首先我们来看一下ST官方给出的关于定时器的相关介绍:(以STM32F103C8T6为例) STM32F103C8T6 含有 4 个 16 位定时器,分别是一个高级定时器 TIM1 ...

  6. 2:STM32CubeMX配置STM32F103C8T6驱动-SPI驱动

    STM32CubeMX下载地址: 下载界面 1:时钟 CS 2:模块 3:代码配置 u8 SPI_WriteByte(u8 Byte) {u8 rxdata = 1;HAL_GPIO_WritePin ...

  7. 树莓派使用PCA9685扩展(一)之PWM驱动舵机入坑指南

    从床底下拖出这个老版的树莓派B+,仅支持1路PWM,正好最近有空,就研究下之前买的PWM扩展板,这次使用bcm2835-1.71的I2C和PCA9685通讯(之前的MPU6500则使用SPI通讯). ...

  8. 3:STM32CubeMX配置STM32F103C8T6驱动-RTC驱动

    时钟配置 配置RTC 代码配置 Rte_Timer.h typedef struct {uint8 WeekDay; /*!< Specifies the RTC Date WeekDay (n ...

  9. 【STM32】实战2—用STM32产生PWM信号驱动舵机MG996R(一)

    目录 0 参考资料出处 参考博客 1 实验预期效果 2 硬件学习 2.1 舵机MG996R 3 STM32CubeMX的相关配置与接线 3.1 配置定时器TIM3 3.2 stm32原理图 3.3 舵 ...

最新文章

  1. tensorflow中的命令行参数介绍
  2. FPGA之道(31)VHDL编写注意事项
  3. ListView position
  4. 2022-01-24
  5. 【知识星球】剪枝量化初完结,蒸馏学习又上线
  6. boost::python::detail::result相关的测试程序
  7. new Random().Next(1, 100); 多线程同时执行结果很高概率相同,
  8. percona-toolkit 之 【pt-table-checksum】、【pt-table-sync】说明
  9. 后台开发常用mysql语句_v1.0
  10. Haproxy 管控台介绍
  11. 火热的数据中台对企业的价值是什么?
  12. oracle的exp程序,数据库expimp迁移的整个过程,及注意事项
  13. 全国大学生数学竞赛学习笔记
  14. 中国重型包装行业竞争趋势与发展规模分析报告2022-2028年版
  15. 天龙八部手游服务器维护公告,-天龙八部手游-详情页-官方网站-天龙八部官方唯一正版3DMMORPG武侠手游...
  16. 相差天数时分秒_PHP 小方法之 计算两个时间戳之间相差的日时分秒
  17. 2.4.U-Boot配置和编译过程详解-U-Boot和系统移植第4部分视频课程笔记
  18. photoshop颈纹去除
  19. (区块链溯源)基于Hyperledger Fabric 的农产品区块链溯源方法
  20. lstm需要优化的参数_1-基于LSTM-GA 的股票价格涨跌预测模型

热门文章

  1. 阿里云Dataworks SQL速查表
  2. matlab画图程序整理
  3. video、webgl canvas推拉流及多媒体流协议
  4. 多臂高分子PEG试剂:4Arm PEG L-Lysine,四臂PEG L赖氨酸,4臂聚乙二醇衍生物
  5. YTU ---1402-Greedy Gift Givers 贪婪的送礼者
  6. P1605迷宫——题解
  7. 计算机里面如何更改处理器,电脑一键修改任意CPU型号方法 装X新技能!
  8. win10常用的一些的快捷键
  9. 关于macOS窗口的操作方法及快捷键
  10. 【芯片前端】第一次看DC综合报告时看些什么内容