嵌入式学习--使用定时器输出PWM波形,实现LED呼吸灯的效果
目录
1.任务要求
2.PWM介绍
关于PWM的定义
分频-计数时钟
计数器
定时器输出PWM的原理
定时器的初始化
3.配置STM32CubeMX
4.keil5的代码
5.运行结果
6.心得与体会
1.任务要求
使用TIM3和TIM4,分别输出一个PWM波形,由于PWM的占空比随时间变化,去驱动外接的LED以及最小开发板上已经焊接的LED,实现2个LED呼吸灯的效果。
2.PWM的介绍
关于PWM的定义
PWM控制即脉冲宽度调制技术,就是通过对一系列脉冲的宽度进行调制,来等效地获得所需要的波形(含形状和幅值), PWM控制技术在逆变电路中应用最广,应用的逆变电路绝大部分是PWM型,广泛应用在从测量、通信到功率控制与变换的许多领域中。
其基本原理是控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。
按一定的规则对各脉冲的宽度进行调制,即可改变逆变电路输出电压的大小,也可改变输出频率。
在PWM波形中,各脉冲的幅值是相等的,要改变等效输出正弦波的幅值时,只要按同一比例系数改变各脉冲的宽度即可,因此在交-直-交变频器中,PWM逆变电路输出的脉冲电压就是直流侧电压的幅值。
分频-计数时钟
计数器实质是对输入的驱动时钟进行计数,所以计数器在某种意义上讲,等同于对时钟进行分频。例如一个最大计数长度为N=2^n(从0计数到N-1)的计数器,也就是寄存器位数位n,那么寄存器最高位的输出为N=2^n分频,次高位为N/2分频...
定时器时钟提供较高的频率,计数器不需要这么高的频率来计数,所以会进行降频,使用一个合适的低频时钟来计数。
定时器时钟经过PSC预分频器之后,即CK_CNT,用来驱动计数器计数。
计数器
计数是一种最简单基本的运算。计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T触发器、D触发器及JK触发器等。计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。计数器可以用来显示产品的工作状态,一般来说主要是用来表示产品已经完成了多少份的折页配页工作。它主要的指标在于计数器的位数,常见的有3位和4位的。很显然,3位数的计数器最大可以显示到999,4位数的最大可以显示到9999。
定时器输出PWM原理
假设定时器工作模式设置为向上计数PWM模式,且当CNT<CCRx时,输出1,当CNT>=CCRx时输出0,则:
- 当CNT值小于CCRx的时候,IO输出高电平(1)
- 当CNT值大于等于CCRx的时候,IO输出低电平(0)
- 当 CNT 达到 ARR 值的时候,重新归零,然后重新向上计数,依次循环。
定时器的初始化
在使用8051 系列单片机的定时器/计数器前,首先要对TMOD 和TCON 寄存器进行初始化,同时还必须计算定时的时间(重点)。
(1) 确定T/C 的工作方式:配置TMOD 寄存器。
(2) 计算T/C 的计数初值,并赋值给TH 和TL。
(3) 若T/C 中断方式工作时,必须配置IE 寄存器内ET0 与ET1 的值。
(4) 启动定时器/计数器。
3.配置STM32cubeMX
新建工程文件参考此博客
http://t.csdn.cn/UwJrL
新建好之后,打开System core,点击RCC设置为外部时钟源,如图:
然后点击下面的SYS,选择串行通信serial wire,如图:
打开下面的Timer,然后选择定时器(这里我选择的是TIM2、TIM4),具体参数如图所示:
这是TIM2的配置,TIM4同TIM2一样。
4.keil5中代码的编写
打开生成的工程文件,在图中所示位置添加一个变量用来储存占空比,如图:
然后在下图位置添加执行呼吸灯程序的代码,如图:
5.运行效果
波形会呈现出一快一慢的规律性变化,如下图:
6.总结
通过在STM32上进行PWM的配置,我对于PWM产生原理和配置方法以及使用领域有了更加深刻的了解和认识,PWM对于我们学习和使用STM32以及其他单片机起着非常重要的作用。
嵌入式学习--使用定时器输出PWM波形,实现LED呼吸灯的效果相关推荐
- 嵌入式学习——使用定时器输出PWM波形,实现 LED呼吸灯的效果
嵌入式学习--使用定时器输出PWM波形,实现 LED呼吸灯的效果 目录 嵌入式学习--使用定时器输出PWM波形,实现 LED呼吸灯的效果 1. 任务要求 2 PWM波介绍, 2.1 什么是PWM(Pu ...
- STM32输出PWM波形及LED呼吸灯
目录 一.PWM的介绍 1.概述 2.优点 3.主要产生方法 SPWM法 1.等面积法 2.硬件调制法 3.软件生成法 4.PWM电路图 5.PWM基本原理 二.cubemx项目的建立 1.选择芯片S ...
- STM32输出PWM波形并实现呼吸灯
文章目录 一.环境配置 二.PWM简介 三.使用STM32CubeMX配置工程 四.使用Keil配置代码 五.运行效果 六.用Keil自带的逻辑仿真器观察占空比 七.总结 八.参考资料 一.环境配置 ...
- 输出一个PWM并实现 LED呼吸灯的效果
前言 本篇博客使用TIM3和TIM4,分别输出一个PWM波形,PWM的占空比随时间变化,去驱动你外接的一个LED以及最小开发板上已焊接的LED(固定接在 PC13 GPIO端口),实现2个 LED呼吸 ...
- 嵌入式学习——使用定时器同时实现串口通信和LED流水灯
一.定时器的概念以及作用 1.定时器的概念以及作用 在芯片中使用晶振作为计时单位,通过对晶振的计数来实现计时,当时间达到定时器设定的时长后,会跳入对应的函数执行对应的操作. 定时器的主要作用是产生一个 ...
- 使用STM32输出PWM波形LED呼吸灯的效果
文章目录 前言 一.PWM简介 1.1 关于PWM 1.2 使用步骤 二.使用STM32CUBEMX实现2个 LED呼吸灯的效果 2.1.配置环境 2.2 代码配置 2.3.输出PWM波形 2.4 呼 ...
- 嵌入式——使用定时器输出PWM波形,实现 LED呼吸灯的效果
一.实验要求: 使用TIM3和TIM4,分别输出一个PWM波形,PWM的占空比随时间变化,去驱动你外接的一个LED以及最小开发板上已焊接的LED(固定接在 PC13 GPIO端口),实现2个 LED呼 ...
- STM32F103C8T6核心开发板下,通过TIM3和TIM4输出PWM波形实现2个 LED呼吸灯的效果
使用TIM3和TIM4,分别输出一个PWM波形,驱动一个外接的LED灯以及最小开发板上已焊接的LED(固定接在 PC13 GPIO端口),实现2个 LED呼吸灯的效果 文章目录 使用TIM3和TIM4 ...
- stm32F051系列 单片机引脚定时器输出pwm波形控制风扇转速
概述:stm32的每个引脚都有其自带的特殊功能,有定时器输出功能的引脚可以输出pwm.如果没有的也可以io口模拟输出,如果非要较真的话,理论上可以算是每个引脚都能输出PWM,但一般我们都使用带定时器输 ...
最新文章
- 百分点大数据技术团队:数据治理“PAI”实施方法论
- MongoDB启动报错
- Shebang来Java了吗?
- python c4.5完整代码_python实现c4.5/Id3自我练习
- mysql 5.6 生产my.cnf_一个生产可用的mysql参数文件my.cnf
- IDEA:vue中缺少vue-quill-editor富文本插件
- 山东工业大学计算机及应用,彭玉旭副教授
- [Unity] GameFramework 学习记录 1
- php larval 项目部署,Laravel项目部署到线上需要注意的问题
- 什么网了解c语言,什么是c语言?
- linux内核源码目录结构
- linux vi指令回退,Linux命令 vi vim
- IO编程——文件复制操作
- 在线文本加密解密工具
- 3.图灵学院-----阿里/京东/滴滴/美团整理----高频JVM调优篇
- Java语言程序设计与数据结构(进阶篇)梁勇课后题ex——19
- 怎么找网图本人_如何通过一张照片找到一个人的位置?https://www.zhihu.com/zvideo/1312521748374917120...
- 游戏背景音乐的两个特殊类型
- Z80 CPU资料调查
- Ubuntu下安装配置TAU分析mpich和openmp程序性能