以下是有关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提供基准时钟,在STM32F1系列中,其中定时器TIM1、TIM8是挂在在APB2上的,而定时器TIM2、3、4是关在在APB1上的。所以我们需要在时钟树上调整其时钟源频率来满足PWM波形需要。

三、操作步骤

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

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

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

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

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=500Hzf:频率T:周期

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

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

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

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

  1. STM32Cube的PWM控制应用篇(二)用两个个定时器生成三个相位差120度的等效正弦波

    STM32Cube的PWM控制基础篇(一)一路PWM设置 STM32Cube的PWM控制基础篇(二)多路占空比不同的PWM STM32Cube的PWM控制基础篇(三)定时器的PWM设置详解 STM32 ...

  2. ASP.NET Google Maps Javascript API V3 实战基础篇一获取和设置事件处理程序中的属性...

    ASP.NET Google Maps Javascript API V3 实战基础篇一获取和设置事件处理程序中的属性 <%@ Page Language="C#" Auto ...

  3. 启明智显分享| ESP32学习笔记参考--PWM(脉冲宽度调制) 篇,配PWM控制 LED呼吸灯代码示例参考

    提示:启明智显专为智能产品提供一站式彩屏显示+连接+云端服务+APP软件开发.维护等解决方案,帮厂商快速实现硬件的智能化.作为启明云端旗下方案公司,我们用心整理了开发小伙伴在开发过程中可能会遇到的问题 ...

  4. [控制基础] 定时器TIM的PWM输出+用积分思想分析PWM对直流减速有刷电机的控制(基于STM32F103+CubeMX+HAL)

    目录 解决的需求 一.高级定时器TIM1/TIM8 1.时基单元 2.更新操作与更新事件 3.与其他定时器的比较 ①.与其他定时器时基单元的比较 ②.与通用定时器的比较 4.CK_INT与CK_CNT ...

  5. arduino LED灯控制基础篇

    1  控制原理 arduino uno可以通过数字引脚和模拟引脚控制一个LED灯的亮灭.首先先介绍LED灯,LED有正负极之分,只需要一个高电平便可以点亮,那么就有朋友问了,arduino的5V/3. ...

  6. pwm控制的基本原理_单片机PWM控制基本原理详解~

    PWM是Pulse Width Modulation的缩写,它的中文名字是脉冲宽度调制,一种说法是它利用微处理器的数字输出来对模拟电路进行控制的一种有效的技术,其实就是使用数字信号达到一个模拟信号的效 ...

  7. linux pwm控制蜂鸣器 滴滴_51单片机PWM直流电机PID控制转速源程序

    \ AT89C51单片机PWM直流电机转速PID控制源程序,重点介绍利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法.设计中采用了专门的芯片组成了PWM信号的发生系统并且对 ...

  8. 【QT学习笔记】#基础篇#(4)设置程序图标和标题

    一.设置图标 以下两种方式设置后,应用程序本身图标.任务栏图标.窗口左上角图标 会使用设置的同一个图标. 方式一: 在 .pro 文件添加 RC_ICONS = 图标名.ico 示例: QT += c ...

  9. 【合泰HT32F52352GPTM多路PWM控制】

    合泰HT32F52352(GPTM)多路PWM控制 关于合泰HT32F52352多路pwm的控制,困了几天,今天终于得到解决,不得不说合泰的相关资料太少了,并且很多博主分享的可能和我们的芯片型号不同差 ...

最新文章

  1. Virtex-6中的GTX模块、GTH模块
  2. 打孔怎么定位_红米K40将要发布,采用居中打孔屏,极窄边框设计
  3. java代码中添加事务_C#和JAVA中编写事务代码
  4. 正式进驻1410实验室!
  5. 机床使用教学_2020沧州cnc培训20年教学经验颁发职业
  6. mysql 取交集 php_mysql 查询结果取交集的方法
  7. 解决虚拟机安装64位系统“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的问题...
  8. Jzoj5245 Competing Souls
  9. 【lucene】lucene 分词 以及自定义分词器
  10. js正则匹配小数点后2位_正则实践与详解
  11. mysql 搜索_MySQL模糊搜索的几种姿势
  12. 【TDA4系列】硬件分析与刷写程序的几种方式
  13. v21 v8中资源找不到
  14. 计算机软件方面的基金,天天基金
  15. FTP实验、利用SMTP协议发匿名邮件
  16. 网站漏洞修复之metinfo SQL注入漏洞
  17. 合肥工业大学 OnlineJudge——1003 B-黑石部落
  18. mysql 字段 decimals_[转]分析MySQL数据类型的长度【mysql数据字段 中length和decimals的作用!熟悉mysql必看】...
  19. revit附加模块 sat_revit附加模块怎么弄?如何解决Revit附加模块加载失败问题
  20. istio系列:第六章-Telemetry遥测配置

热门文章

  1. 联想笔记本出厂预装Windows 8系统机型改装Windows 7系统的操作步骤及常见问题(转自联想官网)
  2. 坚果云+svn实现异地非局域网个人代码版本管理
  3. 解决iconfont下载的图标显示的是小方框
  4. 团体程序设计天梯赛-练习集 L1-039 古风排版
  5. openfire运行环境部署+jwchat网页端通信聊天+插件的基础知识+webchat环境配置和下载地址
  6. 常用端口号/etc/services
  7. 深圳市在职人才引进经验篇2021
  8. 美标C95500镍铝青铜管C95500铝青铜应用领域
  9. 3D Studio 文件格式 (3ds)
  10. hnuoj10016