第20讲 动画讲解轻松学会STM32的PWM

news2024/11/15 6:52:24

来源:【STM32】动画讲解轻松学会STM32的PWM_哔哩哔哩_bilibili

基本概念

周期/频率

计算公式:PWM周期=1个高电平用时+1个低电平用时

                  PWM的频率=1/周期

如图所示此时周期为1ms,即1s内存在1000组这样的高低电平,PWM的频率为1000hz。


占空比

计算公式:PWM占空比=高电平用时/PWM周期

即高电平在一个PWM周期内占用的时间比例就叫做占空比。

如图所示1个周期为1ms的PWM方波中高电平占用0.8ms,那么这个PWM方波的占空比就是80%。

用途

PWM设计初衷就是利用数字信号尽可能地拟合模拟信号,手段就是调节PWM的占空比。

如图所示,高电平为3.3V,低电平为0V,那么设置占空比为50%就可以从宏观角度实现输出直流信号幅值为1.65V。

那么同理,占空比为10%时,信号幅值为0.33V。

最关键的是PWM可以实现动态变化,比如如图所示的用PWM拟合sin函数(原理是傅里叶变换,感兴趣的同学可以去看正点原子的手册)。合理调节占空比和频率后输出的PWM信号,就可以控制电机的转速、灯泡的明暗程度、蜂鸣器的音调、舵机的角度等外部设备参数。

TIM实现PWM的输出的原理

定时器的输出比较模式可以输出我们想要的脉冲宽度。在输出比较模式下,我们首先要在比较寄存器中写入一个数值。之后定时器会一直比较计数器值与比较寄存器数值的大小关系,根据这个大小关系来决定输出有效电平还是无效电平。

输入捕获的几种模式:

①冻结模式:输出通道GPIO口不理会比较结果,依旧维持旧的输出状态

②强制有效\强制无效:强制输出通道GPIO口输出有效\无效电平

③匹配有效\匹配无效:比较计数器值与比较寄存器数值相等时输出有效电平\无效电平(如果相等前就是有效\无效电平则维持)

④匹配翻转:二值完全相等时翻转当前输出的电平,这种模式可以输出占空比为50%的方波

④PWM模式:第一种比较计数器值<比较寄存器数值,输出有效电平,反之输出无效电平;第二种比较计数器值>比较寄存器数值,输出有效电平,反之输出无效电平。

同时注意存在向上计数、向下计数以及中央对其模式,下图为三者的矩阵形式概述图:

但一般我们也只用向上计数。

实际操作

 首先可以看看拙作:利用STM32的定时器输出PWM方波_stm32f030 定时器方波-CSDN博客

下面介绍一下kk讲的:

①选中可以输出PWM的定时器Channel

②在Timers的mode面板上,设置Clock Source为Interal Clock;输出通道选择PWM输出模式

③在Timers的Configuration面板上设置参数

1.PWM周期=(Prescaler+1)(Counter Period+1)/挂载定时器的时钟总线频率,通过这个公式填写预分频系数和时钟周期

2.计数模式选择为向上计数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2083448.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

selenium启动总报错 WebDriverManager总是异常

我的环境用这个自动管理驱动的工具 WebDriverManager 总是报错 尝试过很多方法都没有&#xff0c;只好手动指定浏览器的位置 System.setProperty("webdriver.chrome.driver", "C:\\Users\\27224\\.cache\\selenium\\chromedriver\\win64\\128.0.6613.84\\chrome…

030集—CAD 实现钟表时针动态转动效果——vba代码实现

cad图中显示动图案例如下&#xff1a; 部分代码如下&#xff1a; &#xff08;按下Esc键可退出&#xff09; #If VBA7 Then 64位系统声明Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) #Else 32位系统声明Declare Sub Sleep Lib "k…

95.SAP MII功能详解(08)Workbench-Transaction介绍

目录 1.Transaction 2.Properties of transaction 1.Transaction You use transactions to access data from multiple sources and execute processes, which are triggered synchronously or asynchronously.您可以使用事务从多个源访问数据并执行同步或异步触发的流程。…

期权新手交易必看!50ETF期权和沪深300ETF期权分享

今天带你了解期权新手交易必看&#xff01;50ETF期权和沪深300ETF期权分享。上证 50ETF期权和沪深 300ETF期权是国内ETF期权最早上市的两个品种&#xff0c;也是交易量及活跃度最高的两个品种。 50ETF期权 上证50ETF期权就是在你支付一定额度的权利金后&#xff0c;获得了在未…

构建一个资源控制面板:模拟 CPU 和内存负载

构建一个资源控制面板&#xff1a;模拟 CPU 和内存负载 每个人都会有一段异常艰难的时光。生活的压力&#xff0c;工作的失意&#xff0c;学业的压力&#xff0c;爱的惶惶不可终日&#xff0c;挺过来的,人生就会豁然开朗&#xff0c;挺不过来的、时间也会教你&#xff0c;怎么与…

记一次事务里发普通消息的线上问题排查过程

1 结论 结论先行&#xff1a;事务MQ的使用场景&#xff0c;使用方式一定得正确&#xff0c;稍有不慎&#xff0c;可能就会带来数据不一致问题。 2 问题背景及现象 3 排查过程 3.1 初次分析 发现问题&#xff0c;及时修复&#xff0c;加完锁上线&#xff0c;以为问题修复了&a…

const、inline、nullptr的使用

目录 1.const引用 1.1权限的放大 1.2权限的缩小 2.inline 3.nullptr 1.const引用 可以引用一个const对象&#xff0c;但是必须用const引用。const引用也可以引用普通对象&#xff0c;因为对象的访 问权限在引用过程中可以缩小&#xff0c;但是不能放大。 不需要注意的是…

C#从入门到精通(20)—C#目录类Directory用法总结

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff01;人工智能学习网站 前言&#xff1a; 大家好&#xff0c;我是上位机马工&#xff0c;硕士毕业4年年入40万&#xff0c;目前在一家自动化公司担任…

【硬核】开源的高性能轻量级ORM框架

简介 easy-orm是一款简洁、轻量高效的数据库对象关系映射框架&#xff0c;它的代码编写规范基于SQL语义&#xff0c;学习成本低&#xff0c;可以快速掌握。 下图是与业界mybatis-plus框架相比。 功能mybatis-pluseasy-orm单表CRUD√√多表CRUD√子查询x√多数据源√预编译√…

一文带你深度了解FreeRTOS信号量——二值信号量

本篇文章深度讲述FreeRTOS信号量——二值信号量的知识&#xff0c;希望我的分享对你有所帮助&#xff01; 关于FreeRTOS信号量的相关介入&#xff0c;大家可以参考一下这篇文章&#xff1a; 一文带你初探FreeRTOS信号量_freertos 二进制信号量-CSDN博客 目录 一、二值信号量简…

25届最近5年自动化考研院校分析

哈尔滨工程大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近5年考研分数情况 四、近5年招生录取情况 五、最新一年分数段图表 六、初试大纲复试大纲 七、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、考试科目介绍 2、指定…

顺序结构就是“千里走单骑”

顺序结构&#xff0c;就是把工作分成若干个步骤&#xff0c;然后让计算机按步骤依次执行。 对于代码而言&#xff0c;顺序结构就是从上到下依次执行每一条语句。 #include<stdio.h>int main(){//The steps of putting an elephant into the fridge.printf("First,…

【Python知识宝库】掌握列表与元组,轻松处理数据集合

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引言 在Python编程中&#xff0c;列表&#xff08;List&#xff09;和元组&#xff08;Tuple&#xff09;是两种非常基础且强大…

Unity实战案例 2D小游戏HappyGlass(游戏管理类脚本)

本案例素材和教程都来自Siki学院&#xff0c;十分感谢教程中的老师 本文仅作学习笔记分享交流&#xff0c;不作任何商业用途 基础效果 游戏管理脚本 using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; using Uni…

FineBI修改地图配置

前言 在使用FineBI绘制地图时&#xff0c;有时候我们可能发现FineBI中的默认地图模型不是最新的&#xff0c;导致某些地区的区域地图与现实不一致&#xff0c;比如说FineBI的默认地图中深圳地图没有大鹏新区&#xff0c;并且将现在大鹏新区的地方标记为了龙华区&#xff0c;为…

Leetcode19删除链表的倒数第K个节点(java实现)

今天分享的题目如下&#xff1a; 说一下我们的解题思路&#xff1a;我们要想删除第k个节点&#xff0c;那么指针必须落在k-1节点上&#xff0c;比如我们想要操作题目中的节点4&#xff0c;那么指针必须落在节点3&#xff0c;然后让节点3.next 3.next.next即可。 所以明白了这个…

【精选】计算机毕业设计之:基于springboot汽车租赁系统

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

推荐3款免费的数据恢复软件,从此再也不怕数据丢失

Handy Recovery Handy Recovery是一款功能强大且易于使用的数据恢复软件&#xff0c;能够帮助用户恢复因误删、病毒攻击、系统崩溃等原因丢失的数据。该软件支持多种文件系统&#xff0c;包括FAT12/16/32、NTFS、NTFS5以及HFS等。它不仅可以从硬盘、闪存驱动器、U盘等设备中恢复…

Linux学习(13)计算机网络基础概论

本节学习内容 1.网络的基本概念&#xff08;网络、互联网、IP地址、MAC地址、常用网络协议&#xff09; 2.网络分层模型&#xff08;OS的7层模型与tcp/ip协议族体系4层结构、数据链路层、网络层、传输层、应用层&#xff09; 3.网络应用程序通信流程 一、网络的基本概念 1…

python可视化-直方图

1、加载数据 import pandas as pd from sklearn.datasets import load_iris import warnings# 禁用所有警告信息 warnings.filterwarnings(ignore)# 加载数据 iris load_iris() iris iris.keys() df pd.DataFrame(iris.data, columnsiris.feature_names) df[target] iris.t…