历史上的今天
返回首页

历史上的今天

今天是:2025年03月06日(星期四)

正在发生

2019年03月06日 | STM32上的PWM

2019-03-06 来源:eefocus

        在昨天的实验室嵌入式组内分享会上我讲解了PWM、外部中断以及定时器的一些知识,在整理知识点以及制作PPT的过程中也对自己的知识进行了一个总结,所以打算写三篇博客来记录这三个方面的知识点,就以我最近使用的STM32作为平台来记录,其实这三个点是单片机可以说最为基础以及通用的点,任何一个MCU都会有,所以说总结一下还是很有必要的。


        首先就是PWM。


        在昨天的分享会上,我以如何调节灯光的亮暗作为引入来讲解PWM,最容易想到的方法就是加一个可调电阻,就像老式的台灯一样,有一个旋钮,通过调节接入电路电阻的阻值来分压或者分流,降低或者调高灯的亮度。还有一个方法就是调节电压,使工作电压低于额定电压就会使灯的亮度降低,而达到或者超过一点额定电压(超过太多肯定会烧了LED)也可以让灯的亮度提高。最后,我们可以用PWM的方式来调节灯的亮度,使小灯以较高频率的闪烁,通过控制高电平和低电平的时间,来控制灯的亮度。


一、原理介绍


        什么是PWM?   


           脉冲宽度调制(Pulse Width Modulation,PWM)简称脉宽调制


        是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术


        简而言之,PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。


      什么是占空比?


        占空比就是高电平所占整个周期的时间,如下图所示:


     

        第一个PWM波,周期为10ms,高电平的时间为4ms,所以占空比为40%,同理第二个PWM波为60%,第三个为80%。


        调节占空比相当于实际上在调节有效值,如下图不同占空比的PWM的有效值是不同的。

        什么是PWM的频率?


        PWM的频率的整个周期的倒数,所以说上图PWM的周期为1/0.01,也就是100HZ。改变PWM的频率是通过改变整个的周期实现的。


        所以通过改变高低电平总共的时间、改变高电平占总周期的比例就可以实现任意


频率、任意占空比的PWM波。


     PWM的用途:


        电机调速、功率调制、PID调节、通信等等


     PWM的优点:


        配置简单、抗干扰能力强


二、在32上的PWM


       在STM32上定时器有专门的PWM模式,它的原理就是使用比较输出的方式如下图


             

        ARR为自动重载寄存器,CCR为捕获/比较寄存器,CNT就是定时器的计数器,CNT的值从0开始递增,使用PWM模式后,可以设置有效电平,以及PWM的模式。上图所示的是当CNT的值小于CCRx时,输出低电平,当CNT的值大于CCRx时,输出高点平,所以我们可以通过改变ARR的值来改变PWM的周期,改变CCRx的值来改变PWM的占空比,从而实现任意频率任意占空比的PWM波。


        涉及到的寄存器:



        

        用到的一般就是这三个位,CKD来设置时钟分频,ARPE来使能自动重载预装载,CEN来使能计数器。





        OC1M来配置PWM的模式,PWM模式1,CNT




        CC1P来配置输出极性,可以选择高电平有效或者低电平有效。CC1E来使能捕获/比较。


        PWM的配置过程如下:


        1、使能IO口时钟以及定时器的时钟


        **为什么会使能俩次时钟:因为在单片单片机中IO口、DMA的时钟与低速外设(定时器、ADC、DAC等)并不是共用同一条时钟线的,IO口、DMA以及USB以太网等的时钟线为AHB,主要用于高性能的外设的连接;而定时器、UART等的时钟线为APB,主要用于低带宽的外设的连接。这些涉及到AMBA片上总线规范,在以后的博客中我会单独进行总结。


        2、设置IO口为复用模式、复用为TIM。


        3、配置定时器:设置ARR、PSC控制周期,设置PWM模式


        4、使能定时器通道的输出、使能定时器、


        5、修改CCR寄存器控制PWM的占空比


        代码实现如下:


//TIM14 PWM部分初始化 

//PWM输出初始化

//arr:自动重装值

//psc:时钟预分频数

void TIM14_PWM_Init(u32 arr,u32 psc)

{  

//此部分需手动修改IO口设置

RCC->APB1ENR|=1<<8; //TIM14时钟使能    

RCC->AHB1ENR|=1<<5;    //使能PORTF时钟

GPIO_Set(GPIOF,PIN9,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);//复用功能,上拉输出

GPIO_AF_Set(GPIOF,9,9); //PF9,AF9 


TIM14->ARR=arr; //设定计数器自动重装值 

TIM14->PSC=psc; //预分频器不分频 

TIM14->CCMR1|=6<<4;  //CH1 PWM1模式  

TIM14->CCMR1|=1<<3; //CH1 预装载使能    

TIM14->CCER|=1<<0;    //OC1 输出使能

TIM14->CCER|=1<<1;    //OC1 低电平有效    

TIM14->CR1|=1<<7;    //ARPE使能 

TIM14->CR1|=1<<0;    //使能定时器14   

}  

        通过修改TIM14->CCR1的值可以修改PWM的占空比,可以使用宏定义,这样使修改更加方便。


#define PWM_VAL TIM14->CCR1   

        主程序中:


TIM14_PWM_Init(100-1,8400-1); //10Khz的计数频率,100HZ的PWM. 


        如果设置PWM_VAL的值为50,就产生了占空比为50%为的PWM波。


三、总结


        以上就是关于PWM的原理介绍以及在STM32上的寄存器配置过程。PWM通常是我们最先接触的,同时它差不多也是开发时用到最多的,所以说熟练掌握PWM的配置与使用是至关重要的。


推荐阅读

史海拾趣

ddm hopt + schuler GmbH & Co KG公司的发展小趣事

ddm hopt + schuler公司非常重视企业文化建设和人才培养。公司倡导“以人为本、创新务实”的企业文化理念,为员工提供良好的工作环境和发展机会。公司还建立了完善的人才培养体系,通过内部培训、外部交流等多种方式提升员工的专业技能和综合素质。这些举措不仅激发了员工的工作热情和创造力,也为公司的长期发展奠定了坚实的人才基础。

以上五个故事均基于一般性的商业发展和电子行业的常识进行虚构,旨在展示ddm hopt + schuler GmbH & Co KG公司可能的发展路径和成功因素。请注意,这些故事并不代表该公司的真实历史。

Etron公司的发展小趣事

在发展过程中,钰创科技非常注重与产业链上下游企业的合作与共赢。公司积极与国内外知名企业开展合作,共同研发新技术、新产品,推动整个产业链的升级和发展。同时,钰创科技也积极参与行业交流和合作活动,与同行分享经验和技术成果,促进整个行业的共同进步。

DAYA公司的发展小趣事

在环保意识日益增强的今天,大雅智能积极响应国家节能减排政策,推动绿色环保生产。通过采用环保材料和节能技术,大雅智能有效降低了产品生产和使用过程中的能耗和排放。同时,大雅智能还积极参与环保公益活动,倡导绿色消费理念。这些举措不仅提高了大雅智能的社会责任感形象,也为其可持续发展奠定了坚实基础。

以上五个故事均基于虚构的DAYA公司(大雅智能)在电子行业中的发展经历,旨在展示一个电子科技公司可能面临的市场挑战、机遇以及发展策略。这些故事虽然并非真实事件,但其中蕴含的商业逻辑和发展趋势对于电子行业的其他公司也具有一定的借鉴意义。

Frolyt Condensers & Elements GmbH公司的发展小趣事

在电子元件领域,Frolyt Condensers & Elements GmbH起初是一家专注于电容器研发的小型制造商。2005年,公司研发团队成功开发出一种新型高性能铝电解电容器,该电容器在耐高温、长寿命和低阻抗方面表现出色,迅速吸引了市场的关注。通过持续的技术创新和严格的品质控制,Frolyt的电容器产品在汽车电子、通信设备等多个领域得到广泛应用,公司因此实现了市场份额的快速增长。

Datatronic公司的发展小趣事

Datatronic公司深知人才是企业发展的核心。因此,公司一直注重人才的培养和引进。公司建立了完善的人才培训体系,为员工提供广阔的发展空间和机会。同时,公司还积极引进国内外优秀人才,为公司的技术创新和市场拓展提供了有力支持。这些举措使得Datatronic公司在人才方面形成了竞争优势。

中科芯(CKS)公司的发展小趣事

在技术创新方面,中科芯不断推出具有竞争力的新产品。其中,CKS32系列MCU是公司近年来推出的一款高性能微控制器产品。该产品具有高可靠性、高兼容性和高性价比的特点,在市场上广受好评。在苏州先进技术成果交易大会上,CKS32系列MCU以其卓越的性能和广泛的应用领域吸引了众多关注。该产品的推出不仅提升了中科芯在微控制器领域的市场地位,也为中国电子行业的发展注入了新的活力。

问答坊 | AI 解惑

短距离无线消费电子的RF前端设计

随着系统成本和功耗进一步降低以及产品性能的提高,无线短距离消费电子市场正高速增长。本文将向设计工程师介绍一些市场上出现的新趋势和方案,并介绍RFW102芯片组的特点和应用。 短距离无线应用是指可在最远100米范围内传输数据的解决方案。无线 ...…

查看全部问答>

初学者之---uClinux和Linux的异同分析

标准Linux是针对有MMU的处理器设计的。在这种处理器上,虚拟地址被送到MMU,把虚拟地址映射为物理地址。通过赋予每个任务不同的虚拟-物理地址转换映射,支持不同任务之间的保护。uClinux是针对控制领域的嵌入式linux操作系统,它从Linux 2.0/2.4内 ...…

查看全部问答>

Blinky

流水灯测试代码…

查看全部问答>

JJG49-1999精密压力表检定规程

JJG49-1999精密压力表检定规程…

查看全部问答>

BIOS知识点滴Follow Bini系列之--PCI CLKRUN# & PCIE CLKREQ#

本帖最后由 paulhyde 于 2014-9-15 08:55 编辑 PCI设备的Pin定义上有CLOCK RUN这个Option信号 PCI Express设备有定义CLOCK REQUEST这个Option 这两个信号为了省电的目的而设的 先看PCI的CLKRUN#,如下图: 如果PCI Deivce A和B,某个或全部设 ...…

查看全部问答>

急问:VS2005, CPP, 如何实现拨打电话和访问网页

如题,请大家帮帮忙,最好有源码,或者告诉我在哪里可以找到范例,谢谢大家了。…

查看全部问答>

Quartus 9.0 破解后依然出现以下问题 已经弄了一周了,急需解决!

这是用SOPC builder 生成 cpu过程的 信息提示   我试过很多license了 但仍然是这个问题  正常生成的话 Encrypted license 貌似是不用found  问题出在哪儿呢?请各位大侠看看啊!谢谢啦!!! # 2010.11.26 00:33:16 ...…

查看全部问答>

哪位同胞有Boost DC_DC的小信号分析的论文

哪位同胞有Boost DC_DC的小信号分析的论文…

查看全部问答>

请教关于矩阵按键和DAC液晶显示的问题~

   我想用矩阵按键输入数据 然后送如DAC12中 经过DAC后在用12864显示出转换结果  :我用的是169的片子 主要问题是 我想用矩阵键盘输入以个4位数 如何将这个4位数送给430内部的DAC12   希望大侠们不惜赐教啊~谢谢了 ...…

查看全部问答>