使用STM32输出PWM波形实现2个 LED呼吸灯
目录
一、PWM简介
二、STM32配置PWM输出
三、keil仿真
四、烧录运行
五、现象
六、总结
七、参考链接
一、PWM简介
含义
PWM(Pulse Width Modulation)即脉冲宽度调制,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术;它是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。
基本原理
PWM就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。也可以这样理解,PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。只要带宽足够,任何模拟值都可以使用 PWM 进行编码。
优点及应用范围
由于其控制简单、灵活和动态响应好等优点而成为电力电子技术应用最广泛的控制方式,其应用领域包括测量,通信, 功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些音频放大器,因此学习PWM具有十分重要的现实意义。
二、STM32配置PWM输出
- 初始化 TIM3,设置 TIM3 的 ARR 和 PSC
在开启了 TIM3 的时钟之后,我们要设置 ARR 和 PSC 两个寄存器的值来控制输出 PWM 的周期。当 PWM 周期太慢(低于 50Hz)的时候,我们就会明显感觉到闪烁了。因此,PWM 周期在这里不宜设置的太小。 - 设置 TIM3_CH2 的 PWM 模式,使能 TIM3 的 CH2 输出
接下来,我们要设置 TIM3_CH2 为 PWM 模式(默认是冻结的),因为我们的 DS0 是低电平亮,而我们希望当 CCR2 的值小的时候,DS0 就暗,CCR2 值大的时候,DS0 就亮,所以我们要通过配置 TIM3_CCMR1 的相关位来控制 TIM3_CH2 的模式。 - 修改 TIM3_CCR2 来控制占空比
经过以上设置之后,PWM就已经开始输出了,只是其占空比和频率都是固定的,我们可以通过修改 TIM3_CCR2 控制 CH2 的输出占空比继而控制 DS0 的亮度。 - PWM 初始化程序
GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能定时器3时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); //使能GPIO外设和AFIO复用功能模块时钟GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer3部分重映射 TIM3_CH2->PB5 //设置该引脚为复用输出功能,输出TIM3 CH2的PWM脉冲波形 GPIOB.5GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //TIM_CH2GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO//初始化TIM3TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位//初始化TIM3 Channel2 PWM模式 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高TIM_OC2Init(TIM3, &TIM_OCInitStructure); //根据T指定的参数初始化外设TIM3 OC2TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能TIM3在CCR2上的预装载寄存器TIM_Cmd(TIM3, ENABLE); //使能TIM3
三、keil仿真
PWM波形
四、烧录运行
五、现象
六、总结
通过在STM32上进行PWM的配置,我对于PWM产生原理和配置方法以及使用领域有了更加深刻的了解和认识
七、参考链接
(14条消息) 使用STM32输出PWM波形_不#曾&轻听的博客-CSDN博客_stm32输出pwm波形
使用STM32输出PWM波形实现2个 LED呼吸灯相关推荐
- STM32F103C8T6核心开发板下,通过TIM3和TIM4输出PWM波形实现2个 LED呼吸灯的效果
使用TIM3和TIM4,分别输出一个PWM波形,驱动一个外接的LED灯以及最小开发板上已焊接的LED(固定接在 PC13 GPIO端口),实现2个 LED呼吸灯的效果 文章目录 使用TIM3和TIM4 ...
- 在STM上用PWM波形实现2个 LED呼吸灯
STM32最小核心板使用TIM3和TIM4,分别输出一个PWM波形实现2个 LED呼吸灯 文章目录 STM32最小核心板使用TIM3和TIM4,分别输出一个PWM波形实现2个 LED呼吸灯 1.PWM ...
- STM32输出PWM波形以及实现LED呼吸灯
目录 一.PWM的简介 1.PWM的定义 2.PWM的优点 3.PWM的几种控制方法 (1)等脉宽PWM法 (2)随机PWM (3)SPWM法 4.PWM的主要参数 (1)PWM占空比 (2)PWM的 ...
- STM32输出PWM波形及LED呼吸灯
目录 一.PWM的介绍 1.概述 2.优点 3.主要产生方法 SPWM法 1.等面积法 2.硬件调制法 3.软件生成法 4.PWM电路图 5.PWM基本原理 二.cubemx项目的建立 1.选择芯片S ...
- STM32输出PWM波形并实现呼吸灯
文章目录 一.环境配置 二.PWM简介 三.使用STM32CubeMX配置工程 四.使用Keil配置代码 五.运行效果 六.用Keil自带的逻辑仿真器观察占空比 七.总结 八.参考资料 一.环境配置 ...
- 使用STM32输出PWM波形LED呼吸灯的效果
文章目录 前言 一.PWM简介 1.1 关于PWM 1.2 使用步骤 二.使用STM32CUBEMX实现2个 LED呼吸灯的效果 2.1.配置环境 2.2 代码配置 2.3.输出PWM波形 2.4 呼 ...
- 使用STM32输出PWM波形并驱动LED呼吸灯
目录 前言 一.PWM 二.工程代码 1.用STM32CubeMx创建工程 创建新项目 配置RCC和SYS 配置定时器TIME3 配置定时器TIM4 配置时钟 生成项目 2.用Keil编写代码 3.硬 ...
- 嵌入式实验(四):用STM32输出PWM波形/DAC功能完成波形输出
0 实验目标 用STM32F103输出一路PWM波形,建议采用定时器方法.野火和网上大多数资源采用此方法,有完整源码.用示波器观察输出波形. 用STM32F103的DAC功能完成以下波形输出,用示波器 ...
- 使用STM32输出PWM波形
一.关于PWM 1.含义及原理 PWM(Pulse Width Modulation)即脉冲宽度调制,简称脉宽调制.它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术:它是一种模拟控制 ...
最新文章
- 雪城大学信息安全讲义 3.3 提升 Set-UID 程序的安全性
- 使用idea2.5建立maven项目
- 设计模式之美:Facade(外观)
- isNotNull与isNotEmpty区别
- 定义了过多字段-Excel
- 第三章:Java_面向对象编程(一)
- 如何处理non-resolvable parent POM的错误
- SlidingMenu的使用,结合Fragment(eclipse环境)
- Dlib与OpenCV图片转换
- react学习(27)---antdesign设置默认值
- 数据共享如何改变世界_如何改变他人?“我不会去改变这个世界,我们会去改变自己”。...
- 016医疗项目 数据字典(概念和在本系统中的应用)
- 测试人员眼中的问题解决策略
- 浅析StackTrace
- 知了课堂Day1——微信小程序基础01-template、事件
- 包括淘宝天猫API明细接口
- mysql5.7 64位下载_MySQL5.7下载-MySQL数据库5.7下载 v5.7.22.1官方版(32位/64位)--pc6下载站...
- 利用python修改小米运动数据,整个朋友圈都感觉太夸张了
- 大三学生简历_不要再问那些没有的高级开发人员了。 开始指导大三学生。
- linux中 #chmod –R 777 * 是什么意思
热门文章
- R语言中的单因素协方差分析
- Invalid/No python interpreter configured for the project
- 2017年那些不容错过的好书,基本都在这里了
- 3、Linux权限管理
- mongodb中带条件的文档--$gte、 $gt、$lte、$lt、 $eq、 $ne、distinct、与、或($or),$in、$exists
- stylegan3:alias-free generative adversarial networks
- 对象式单片机外部模块驱动编写详解——DAC8552为例
- ITK学习笔记(十二) SimpleITK获取二值图像bbox
- 亚马逊RDS开启慢查询
- 金蝶K3车间管理案例专题一