嵌入式——使用定时器输出PWM波形,实现 LED呼吸灯的效果
一、实验要求:
使用TIM3和TIM4,分别输出一个PWM波形,PWM的占空比随时间变化,去驱动你外接的一个LED以及最小开发板上已焊接的LED(固定接在 PC13 GPIO端口),实现2个 LED呼吸灯的效果。
PWM波介绍:
1.PWM波
在一个周期波形中,高电平占整个周期的比例称之为占空比,而高电平宽度通常被称为脉冲宽度。当我们在控制占空比,从而控制电路导通或者关闭时间,从而控制导通的有效电压。
PWM的频率:
指1秒钟内信号从高电平到低电平再回到高电平的次数。
PWM的周期:
T = 1 / f,周期 = 1 / 频率
PWM的占空比:
指一个脉冲周期内,高电平的时间与整个周期时间的比例
脉宽时间:
高电平时间,脉宽时间占总周期时间的比例,就是占空比
调节PWM:
PWM就是通过脉冲宽度调制,通过调节占空比,就可以调节脉冲宽度(脉宽时间),而频率就是单位时间内脉冲信号的次数,频率越大,占空比越大。
分频-计数时钟
定时器时钟提供较高的频率,计数器不需要这么高的频率来计数,所以会进行降频,使用一个合适的低频时钟来计数。
定时器时钟经过PSC预分频器之后,即CK_CNT,用来驱动计数器计数。PSC是一个16位的预分频器,可以对时钟TIMxCLK进行1~65536之间的任何一个数进行分频。
即:CK_CNT = TIMxCLK / (PSC+1)
比如,使用STM32F4的通用定时器2(TIM2CLK为APB1的时钟的两倍即84MHz),PSC设置为83,则计数时钟为84MHz/(83+1)=1MHz,即1ms计一个数。
计数器
计数器是一个16位的计数器,只能往上计数,最大数值为65535。当计数达到自动重装载值时产生更新事件,并清零从头开始计数。
2.定时器输出PWM原理
定时器工作模式设置为向上计数PWM模式,且当CNT<CCRx时,输出1,当CNT>=CCRx时输出0,则:
当CNT值小于CCRx的时候,IO输出高电平(1),
当CNT值大于等于CCRx的时候,IO输出低电平(0),
当 CNT 达到 ARR 值的时候,重新归零,然后重新向上计数,依次循环。
二、开始实验
1.工程设置
在STM32CubeMX中新建文件夹并按如下进行设置
(1)打开System core,点击RCC设置为外部时钟源
(2)设置串口通信
(3)设置定时器
设置分频系数为71,计数周期为500,其它默认。
设置占空比初始值为10。
其余配置不变
(4)引脚设置:
工程设置结束生成工程文件并打开
2.代码编写
(1)添加一个变量用来储存占空比
uint16_t duty_num = 10; //定义变量储存占空比
在main.c文件中找到
/* USER CODE BEGIN PV */
和
/*USER CODE END PV */
并将此变量添加在里面
(2)添加启动定时器TIM2和管道2以及定时器TIM4和管道4的代码,输出PWM
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_4); //开启定时器4和4号通道HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2); //开启定时器2和2号通道
在main.c文件中找到
/* USER CODE BEGIN 2 /
和
/ USER CODE END 2*/
并将代码添加在里面
(3)添加执行呼吸灯程序的代码
//每隔50毫秒,占空比加10,如果超过500(也就是PWM周期),自动变成0.HAL_Delay(50);duty_num = duty_num + 10;if(duty_num > 500){duty_num = 0;}__HAL_TIM_SetCompare(&htim4,TIM_CHANNEL_4,duty_num); __HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,duty_num);
在main.c文件中找到
/*USER CODE BEGIN 3 */
和
/*USER CODE END 3 */
并将代码添加在里面
编译无误后进行烧录
3.实验结果演示
(1)PWM波形
(2)结果演示
参考博客:
https://blog.csdn.net/qq_66144143/article/details/127600830
嵌入式——使用定时器输出PWM波形,实现 LED呼吸灯的效果相关推荐
- 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呼吸 ...
- 使用STM32输出PWM波形LED呼吸灯的效果
文章目录 前言 一.PWM简介 1.1 关于PWM 1.2 使用步骤 二.使用STM32CUBEMX实现2个 LED呼吸灯的效果 2.1.配置环境 2.2 代码配置 2.3.输出PWM波形 2.4 呼 ...
- 嵌入式学习——使用定时器输出PWM波形,实现 LED呼吸灯的效果
嵌入式学习--使用定时器输出PWM波形,实现 LED呼吸灯的效果 目录 嵌入式学习--使用定时器输出PWM波形,实现 LED呼吸灯的效果 1. 任务要求 2 PWM波介绍, 2.1 什么是PWM(Pu ...
- 嵌入式学习--使用定时器输出PWM波形,实现LED呼吸灯的效果
目录 1.任务要求 2.PWM介绍 关于PWM的定义 分频-计数时钟 计数器 定时器输出PWM的原理 定时器的初始化 3.配置STM32CubeMX 4.keil5的代码 5.运行结果 6.心得与体会 ...
- STM32F103C8T6核心开发板下,通过TIM3和TIM4输出PWM波形实现2个 LED呼吸灯的效果
使用TIM3和TIM4,分别输出一个PWM波形,驱动一个外接的LED灯以及最小开发板上已焊接的LED(固定接在 PC13 GPIO端口),实现2个 LED呼吸灯的效果 文章目录 使用TIM3和TIM4 ...
- 使用TIM3和TIM4,驱动外接LED和STM32上已焊接的LED,实现2个 LED呼吸灯的效果
文章目录 一.PWM相关介绍 1.PWM的含义 2.PWM的基本原理 3.PWM的优点及应用范围 4.STM32上的PWM 5.PWM相关寄存器 6.PWM脉冲宽度调制 7.PWM的频率 二.实现呼吸 ...
- stm32F051系列 单片机引脚定时器输出pwm波形控制风扇转速
概述:stm32的每个引脚都有其自带的特殊功能,有定时器输出功能的引脚可以输出pwm.如果没有的也可以io口模拟输出,如果非要较真的话,理论上可以算是每个引脚都能输出PWM,但一般我们都使用带定时器输 ...
最新文章
- 【组队学习】【29期】7. 集成学习(上)
- Linux系统运维工程师PDF文档精选
- 一文看懂深度学习与计算机视觉
- es6中的块级作用域
- 甲醛、苯、甲苯、二甲苯对人体健康的危害
- html和url两种录制方式
- 华为交换机开机后接口等一直闪_交换机的工作原理
- scrapy setting
- 【BZOJ】1061: [Noi2008]志愿者招募
- 远程计算机用户端口,电脑怎么开远程端口
- Docker 基础 ( 二十 ) 部署Redis集群,问题记录
- 为什么下一个十年的主战场在Serverless
- 疾控LIMS实验室信息管理系统功能需求
- linux 下查看文件字符编码和转换编码 360doc,Linux 下查看文件字符编码和转换编码...
- ResNet网络结构详解、完整代码实现
- 短信接入程序,短信接入平台,彩信接入程序,移动短信接入软件,移动彩信接入平台模块
- operator重载运算符
- 攻防世界之Miscellaneous-300
- 北京社保开户需要的手续及流程
- C语言入门技巧·使用注释快捷键完成单行注释和多行注释的技巧