STM32 cubeMX 呼吸灯实验

news2025/1/20 5:59:51

文章代码使用 HAL 库。

文章目录

  • 一、1.PWM原理
  • 二、LED 原理图
  • 三、使用cubemx 配置 led
  • 四、PWM 相关函数
  • 五、PWM占空比占空比计算
  • 六、PWM 呼吸灯重要代码
  • 总结


呼吸灯

一、1.PWM原理

PWM全称为脉冲宽度调制(Pulse Width Modulation),是一种常用的调制技术。它通过改变信号脉冲的宽度来控制电路或装置的输出功率或电压。

在PWM中,周期性的方波信号被产生,其中脉冲的宽度是可变的,而脉冲的频率是固定的。通常,PWM信号的周期称为周期时间,而脉冲的占空比则是脉冲宽度与周期时间之间的比值。

PWM信号可用于控制电机速度、调节LED的亮度、产生模拟信号等各种应用。通过改变PWM信号的占空比,可以在时间上控制输出信号的强度或控制设备的工作时间比。

周期:PWM周期(Pulse Width Modulation period)指的是PWM信号一个完整的周期的时间长度。在PWM信号中,周期是指一个完整的脉冲周期,包括脉冲的高电平和低电平部分。

计算公式:(定时器预分频系数 + 1) * (重装载值 + 1) / 时钟主频

占空比:

占空比通常用百分比或比例表示,可以取值在 0% 到 100% 之间,或是 0 到 1 之间。占空比为 0% 表示PWM 信号全为低电平,占空比为 100% 表示 PWM 信号全为高电平。一般而言,占空比决定了 PWM信号中高电平的时间长度,从而控制到达被驱动装置的电源的平均电压水平。

对于直流电机或LED等装置,常用 PWM 控制来调节速度或亮度。例如,在 50% 的占空比下,PWM 信号在一个周期内将有一半的时间为高电平,一半的时间为低电平,这将导致电机转速或灯光亮度的降低。ARR(自动重载寄存器)增加占空比将增加高电平时间,减小占空比则减小高电平时间。

例子:在输出电压为10V的电路中,设置PWM占空比为40%,那么起始这个电路输出的实际电压是4V。

通常控制LED时只需要给一个高电平就可以控制那么下面是LED电平状态图使用PWM控制LED调节亮度的电平状态图.

在这里插入图片描述
在这里插入图片描述

二、LED 原理图

可以看到有4个led。 其中 LED2 接到了PB2引脚, LED3 接到了PB1引脚, LED4 接到了PB0引脚,所以我们需要配置对应 led 的 gpio 引脚为输出引脚。

在这里插入图片描述
在这里插入图片描述

三、使用cubemx 配置 led

在这里插入图片描述
在这里插入图片描述

四、PWM 相关函数

启动定时器PWM模式

HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel);

参数:

  • TIM_HandleTypeDef *htim`:指向 TIM_HandleTypeDef 结构体的指针,该结构体包含了定时器的配置和状态信息。

  • uint32_t Channel`:指定要启动 PWM 的通道。对于 STM32 定时器而言,可以有多个通道,每个通道可以独立地生成 PWM 信号。

设置 占空比

__HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__);

参数:

  • HANDLE:是一个宏或变量,用于表示特定定时器的句柄。

  • CHANNEL:这是指定要操作的定时器通道。

  • COMPARE:这是要设置的比较值,用于比较寄存器的内容。

// 也可以使用 CCRx 比较寄存器设置 占空比。
TIM3->CCR3 = 200;

// 也可以通过htim3.Instance->CCRx直接修改CCR的值
htim3.Instance->CCR3 = 200;

五、PWM占空比占空比计算

CCR(捕获/比较寄存器)/ ARR(自动重载寄存器) 100%*

如果 ARR(自动重载值) = 500时,当 CCR(比较寄存器值) = 100 则 占空比是 20%

六、PWM 呼吸灯重要代码

int pwm_value = 0;		// 占空比


// 开启 pwm 输出
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);


for(uint16_t i=1;i<500;i++)    // 通过循环逐渐改变CCR,进而改变占空比。
{
    htim3.Instance->CCR3 = i; 
    HAL_Delay(1);
}

for(uint16_t i=499;i>=1;i--)
{
    htim3.Instance->CCR3 = i;   // 通过htim3.Instance->CCRx直接修改CCR的值
    HAL_Delay(1);
} 

在这里插入图片描述


总结

下篇文章为大家介绍 无源蜂鸣器唱歌。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1293409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】进程通信之命名管道mkfifo

1.认识命名管道 匿名管道应用的一个限制就是只能在具有共同祖先&#xff08;具有亲缘关系&#xff09;的进程间通信。如果我们想在不相关的进程之间交换数据&#xff0c;可以使用FIFO文件来做这项工作&#xff0c;它经常被称为命名管道。命名管道是一种特殊类型的文件 2.在命…

华清远见嵌入式学习——QT——作业1

作业要求&#xff1a; 代码&#xff1a; ①&#xff1a;头文件 #ifndef LOGIN_H #define LOGIN_H#include <QWidget> #include <QLineEdit> //行编辑器类 #include <QPushButton> //按钮类 #include <QLabel> //标签类 #include <QM…

(五) Python 代理模式

文章目录 5.1 代理模式概述5.1.1 代理介绍5.1.2 代理模式的作用 5.2 代理模式的UML类图5.3 了解不同类型的代理5.3.1虚拟代理5.3.2 远程代理5.3.3 保护代理5.3.4 智能代理 5.4 现实世界中的代理模式5.5 代理模式的优点5.6 门面模式和代理模式之间的比较 5.1 代理模式概述 5.1.…

华为鸿蒙开发——开发及引用静态共享包(HAR)、应用配置文件

文章目录 简述一、创建HAR模块二、编译HAR模块三、应用配置文件&#xff08;Stage模型&#xff09;四、应用配置文件&#xff08;FA模型&#xff09;1、配置文件的内部结构&#xff08;1&#xff09;app&#xff08;2&#xff09;deviceConfig&#xff08;3&#xff09;module …

GDPU 数据结构 天码行空13

文章目录 一、【实验目的】二、【实验内容】三、实验源代码四、实验结果五、实验总结 一、【实验目的】 (1) 理解插入排序算法的实现过程&#xff1b; &#xff08;2&#xff09;理解不同排序算法的时间复杂度及适用环境&#xff1b; &#xff08;3&#xff09;了解算法性能…

高精度时钟芯片SD2405

概要 SD2405是一款非常优秀的RTC解决方案&#xff0c;为了能让用户在Arduino上有一款方便易用的时钟模块。该模块是一款内置晶振&#xff0c;支持IIC串行接口的高精度时钟模块&#xff1b;内置一次性工业级电池&#xff0c;可保证外部掉电的情况下&#xff0c;可以继续工作5~8…

华为数通方向HCIP-DataCom H12-831题库(多选题:161-180)

第161题 以下关于IS-IS路由渗透的描述,正确的有哪些项? A、若要配置Level-2区域的路由向Level-1区域渗透,则需要在Level-1设备上配置命令import-routeisis level_-2 into level_-1 B、缺省情况下,Level-2区域无Level-1区域的路由信息,需要通过在Level-1-2设备上配置impor…

3.PyTorch——常用神经网络层

import numpy as np import pandas as pd import torch as t from PIL import Image from torchvision.transforms import ToTensor, ToPILImaget.__version__2.1.13.1 图像相关层 图像相关层主要包括卷积层&#xff08;Conv&#xff09;、池化层&#xff08;Pool&#xff09;…

翻译: 生成式人工智能的经济潜力 第2部分行业影响 The economic potential of generative AI

麦肯锡报告 翻译: 生成式人工智能的经济潜力 第一部分商业价值 The economic potential of generative AI 1. 行业影响 在我们分析的63个使用案例中&#xff0c;生成式人工智能有潜力在各行各业创造2.6万亿至4.4万亿美元的价值。其确切影响将取决于各种因素&#xff0c;比如…

SpringBoot框架+原生HTML开发,基于云端SaaS服务方式的电子病历编辑器源码

一体化电子病历编辑器源码&#xff0c;电子病历系统 一体化电子病历系统基于云端SaaS服务的方式&#xff0c;采用B/S&#xff08;Browser/Server&#xff09;架构提供&#xff0c;覆盖了医疗机构电子病历模板制作到管理使用的整个流程。除实现在线制作内容丰富、图文并茂、功能…

MySQL主从复制(一主两从)架构搭建(阿里云服务器)

建立主机master 1.建立数据库master docker run --name master --restart always -p 3308:3306 -v /root/docker/volumes/etc/master:/etc/mysql -v /root/docker/volumes/var/lib/master:/var/lib/mysql -e MYSQL_ROOT_PASSWORDriCXT8zM -d mysql:latest 2.复制master的配置文…

讲一下maven的生命周期

Maven是一种强大的项目管理工具&#xff0c;它可以帮助开发者组织和管理项目的构建过程。Maven的生命周期指的是一系列的活动&#xff0c;包括如何创建、准备、构建和测试项目的过程。以下是对Maven生命周期的主要阶段的简要概述&#xff1a; 获取项目&#xff1a;在这个阶段&…

【开源】基于Vue+SpringBoot的智慧家政系统

项目编号&#xff1a; S 063 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S063&#xff0c;文末获取源码。} 项目编号&#xff1a;S063&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询家政服…

扩展卡尔曼滤波技术(Extended Kalman Filter,EKF)

一、概念介绍 卡尔曼滤波是一种高效率的递归滤波器(自回归滤波器), 它能够从一系列的不完全包含噪声的测量中&#xff0c;估计动态系统的状态&#xff0c;然而简单的卡尔曼滤波必须应用在符合高斯分布的系统中。 扩展卡尔曼滤波就是为了解决非线性问题&#xff0c;普通卡尔曼…

HashMap系列-resize

1.resize public class HashMap<K,V> extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable {final Node<K,V>[] resize() {Node<K,V>[] oldTab table;int oldCap (oldTab null) ? 0 : oldTab.length; //老的数组容量in…

【开源】基于Vue+SpringBoot的快乐贩卖馆管理系统

项目编号&#xff1a; S 064 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S064&#xff0c;文末获取源码。} 项目编号&#xff1a;S064&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 搞笑视频模块2.3 视…

用 PHP和html做一个简单的注册页面

用 PHP和html做一个简单的注册页面 index.html的设计 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title…

手眼标定 - 最终精度和误差优化心得

手眼标定 - 标定误差优化项 一、TCP标定误差优化1、注意标定针摆放范围2、TCP标定时的点次态与工作姿态尽可能保持相近 二、深度相机对齐矩阵误差1、手动计算对齐矩阵 三、拍照姿态1、TCP标定姿态优先2、水平放置棋盘格优先 为减少最终手眼标定的误差&#xff0c;可做或注意以下…

华为数通---配置Smart Link负载分担案例

定义 Smart Link&#xff0c;又叫做备份链路。一个Smart Link由两个接口组成&#xff0c;其中一个接口作为另一个的备份。Smart Link常用于双上行组网&#xff0c;提供可靠高效的备份和快速的切换机制。 目的 下游设备连接到上游设备&#xff0c;当使用单上行方式时&#x…

【dig命令查询方法】

dig&#xff08;Domain Information Groper&#xff09;是一个用于查询DNS&#xff08;域名系统&#xff09;的命令行工具&#xff0c;它可以帮助您获取关于域名的各种信息&#xff0c;如IP地址、MX记录、NS记录等。下面是dig的详细使用教程。 基本语法&#xff1a; dig [ser…