STM32 cubeMX 呼吸灯实验

文章代码使用 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);
} 

在这里插入图片描述


总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软著项目推荐 深度学习验证码识别 - 机器视觉 python opencv

文章目录 0 前言1 项目简介2 验证码识别步骤2.1 灰度处理&二值化2.2 去除边框2.3 图像降噪2.4 字符切割2.5 识别 3 基于tensorflow的验证码识别3.1 数据集3.2 基于tf的神经网络训练代码 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x…

php循环遍历删除文件下文件和目录

前言 今天在写一个demo的时候需要循环删除目录下文件。如下想删temp下文件和目录。 具体实现 private function deleteDir($dirPath){if (is_dir($dirPath)) {$contents scandir($dirPath);// 如果是空目录if (count($contents) 2) {rmdir($dirPath);return;}// 不是空目录f…

windows MYSQL下载和自定路径安装,以及解决中文乱码问题。

文章讲的很详细&#xff0c;请耐心往下看。 一、mysql下载 下载网址&#xff1a;https://www.mysql.com/downloads/ 表示不登录&#xff0c;直接下载。 以上就把安装包下载完了。下载是8.0.35版本。 二、接下来看怎么安装 1.双击安装包&#xff0c;进行安装。 注意&#x…

【论文阅读笔记】M3Care: Learning with Missing Modalities in Multimodal Healthcare Data

本文介绍了一种名为“MCare”的模型&#xff0c;旨在处理多模态医疗保健数据中的缺失模态问题。这个模型是端到端的&#xff0c;能够补偿病人缺失模态的信息&#xff0c;以执行临床分析。MCare不是生成原始缺失数据&#xff0c;而是在潜在空间中估计缺失模态的任务相关信息&…

【web安全】文件包含漏洞详细整理

前言 菜某的笔记总结&#xff0c;如有错误请指正。 本文用的是PHP语言作为案例 文件包含漏洞的概念 开发者使用include&#xff08;&#xff09;等函数&#xff0c;可以把别的文件中的代码引入当前文件中执行&#xff0c;而又没有对用户输入的内容进行充分的过滤&#xff0…

算法通关村第十八关-青铜挑战回溯是怎么回事

大家好我是苏麟 , 今天聊聊回溯是怎么个事 . 回溯是最重要的算法思想之一&#xff0c;主要解决一些暴力枚举也搞不定的问题&#xff0c;例如组合、分割、子集、排列&#xff0c;棋盘等。从性能角度来看回溯算法的效率并不高&#xff0c;但对于这些暴力都搞不定的算法能出结果就…

区分node,npm,nvm

目录 一&#xff0c;nodejs二&#xff0c;npm三&#xff0c;nvm 区分node&#xff0c;npm&#xff0c;nvm 几年前学习前端的时候学习的就是htmlcssjs 三件套。 现在只学习这些已经不能满足需要了。 一&#xff0c;nodejs nodejs是编程语言javascript运行时环境。&#xff08;比…

【复杂gRPC之Java调用go】

1 注意点 一般上来说如果java调用java的话&#xff0c;我们可以使用springcloud来做&#xff0c;而面对这种跨语言的情况下&#xff0c;gRPC就展现出了他的优势。 代码放在这了&#xff0c;请结合前面的go服务器端一起使用 https://gitee.com/guo-zonghao/java-client-grpc /…

阿里云实时数据仓库HologresFlink

1. 实时数仓Hologres特点 专注实时场景&#xff1a;数据实时写入、实时更新&#xff0c;写入即可见&#xff0c;与Flink原生集成&#xff0c;支持高吞吐、低延时、有模型的实时数仓开发&#xff0c;满足业务洞察实时性需求。亚秒级交互式分析&#xff1a;支持海量数据亚秒级交…

量子算力引领未来!玻色量子出席第二届CCF量子计算大会

​8月19日至20日&#xff0c;中国计算机学会&#xff08;CCF&#xff09;主办的第二届CCF量子计算大会暨中国量子计算峰会&#xff08;CQCC 2023&#xff09;在中国合肥成功举办。本届大会以“量超融合&#xff0c;大国算力”为主题&#xff0c;设有量子计算软件、硬件、应用生…

机器学习应用 | 使用 MATLAB 进行异常检测(上)

异常检测任务&#xff0c;指的是检测偏离期望行为的事件或模式&#xff0c;可以是简单地检测数值型数据中&#xff0c;是否存在远超出正常取值范围的离群值&#xff0c;也可以是借助相对复杂的机器学习算法识别数据中隐藏的异常模式。 在不同行业中&#xff0c;异常检测的典型…

智能优化算法应用:基于材料生成算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于材料生成算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于材料生成算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.材料生成算法4.实验参数设定5.算法结果6.参考…

Tomcat头上有个叉叉

问题原因&#xff1a; 这是因为它就是个空的tomcat,并没有导入项目运行 解决方案&#xff1a; war模式&#xff1a;发布模式&#xff0c;正式发布时用&#xff0c;将WEB工程以war包的形式上传到服务器 war exploded模式&#xff1a;开发时用&#xff0c;将WEB工程的文件夹直接…

Navicat 连接 GaussDB分布式的快速入门

Navicat Premium&#xff08;16.3.3 Windows版或以上&#xff09;正式支持 GaussDB 分布式数据库。GaussDB分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结构…

【2023年网络安全优秀创新成果大赛专刊】医疗机构临床数据合规共享解决方案(美创科技)

“2023年网络安全优秀创新成果大赛”由中央网信办网络安全协调局指导&#xff0c;中国网络安全产业联盟&#xff08;CCIA&#xff09;主办。本次大赛由3场分站赛、3场专题赛、1场大学生创新创业作品赛组成。 在杭州分站赛&#xff0c;美创科技—“医疗机构临床合规共享解决方案…

redis-学习笔记(list)

因为 list 可以头插头删, 尾插尾删, 所以其实更像 C 中的 deque (双端队列) ---- 知道就好, 别乱说, 具体底层编码是啥, 俺也不知道(没注意过) 可以通过组合, 把 list 当作队列 / 栈来用 list 的几种底层编码: ziplist(压缩列表) , linkedlist(链表) , quicklist ziplist 就是将…

docker镜像仓库hub.docker.com无法访问

docker镜像仓库hub.docker.com无法访问 文章主要内容&#xff1a; 介绍dockerhub为什么无法访问解决办法 1 介绍dockerhub为什么无法访问 最近许多群友都询问为什么无法访问Docker镜像仓库&#xff0c;于是我也尝试去访问&#xff0c;结果果然无法访问。 大家的第一反应就是…

如何优雅使用 vue-html2pdf 插件生成pdf报表

使用 vue-html2pdf 插件 业务背景&#xff0c;老板想要一份能征服客户的pdf报表&#xff0c;传统的pdf要手撕&#xff0c;企业中确实有点耗费时间&#xff0c;于是github上面看到开源的这个插件就…废话不多说&#xff0c;直接上教程 1.使用下面命令安装 vue-html2pdf npm i…

PHPstudy小皮的数据库打开失败问题解决

如果你的MYSQL服务启动后停止&#xff0c;多次重启依然无法解决的情况下&#xff0c;大概率是和本地mysql冲突了 但是&#xff0c;千万不要卸载掉本地mysql&#xff0c;只需要在服务中停止本地mysql即可 将此服务关闭&#xff0c;小皮的mysql即可使用

AtCoder ABC周赛2023 11/4 (Sat) D题题解

目录 原题截图&#xff1a; 题目大意&#xff1a; 主要思路&#xff1a; 注意事项&#xff08;很多人再这个地方掉坑&#xff09;&#xff1a; 代码&#xff1a; 原题截图&#xff1a; 题目大意&#xff1a; 给你两个数组&#xff08;A和B)长度都为n&#xff0c;然你求出一…