【STM32】详解PWM的概念和原理
创始人
2024-03-22 11:19:37

PWM的概念和原理

    • 一、PWM是什么?
    • 二、如何实现?
    • 三、STM32中的PWM
    • 四、使用库函数配置PWM将LED0设置为呼吸灯

一、PWM是什么?

PWM(Pulse width modulation)脉冲宽度调制。PWM是通过编程控制输出方波的频率和占空比(高低电平的比例)。应用:测量,通信,功率控制与变换等各种领域(呼吸灯、电机)。

二、如何实现?

PWM是由定时器驱动,定时器的周期就是PWM的周期,为了控制高低电平的比例,会在定时器的基础上加上一个比较寄存器,同时需要和IO口结合输出PWM波。
在这里插入图片描述

三、STM32中的PWM

STM32中PWM属于定时器的功能,通过直接配置定时器就可以使用PWM,除了定时器的基本配置以外,还要加入一个比较计数值确定一个周期内翻转电平的时机,还需要GPIO输出方波,需要用到GPIO的复用功能。
PWM波的高低带你平的顺序是由极性PWM模式计数模式共同决定。极性决定有效电平(默认电平),PWM模式指的是一个周期内有效电平和无效电平的顺序。
在这里插入图片描述
注意:只有有定时器服用功能的GPIO才可以输出PWM。

四、使用库函数配置PWM将LED0设置为呼吸灯

1、原理
如下图低电平0灯亮,高电平1灯灭。如果快速翻转电平,我们肉眼看到灯的亮度为原来的一半
在这里插入图片描述
通过再极短时间内控制LED亮灭时间的比例,可以达到控制灯的亮度,用数字信号的方法,达到模拟的控制效果——PWM调控方法
宏观和微观的区别:
微观上:数字信号控制灯的亮和灭,不断切换并保证切换的速度足够快,快到人的肉眼识别不了。
宏观上:灯的亮度效果变化了。
2、代码思路
在这里插入图片描述
(1)使能时钟
GPIOF时钟
TIM14时钟
(2)初始化GPIO为复用功能

GPIOInitStruct.GPIO_Mode  = GPIO_Mode_AF
GPIO_Init(...);

(3)将定时器14通道1的复用功能映射到GPIOF9

void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)
参数:
GPIOx:哪一组GPIO
GPIO_PinSource:哪个引脚
GPIO_AF:哪个复用功能

(4)初始化定时器

TIM_TimeBaseInit(...);

(5)初始化PWM的参数(比较值、极性、PWM模式)

void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct)
参数:
TIMx:哪个定时器
TIM_OCInitStruct:定时器PWM的初始化结构

(6)使能PWM的预装载和重装载功能

	TIM_OC1PreloadConfig(TIM14,TIM_OCPreload_Enable);TIM_ARRPreloadConfig(TIM14, Enable);

(7)启动定时器
TIM_Cmd(TIM14,ENABLE);
(8)根据需要调节PWM的占空比(修改比较计数值)
3、示例代码

void TIM14CH1_PF9Init(void)
{GPIO_InitTypeDef GPIOInitStruct;TIM_TimeBaseInitTypeDef TIMInitStruct;TIM_OCInitTypeDef TIMOCInitStruct;//1-使能时钟RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14,ENABLE);//2-初始化引脚PF9 为复用AF功能GPIOInitStruct.GPIO_Pin   = GPIO_Pin_9;//确定要初始化的引脚号GPIOInitStruct.GPIO_Mode  = GPIO_Mode_AF;//复用功能GPIOInitStruct.GPIO_OType = GPIO_OType_PP;//复用推挽GPIOInitStruct.GPIO_Speed = GPIO_Speed_100MHz;GPIOInitStruct.GPIO_PuPd  = GPIO_PuPd_NOPULL;//浮空输入模式GPIO_Init(GPIOF,&GPIOInitStruct);//3-指定连接PF9引脚复用到 TIM14功能  GPIO的复用功能配置寄存器 GPIO_AFRL  GPIO_AFRHGPIO_PinAFConfig(GPIOF, GPIO_PinSource9, GPIO_AF_TIM14);//4-初始化TIM14时基单元  ARR  PSC  CNT计数模式TIMInitStruct.TIM_Prescaler = 84-1;// 84Mhz/84 = 1Mhz   1us/脉冲TIMInitStruct.TIM_Period    = 1000-1;//计1000个脉冲  对应1ms TIMInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;//不分频//TIMInitStruct.TIM_CounterMode  = TIM_CounterMode_Up;//递增  TIM14只能递增不用设置TIM_TimeBaseInit(TIM14,&TIMInitStruct);//5-定时器的输出功能配置--配置PWM输出模式  PWM输出极性  配置CCRx初值.... TIMOCInitStruct.TIM_OCMode      = TIM_OCMode_PWM1;//CNT < CCR 输出有效电平  CNT>=CCR输出无效电平TIMOCInitStruct.TIM_OCPolarity  = TIM_OCPolarity_Low;//低电平有效TIMOCInitStruct.TIM_Pulse       = 0;//默认CCR1 = 0 灯灭 100%TIMOCInitStruct.TIM_OutputState = TIM_OutputState_Enable;//开启TIM_OC1Init(TIM14,&TIMOCInitStruct);//6.使能预装载和重装载TIM_OC1PreloadConfig(TIM14,TIM_OCPreload_Enable);TIM_ARRPreloadConfig(TIM14, Enable);//6-开启TIM14TIM_Cmd(TIM14,ENABLE);
}

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...