STM32学习和实践笔记(22):PWM的介绍以及在STM32中的实现原理

 PWM是 Pulse Width Modulation 的缩写,中文意思就是脉冲宽度调制,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,其控制简单、灵活和动态响应好等优点而成为电力电子技术最广泛应用的控制方式,其应用领域包括测量,通信,功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些音频放大器,因此学习PWM具有十分重要的现实意义。其实我们也可以这样理解,PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。

如上图所示,数字信号的脉冲宽度与模似信号的大小成正比,这就实现了模拟信号对脉冲宽度的调制——所谓调制,就是随它的变化而变化的另一种说法而已。

反过来,也可以说,用数字信号,对模拟信号幅度变化实现了编码。

2.STM32F1 PWM介绍

  STM32F1除了基本定时器TIM6和TIM7,其他定时器都可以产生PWM输出。其中高级定时器 TIM1 和 TIM8 每个可以同时产生多达 7 路的 PWM 输出。而通用定时器每个也能同时产生多达 4路的 PWM 输出。所以,一个STM32芯片,就可以同时产生2*7+4*4=30路的PWM输出,这在机器人实验中很有用,因为机器人动作需要驱动很多个电机,每个电机就需要一个PWM来控制。

 PWM的输出其实就是对外输出脉宽可调(即占空比调节)的方波信号,信号频率是由自动重装寄存器 ARR 的值决定,占空比由比较寄存器 CCR 的值决定。

信号频率是由自动重装寄存器 ARR 的值决定,这个很好理解。从前面定时器就可以知道,定时器初值ARR设定后,以向上模式为例,CNT从0计数到ARR值-1时,就会产生一个溢出中断。假定每500ms产生这样一个中断,那么,这就是PWM的周期或者说频率。

这样的一个周期,是包括了PWM高电平和低电平的。那么,在这个周期里,高电平多长,低电平多长,这需要另外一个值(也就是CCR里的值)以及一个比较器来决定。

以上图为例来说明,上图中ARR的值为8,也就是整个PWM的周期就是8,从上图中可以看出,OCXREF就是输出的PWM信号,在一个周期内,其高电平的宽度,取决于CCR里的值。这就是等,只要改变CCR里的值,就可以动态地改变每个PWM周期里高电平的宽度。这样就实现了脉冲宽度调节的功能。

当CNT开始计数后,在每一个ARR的值的周期,它都不断地动态与CCR值进行比较,只要它大于CCR里的值,它就输出高电平,反之就输出低电平。

比如,在CCR为4时,CNT计数从0-3时,因为与CCR比较,发现它都小于CCR,所以,OCXREF就一直输出高电平(默认)。当CNT计数到4时,发现与其大于等于当前的CCR了,那么,OCXREF就输出高电平,同时产生一个CCXIF翻转标志。之后就维持低电平,直到CNT计数到ARR值(8),产生溢出中断。然后就重新变为默认的高电平。

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

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

相关文章

Ubuntu16.04搭建webrtc服务器

本人查阅无数资料,历时3周搭建成功 一、服务器组成 AppRTC 房间+Web服务器 https://github.com/webrtc/apprtcCollider 信令服务器,在AppRTC源码里CoTurn coturn打洞+中继服务器 Nginx 服务器,用于Web访问代理和Websocket代理。AppRTC 房间+Web服务器使用python+js语言 App…

RFID技术引领3C手机镜头模组产线智能化转型

RFID技术引领3C手机镜头模组产线智能化转型 应用背景 随着智能手机市场的快速发展与技术创新,手机镜头模组作为影像功能的核心组件,其生产精度、效率及供应链管理的重要性日益凸显。面对复杂多变的市场需求、严格的品质要求以及激烈的市场竞争&#xf…

面试集中营—ElasticSearch架构篇

一、为什么用ElasticSearch? 1、支持多种数据类型。它可以处理非结构化、数值和地理信息等多种类型的数据; 2、简单的RESTful API。ES提供了一个简单易用的RESTful API,使得它可以从任何编程语言中调用,降低了学习的曲线。 3、近实…

12G-SDI视频分配器JR104D-4K-SDI

JR104D-4K-SDI 12G-SDI分配器1分4,12G-SDI分配器1分2,12G-SDI分配器1分8,机架式12G-SDI分配器1分4,12G-SDI分配器4组1分4,12G-SDI分配器16组1分4, 广播级指标生产厂家。 一、产品介绍: JR104D-4K-SDI视频分配器,是按…

Pytest用例自定义 - 重复、并行、串行

简介:面对快速迭代和持续交付的需求,提高测试效率变得至关重要。并行测试因其显著的时间节省优势而备受青睐。然而,并非所有测试都适合并行执行。在某些情况下,串行执行是必要的,以确保测试的正确性和稳定性。本文将探…

【AI-GitHub】SceneScript 3D场景主体识别分割!让AR和人工智能设备了解物理空间的几何形状!

SceneScript是由Meta Reality Labs Research开发的一种新型3D场景重建技术。SceneScript采用语言模型来生成和表达物理空间的布局,能够通过机器学习直接推断出房间的几何形状,从而提供一种全新的环境重建和表现方式。想象一下,有这样一副时尚…

spring boot中一般如何使用线程池

在Spring Boot中,线程池作为并发编程的核心工具,对于提升应用程序性能、优化资源利用和保证系统稳定性具有重要作用。本文将详细阐述如何在Spring Boot中正确使用线程池,包括配置参数、实例化、任务提交、监控及常见问题处理等环节&#xff0…

HarmonyOS 鸿蒙下载三方依赖 ohpm环境搭建

前言 ohpm(One Hundred Percent Mermaid )是一个集成了Mermaid的命令工具,可以用于生成关系图、序列图、等各种图表。我们可以使用ohpm来生成漂亮且可读性强的图表。 本期教大家如何搭建ophm环境: 一、在DevEco Studio中&#…

比特币中用到的密码学功能【区块链学习笔记1】

想要转到web3,这次学习区块链看的课是北大肖臻老师的公开课。 比特币又称是加密货币crypto-currency,但其实是不加密的,全是公开的。比特币中用到的密码学中HASH和签名。 1. HASH 密码学中的哈希:cryptographic hash function …

【NLP练习】seq2seq

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、总结:seq2seq详解 1. seq2seq是什么 seq2seq(sequence to sequence)是一种常见的NLP模型架构,即&#xf…

c++图论基础(2)

目录 图的存储方式: 邻接矩阵: 代码实现: 邻接表: 代码实现: 邻接矩阵邻接表对比: 带权图: 邻接矩阵存储: 邻接表存储(代码实现): 图的存储方式: 邻…

【数据结构】合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 Definition for singly-linked list.struct ListNode {int val;struct ListNode *next;};typedef struct ListNode ListNode; struct ListNode* mergeTwoLists(struct Lis…

小米消金强化普惠金融举措,构建消费者反诈安全屏障

近年来,随着通信技术的飞速发展,电信网络诈骗作为一种非接触性犯罪形式,给广大消费者带来了严重的经济损失,并对金融秩序造成了极大的破坏。为了应对这一严峻挑战,重庆小米消费金融有限公司(以下简称“小米…

【网络安全】对称加密、非对称加密以及密钥分配

目录 1、对称加密 2、非对称加密 3、如何分配对称密钥? 4、如何分配非对称密钥? 1、对称加密 所谓对称加密,就是指加密密钥与解密密钥都使用相同的密钥。如下图所示,通信双方使用的就是对称加密密钥。//代表:DES和…

代码随想录算法训练营第三十七天| LeetCode738.单调递增的数字

LeetCode 738 单调递增的数字 题目链接:738. 单调递增的数字 - 力扣(LeetCode) 【解题思路】 需要采用从后往前的遍历 如果发现该数字的前一位比后一位大,那么前一位就做-1处理,后一位变为9 注意:千万不…

《DiffusionNER: Boundary Diffusion for Named Entity Recognition》

Submitted 22 May, 2023; originally announced May 2023. Comments: Accepted to ACL 2023, submission version https://github.com/tricktreat/DiffusionNER 在这里插入图片描述 问题: 命名实体识别任务中存在的噪声跨度(边界不清晰&#xff09…

人工智能如何提高公司效率的 5 种方法

人工智能是当今最热门的话题之一,但并不是每个人都了解其对商业的价值规模。由此可见,现有的AI技术可以将企业的生产力提升40%。 在机器学习的帮助下,Netflix 利用自动化个性化推荐每年赚取 10 亿美元。当公司使用人工智能时,34%…

【QA】Git的底层原理

前言 本文通过一个简单的示例,来理解Git的底层原理。 示例 1、新建本地仓库并上传第一个文件 相关步骤: 新建仓库及创建文件查看文件状态将文件添加到暂存区将文件提交到本地仓库 HMTeenLAPTOP-46U4TV6K MINGW64 /d/GSF_Data/Github/Java/Git/git-…

文件下载的N种方式

文件下载有多种方式可以实现。下面是其中几种常见的方式&#xff1a; 1.使用<a>标签的download属性 <template><a :href"fileUrl" download>点击下载文件</a> </template><script> export default {data() {return {fileUrl: h…

宝塔面板手动执行定时任务脚本的解决方案

在终端命令行执行定时任务&#xff0c;可以使用 cron 这个工具。cron 是 Unix、BSD、Linux 和类 Unix 操作系统中的工具&#xff0c;用于在固定时间、日期或间隔执行预定的命令。 为了每10分钟执行 /www/wwwroot/jwcsv.kwfw.net_20080/cron/test.sh 这个脚本&#xff0c;需要编…