STM32Cube的PWM控制基础篇(一)一路PWM设置

2023-05-16

以下是有关STM32cube的PWM的花式操作,大佬们在看下面链接之前建议先看完本博客,个人觉得写的比较详细,欢迎大佬之指正!
STM32Cube的PWM控制基础篇(二)多路占空比不同的PWM
STM32Cube的PWM控制基础篇(三)定时器的PWM设置详解
STM32Cube的PWM控制应用篇(一)用一个定时器改变另一个定时器下的三个PWM波占空比
STM32Cube的PWM控制应用篇(二)用两个个定时器生成三个相位差120度的等效正弦波

一、什么是PWM

PWM是脉冲宽度调制,PWM我个人理解为一个方波信号,其参数有两个
(1)占空比:脉冲的有效电平占整个周期的百分比。
(2)频率:整个PWM波的频率,1/一个脉冲周期
由上可知,一个PWM波形我们可以通过调整其频率和占空比来达到我们需要的波形或是等效电压。(3.3V的电压如果PWM调制的等效电压为3.3占空比【60%占空比电压等效为3.3V60%=1.98V】)具体内容如图所示:
PWM脉冲宽度等效电压

二、PWM的时钟来源

由于PWM是一个有频率有脉冲宽度的方波,所以一定存在一个标准的时钟信号为PWM提供基准时钟,在STM32F1系列中,其中定时器TIM1、TIM8是挂在在APB2上的,而定时器TIM2、3、4是关在在APB1上的。所以我们需要在时钟树上调整其时钟源频率来满足PWM波形需要。

三、操作步骤

要求:构建一个500Hz,脉冲宽度为70%的PWM波

1、根据自己的stm32的芯片型号来选择,我这里是STM32F103RBTx

芯片选择

2、选好芯片之后照旧设置RCC为外部时钟

设置RCC

3、设置定时器TIM1为PWM模式,并设置时钟源位内部时钟,如图:

设置TIM1

4、配置时钟树,由于本次使用TIM1,所以主要配置APB2

配置时钟树
时钟源选择外部时钟,外部时钟为8MHz倍频9倍后变为72MHz后导入系统时钟,通过AHB分频后得到硬件时钟HCLK后分配给各个部件,图中标识了时钟频率最大值,根据后边的分频来保证各个部件不超过最大频率(按照需求配置,不要小于PWM的频率即可。PS:频率越低越节能,越高性能越好)

5、定时器设置(设置PWM频率)

点击TIM1进入配置界面
在这里插入图片描述
我现在需要使PWM频率达到500Hz,此时时钟树APB2设置为72MHz,所以存在以下计算公式:

						目的定时器频率=时钟源/(预分频系数*自动重载值)

						时钟源:72MHz
						目的定时器频率:500Hz

所以我们可以自己设置自动重载值和预分频系数使等式成立:

预分频系数:144
自动重载值:1000

由于计数是从0开始,所以需要在设置量上减1得到以下设置图
在这里插入图片描述
定时器设置完成后下拉定时器菜单可见PWM设置部分
在这里插入图片描述
PWM Mode为设置PWM输出模式

	模式1:        a、当定时器计数为向上计数,则计数小于占空比的部分为有效电平
			  	   b、当定时器计数为向下计数,则计数大于占空比的部分为有效电平
			 计数方式在下图第二行

在这里插入图片描述

模式2:			a、当定时器计数为向上计数,则计数大于占空比的部分为有效电平
				 b、当定时器计数为向下计数,则计数小于占空比的部分为有效电平

总结:PWM mode 1和PWM mode 2互补

到这步设置完成,点击菜单栏
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
按照以上设置生成项目(会玩的根据自己的习惯搞)

6、代码部分(设置PWM占空比)

在生成的项目的main.c部分添加如下代码

  /* USER CODE BEGIN 2 */
			HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);
			__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, 700);
  /* USER CODE END 2 */

由于我们只设置了一路PWM,就启动一路就行,第一句是启动PWM,第二句是设置PWM的占空比,两个函数的第一参数都是定时器,第二参数为频道,设置占空比的第三参数为计数值,存在以下公式:

				占空比=(计数值/自动重载值)*100%

自动重载值:定时器的自动重载值

到此为止,所有设置工作结束,编译,下载到板子上。

7、测试部分

正所谓所有不给实验结果的博客都是流氓博客,所以在此花费几百大洋买了个逻辑分析仪来给大家展示一下测试结果

由于设置定时器的PWM后自动分配了PWM的输出引脚,我这里为PA8,所以我直接将逻辑分析仪频道0接到STM32的PA8引脚上,逻辑分析仪底线接地(PS:懒得接地的小伙子不怕分析仪烧了就不用接地了,哈哈哈哈哈嗝!!!!!)

我将逻辑分析仪频道0设置了对PWM的分析,方便大家查看(逻辑分析仪各人用的不一样,这里设置就不上图了,直接放结果)

以下是频率为500Hz,占空比为70%的PWM波:
在这里插入图片描述
由图可知,一个周期为2ms,所以

							f=1/T=1/0.002s=500Hz
		    f:频率
			T:周期

由图可知,占空比为70%达到了一开始的实验要求。

										Good Game!!!!!!

					接下来会推出一系列的关于PWM控制电机的分享,有需要的猿们敬请关注!!!!!

以上内容欢迎大家转载引用,标明出处即可!!!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32Cube的PWM控制基础篇(一)一路PWM设置 的相关文章

  • STM32Cube IDE与MX区别?STM32CubeMX介绍、下载与安装

    一 STM32Cube IDE与MX区别 xff1f cubeIDE 61 cubeMX 43 Keil 如您用 keil cubeIDE 61 cubeMX 43 IAR 如您用 IAR cubeIDE 61 cubeMX 43 STUD
  • pixhawk: px4代码初学分析:追溯电机控制--pwm输出

    追溯电机控制 pwm输出 正常工作状态下pwm输出过程简述 xff1a 其他状态下pwm输出 xff1a 正常工作状态下pwm输出过程简述 xff1a 姿态解算部分得出姿态控制量通过px4io cpp把姿态控制量发送给IOIO串口读取姿态控
  • 首个单芯片超小封装I2C转PWM解决方案

    ZW10I8X系列 高性能工业级16位高精度I2C转PWM接口SOC芯片 接口标准 符合飞利浦的I2C标准规范 xff0c 目前支持的速度为小于100kbit 建议使用50k 1个使能脚 xff08 ZW10I8xE后缀带E的 xff09
  • PWM输出讲解

    一 PWM基础知识 1 PWM的定义 PWM xff0c 是脉冲宽度调制 缩写 xff0c 它是通过对一系列脉冲的宽度进行调制 xff0c 等效出所需要的波形 xff08 包含形状以及幅值 xff09 xff0c 对模拟信号电平进行数字编码
  • 【STM32CubeMX】使用STM32F103C8T6输出PWM波形实现呼吸灯

    STM32CubeMX 使用STM32F103C8T6输出PWM波形实现呼吸灯 一 关于PWM二 Cube MX创建工程三 修改代码四 效果展示五 总结六 参考与代码下载 一 关于PWM 1 关于PWM 含义 PWM xff08 Pulse
  • stm32使用PWM播放音频

    我之前研究过STM32的DAC播放wav音频文件 xff0c 今天突然发现使用PWM也可以实现WAV文件的播放 xff0c 让在大开了眼界 xff0c 转载如下 xff1a stm32使用PWM播放音频 pwm stm32 dac pcm
  • PWM脉宽调制 与PPM、SBUS、DSM2 协议 详细介绍

    原文地址 xff1a http www 5imx com portal php mod 61 view amp aid 61 1351 相信这个问题是每个模友在新入航模坑时都会遇到的问题 xff0c 也仍然在困扰着不少新手 这里简单对比解释
  • stm32通用定时器输出PWM控制舵机

    stm32的通用定时器有TIM2 TIM3 TIM4 TIM5 xff0c 每个定时器都有独立的四个通道可以作为 xff1a 输入捕获 输出比较 PWM输出 单脉冲模式输出等 stm32除了基本定时器 xff0c 其他定时器都能输出PWM
  • stm32高级定时器实现pwm互补输出

    简介 stm32设备一般都有很多类型的定时器 xff0c 常见的有systick timer 基本定时器 通用定时器 高级定时器 看门狗定时器 RTC等等 xff0c 本文简单介绍高级定时器是如何实现pwm互补输出 详细 我这里使用的dev
  • STM32F103C8T6 PWM驱动舵机(SG90)

    小知识 xff1a 同一个定时器 xff0c 不同通道输出不同输出PWM的特点 对于同一个定时器的不同通道输出PWM xff0c 因为它们是共用一个计数器的 xff0c 所以频率必须一样 xff0c 而占空比由各自的CCR决定 xff0c
  • 怎么把PWM信号转为模拟量

    有一个测量位置变化的位置传感器 xff0c 用万用表电压档测量传感器的输出信号 xff0c 结果显示的是模拟量信号 xff0c 即位置和信号输出大小呈线性关系 但是 xff0c 用示波器 xff08 Picoscope 4227 xff09
  • 基于HAL库的stm32f103c8t6的快速开发笔记(简易版)—— 5、STM32的PWM输出(附舵机控制)

    1 概念了解 首先了解到 PWM生成是在通用定时器的基础上配置的 每个通用定时器都有多路通道输出PWM信号 这里以TIM4 定时器4 为例 在图形配置面板找到TIM4的通道一作为PWM输出管脚 其管脚为PB6 打开左侧定时器配置面板 可以看
  • 电机控制基础——定时器基础知识与PWM输出原理

    单片机开发中 电机的控制与定时器有着密不可分的关系 无论是直流电机 步进电机还是舵机 都会用到定时器 比如最常用的有刷直流电机 会使用定时器产生PWM波来调节转速 通过定时器的正交编码器接口来测量转速等 本篇先介绍定时器的基础知识 然后对照
  • 魔方机器人之下位机编程---------舵机控制

    1 春天180 舵机 SR 403P 信号线和控制线颜色对应关系 两黑一白 白色信号线 中间电源 另一黑色电源 以上MC9S12XS128单片机通道三产生的周期为20ms 高电平为1 5ms的舵机控制信号 void PWM Init voi
  • STM32 基础系列教程 47 - MD5

    前言 MD5消息摘要算法 英语 MD5 Message Digest Algorithm 一种被广泛使用的密码散列函数 可以产生出一个128位 16字节 的散列值 hash value 用于确保信息传输完整一致 MD5由美国密码学家罗纳德
  • STM32 PWM基本知识及配置过程

    STM32 PWM基本知识及配置过程 将通用定时器分为四个部分 1 选择时钟 2 时基电路 3 输入捕获 4 输出比较 本节定时器PWM输出主要涉及到定时器框图右下方部分 即输出比较部分 和上一讲相同 时基时钟来源于内部默认时钟 对此有疑问
  • X2000 Linux PWM

    一 硬件设计 PC04 PWM4 二 通过shell开启PWM 配置参数 cmd pwm config pc04 freq 1000 max level 100 active level 1 accuracy priority freq 启
  • STM32Cube学习(2)——定时器中断

    0 引言 单片机 STM32F407ZGT6 仿真器 ST Link V2 开发环境 STM32CubeIDE 1 10 1 功能说明 采用定时器中断的方式 实现LED按照定时器频率闪烁 前情提要 STM32Cube学习 1 点灯 配置 参
  • 如果我尝试打开 PWM 引脚,Windows 10 Iot Core 应用程序会崩溃

    我想为我的蜂鸣器打开一个 PWM 引脚 但如果我尝试打电话给pwmController OpenPin 6 方法 应用程序崩溃并显示System Runtime InteropServices SEHException 我已经仔细检查过示例
  • PWM DMA 到整个 GPIO

    我有一个 STM32F4 我想对一个已与掩码进行 或 运算的 GPIO 端口进行 PWM 处理 所以 也许我们想要 PWM0b00100010一段时间为 200khz 但随后 10khz 后 我们现在想要 PWM0b00010001 然后

随机推荐

  • Hibernate根据实体类自动生成表的方法

    文章目录 第一种方法第二种方法参考 第一种方法 这种方法需要配置 hibernate cfg xml 的属性 hibernate hbm2ddl auto xff0c 该属性值的具体说明如下 xff1a 值说明update实体对应的表如果不
  • 微信账户如何解除对第三方应用的授权

    参考文章 xff1a https baijiahao baidu com s id 61 1754354599985802723 amp wfr 61 spider amp for 61 pc amp searchword 61 E5 B0
  • 进程间通信

    现在的嵌入式系统往往有并发的特征 xff0c 就像多任务操作系统的多进程一样 xff0c 其内核会提供几种机制处理任务间通信 xff0c 本文对四种常见通信模式进行了分析 xff0c 并对其各自的优劣作较细致的比较 目前 xff0c 越来越
  • HTTP请求返回状态码的不同含义

    用户通过 HTTP 访问一台正在运行Internet信息服务的服务器上的内容时 xff0c 会返回一个表示该请求的状态的数字代码 状态代码可以指明具体请求是否已成功 xff0c 还可以揭示请求失败的确切原因 1 信息提示 这些状态代码表示临
  • 异常检测及其分布集成

    异常检测算法种类繁多 xff0c 包括聚类 xff0c 树 xff0c 统计分布 xff0c 机器学习 xff0c 深度学习等多种形式 xff0c 下面对一些常见问题进行了自己的总结 xff1a 1 如何选型 xff1f 主要看算法原理和数
  • 关于FreeRTOS 任务运行中卡死在临界区vPortExitCritical()

    FreeRTOS创建任务正常运行 xff0c 偶尔出现任务卡死状态 xff0c 通过在线调试 xff0c 程序卡在vPortExitCritical 函数中 xff0c 在IAR Call Stack中观察到各任务都可能回调该接口 span
  • Ardupilot添加自定义日志(AP_LOG)

    1 在libraries AP Logger LogStructure h中添加自定义的结构体 span class token keyword struct span span class token class name PACKED
  • Ardupilot 编译Bootloader

    1 清理之前的编译中间文件 xff0c 一定要清理一下 xff0c 能避免很多奇怪的问题 span class token punctuation span span class token operator span waf distcl
  • 基于STM32CUBE的LWIP+FREERTOS+Socket构成的TCP服务器

    本实验基于STM32F767制作 一 实验目的 本实验主要目的是通过Socket网络编程方法完成通过以太网控制两个LED的亮灭的 xff0c 同理可用到继电器上控制其它高电压设备 二 实验步骤 1 首先先生成一个带有LWIP和FreeRTO
  • PX4 ---- Mixer

    文章目录 Mixer 混合控制 作用输入输出装载混控文件MAVROS代码解析总结示例MAINAUX Mixer 混合控制 作用 经过位置控制和姿态控制后 xff0c 控制量通过 actuator controls发布 xff0c 其中 co
  • PX4 ---- Indoor Flight

    文章目录 室内飞行ROS amp PX4Pose Data 飞机配置MAVROS 基于工训赛 VIO 飞行总结 室内飞行 ROS amp PX4 Pose Data 飞机配置 VIO 参考此处 xff0c 采用 T265 配置 相机与飞控机
  • PX4 -- EKF2

    文章目录 EKF2参数高度估计Range Finder滤波 单变量更新单变量更新对多变量的影响 EKF2 参数 EKF2 中有一类 GATE 参数 当测量值在 VAR GATE 范围内才会更新值 高度估计 四种高度控制方法 xff1a 气压
  • opencv4以上版本报错:CV_LOAD_IMAGE_COLOR和CV_BGR2HSV和CV_CAP_PROP_FRAME_WIDTH

    报错关于 xff1a CV LOAD IMAGE COLOR xff0c 加入头文件 span class token preprocessor property include span span class token string 3
  • 【原神】各角色Pixiv涩图统计(一). 最多的是谁? R18涩图谁最多?

    统计的结果请见第一篇文章 代码已经开源至GitHub 本文下面所有的爬虫项目都有详细的配套教程以及源码 xff0c 都已经打包好上传到百度云了 xff0c 链接在文章结尾处 xff01 扫码此处领取大家自行获取即可 讲真 这个应该是我做过的
  • 如何从源码编译SITL

    从源码编译SITL Windows 本作品采用知识共享署名 相同方式共享 3 0 未本地化版本许可协议进行许可 SITL简介和适用情况 SITL 61 Software in the loop xff0c 是著名无人机开源社区ArduPil
  • 使用从源码编译的SITL测试dronekit代码

    使用从源码编译的SITL测试DroneKit代码 本作品采用知识共享署名 相同方式共享 3 0 未本地化版本许可协议进行许可 DroneKit和SITL简述 DroneKit是一款Python语言的无人机开发库 xff0c 可以对使用MAV
  • Keil一进入调试器就退出的解决方法

    Keil一进入调试器就退出的解决方法 本作品采用知识共享署名 相同方式共享 3 0 未本地化版本许可协议进行许可 问题描述 在使用Keil与TI公司的Tiva TM4C123开发板进行开发时 xff0c 偶尔会出现一进入在线调试器 xff0
  • 在ArduPilot旋翼机上安装PX4Flow光流传感器

    在ArduPilot旋翼机上安装PX4Flow光流传感器 本作品采用知识共享署名 相同方式共享 3 0 未本地化版本许可协议进行许可 预先要求 在安装和调试光流传感器之前 xff0c 请先保证 xff1a 旋翼机已经安装 调试完毕 xff0
  • 教程:使用树莓派连接Pixhawk飞控

    教程 xff1a 使用树莓派连接Pixhawk飞控 树莓派可以与Pixhawk飞控相连 xff0c 读取飞控中的状态信息 xff0c 同时对飞控发送指令 树莓派作为一个更高性能的计算平台 xff0c 可以运行图像识别 机器学习 实时路径规划
  • STM32Cube的PWM控制基础篇(一)一路PWM设置

    以下是有关STM32cube的PWM的花式操作 xff0c 大佬们在看下面链接之前建议先看完本博客 xff0c 个人觉得写的比较详细 xff0c 欢迎大佬之指正 xff01 STM32Cube的PWM控制基础篇 xff08 二 xff09