通过PWM控制串行LED灯

news2024/11/16 15:35:48

资料下载

RGB_LED灯带_5050慢闪_datasheet

STM32控制LED灯带

根据上面的说明书可知,通过修改800KHz的PWM波形的占空比可以控制LED的颜色。
假设现在有3颗串联起来的灯珠,如下图:
典型应用电路
在这里插入图片描述

在这里插入图片描述
如果U1/U2/U3需要显示红/绿/蓝色,根据说明书,需要从DIN发送0x00FF00_FF0000_0000FF(高位先发)。

假设现在U1/U2/U3需要的颜色为从DIN发送0x123456_789ABC_DEF0AA(高位先发),则我们需要从DIN输入如下脉冲:
在这里插入图片描述从上面的PWM波形可以看出,PWM的频率一直都是800KHz(周期为1.25us),但是占空比一直在32%(T0)68%(T1)两个值中变化。
我们平时使用STM32PWM输出时,都是设置一个占空比,在有需要的时候再修改占空比,但是这种方式并不能保证每个PWM波形后都更新一次占空比,那怎么办呢?
这就需要使用到我们的HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);函数了。这个函数通过DMA的方式,指定某个定时器的某一通道,发送LengthPWM波形,每个PWM波形高电平的计数值(相当于占空比)存储在pData数组中,当然使用前需要初始化定时器以及相应的DMA外设。

TIM初始化

void Tim8PwmConfig(void)
{
	Tim8PwmHandle.TimHandleInit.Instance 				= TIM8;
	Tim8PwmHandle.TimHandleInit.Init.Prescaler	 		= 1;
	Tim8PwmHandle.TimHandleInit.Init.Period             = 105 - 1;        // PWM周期,105 * 800KHz = 84MHz
	Tim8PwmHandle.TimHandleInit.Init.RepetitionCounter 	= 0;    // 不需要重加载
	Tim8PwmHandle.TimHandleInit.Init.ClockDivision 		= 0;    // 定时器时钟不需要分频
	Tim8PwmHandle.TimHandleInit.Init.CounterMode  		= TIM_COUNTERMODE_UP;   // 向上计数
	Tim8PwmHandle.TimClkEnable 							= Tim8ClkEnable;        // 使能定时器时钟的函数指针
    Tim8PwmHandle.PwmChannel1.EnableFlag                = false;
	Tim8PwmHandle.PwmChannel2.EnableFlag 				= false;
	Tim8PwmHandle.PwmChannel4.EnableFlag 				= false;
	/** channel 3 使能 **/
	Tim8PwmHandle.PwmChannel3.EnableFlag 				= true;
	Tim8PwmHandle.PwmChannel3.GpioClkInit 				= Tim8Channel3ClkEnable;    // 通道1的GPIO时钟使能
	Tim8PwmHandle.PwmChannel3.GpioInit.Pin				= GPIO_PIN_15;
	Tim8PwmHandle.PwmChannel3.GpioInit.Mode				= GPIO_MODE_AF_PP;
	Tim8PwmHandle.PwmChannel3.GpioInit.Pull				= GPIO_PULLDOWN;
	Tim8PwmHandle.PwmChannel3.GpioInit.Speed			= GPIO_SPEED_FAST;
	Tim8PwmHandle.PwmChannel3.GpioInit.Alternate		= GPIO_AF3_TIM8;
	Tim8PwmHandle.PwmChannel3.GpioPort					= GPIOH;
	Tim8PwmHandle.PwmChannel3.OConfig.OCMode 			= TIM_OCMODE_PWM1;
	Tim8PwmHandle.PwmChannel3.OConfig.OCNPolarity		= TIM_OCNPOLARITY_HIGH;
	Tim8PwmHandle.PwmChannel3.OConfig.OCFastMode		= TIM_OCFAST_ENABLE;
	Tim8PwmHandle.PwmChannel3.OConfig.OCIdleState       = TIM_OCIDLESTATE_RESET;
	Tim8PwmHandle.PwmChannel3.OConfig.OCNIdleState      = TIM_OCNIDLESTATE_SET;
	Tim8PwmHandle.PwmChannel3.OConfig.Pulse				= 0;
	
	if(BspPwmHandleInit(&Tim8PwmHandle) != HAL_OK)
	{}  // todo

	Tim8DMAInit();
}

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

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

相关文章

Vue3 的项目搭建

使用工具: VSCode Volar :编辑器和插件Vite:打包工具Vue3:VueX:存储NodeJs:环境 操作步骤: 安装Node.js安装VsCode安装 Volar创建一个Vite的初始化项目 npm init viteProject name 这一行 我…

Linux系统下刨析hello world背后的秘密

Hi,小伙伴们,大家好!今天给大家讲解Linux系统编程中几个重要的概念。必须理解了这几个重要概念,才能更快的入门Linux系统编程,这是不可或缺的基础知识。看似简单,如果不花一番功夫很难真正的理解它们。需要…

113.(leaflet之家)leaflet根据距离截取线段

听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <!DOCTYPE html> <html>

AAC ADTS格式分析与提取aac音频文件实战

1.AAC⾳频格式简介 AAC⾳频格式&#xff1a;Advanced Audio Coding(⾼级⾳频解码)&#xff0c;是⼀种由MPEG-4 标准定义的有损⾳频压缩格式&#xff0c;由Fraunhofer发展&#xff0c;Dolby, Sony和AT&T是主 要的贡献者。 AAC 包含两种格式&#xff1a;ADIF和ADTS 2.ADIF…

Python基础(二十):面向对象基础

文章目录 面向对象基础 一、理解面向对象 二、类和对象 1、理解类和对象

已知Retangle2的中心点坐标,角度,半长,半宽,计算四个顶点坐标和四个线段中点坐标

Halcon可以通过最小外接矩型算子获取Retangle2的中心点坐标&#xff0c;角度&#xff0c;半长&#xff0c;半宽。但是却没有四个顶点坐标和四个线段中点坐标。下面的代码是获取四个顶点坐标和四个线段中点坐标的方法。 gen_rectangle2 (Rectangle, 300, 200, 0.39, 100, 50) C…

E5071C网络分析仪

18320918653 E5071C 安捷伦E5071CAgilent 8.5G网络分析仪二手E5071C 频率范围&#xff1a;300 kHz至8.5GHz 在测试端口处保持125 dB动态范围&#xff08;典型值&#xff09; 宽动态范围&#xff1a;在测试端口上的动态范围> 123 dB&#xff08;典型值&#xff09; 极快的…

GDB调试技巧实战--找到打开某个文件的地方

问题&#xff1a; 本系列期望用一个简单的实例来展示一些调试技巧。不时更新。 本期问题是&#xff1a;如何才能快速定位到打开某个文件的代码&#xff1f;&#xff08;对应open/fopen, 读者可举一反三到其它系统函数&#xff09;。当面对屎山代码时&#xff0c;GDB的条件断点…

基于R的Bilibili视频数据建模及分析——变量相关性分析篇

基于R的Bilibili视频数据建模及分析——变量相关性分析篇 文章目录基于R的Bilibili视频数据建模及分析——变量相关性分析篇0、写在前面1、数据分析1.1 变量相关性分析1.2 单元数据直观展示1.3 多元数据直观展示2、多元数据与回归分析2.1 简单相关分析2.2 简单线性回归分析2.3 …

从0到1搭建大数据平台之调度系统

大家好&#xff0c;我是脚丫先生 (o^^o) 大数据平台核心之一在于数据计算&#xff0c;分为离线计算和实时计算任务。 然而任务是离不开调度的。比如&#xff1a;我们要进行定时抽取业务数据库 的数据&#xff0c;定时跑hive/spark任务&#xff0c;定时推送日报、月报指标数据…

数字档案馆系统测试前准备工作(“指标表”和“具体要求”可下载)

数字档案馆系统测试是国家档案局组织开展的一项针对县级以上国家综合档案馆数字档案馆建设情况的绩效评价工作。数字档案馆系统测试的评分依据是《数字档案馆系统测试指标表》&#xff08;后台回复“指标表”可下载&#xff09;&#xff0c;测试采用百分制。测试结果达到80分以…

华脉智联电力行业技术解决方案

一、前言 所谓电力应急&#xff0c;就是快速处理突发紧急事件尽量减少因供电中断造成的损失&#xff0c;快速修复故障设备或线路&#xff0c;使电力生产和运营恢复正常。重大施工事故、公共紧急事件、性质恶劣的违章操作、蓄意破坏、自然灾害等&#xff0c;都极易引发大规模停…

论文浅尝 | Future Event Prediction Based on Temporal KG Embedding

笔记整理&#xff1a;杨露露&#xff0c;天津大学硕士链接&#xff1a;https://www.techscience.com/csse/v44n3/49146/html动机对未来事件的准确预测在许多领域为社会带来巨大利益&#xff0c;减少损失&#xff0c;如内乱、流行病和犯罪。知识图谱是描述和建模复杂系统的通用语…

【状态估计】将变压器和LSTM与卡尔曼滤波器结合到EM算法中进行状态估计(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

讨教大学|六西格玛之属性值数据一致性分析

相信大家在日常的工作中肯定会遇到这样一种情况&#xff1a;产品的质量特性属于外观特性&#xff0c;即 需要靠人工判断产品是不是符合标准。当遇到客户投诉&#xff0c;或者内部报废率比较高的时候&#xff0c;经 常会遇到客户和领导的挑战&#xff1a; 如何保证员工清楚的知…

IO、NIO、BIO傻傻分不清吗,让我对象告诉你~~

1、Stream 与 Channel stream 不会自动缓冲数据&#xff0c;channel 会利用系统提供的发送缓冲区、接收缓冲区&#xff08;更为底层&#xff09;stream 仅支持阻塞 API&#xff0c;channel 同时支持阻塞、非阻塞 API&#xff0c;网络 channel 可配合 selector 实现多路复用二者…

电商系统概要设计

设计一个最小化的电商系统&#xff0c;理清楚电商系统的架构。目前唯一能确定的是&#xff0c;老板要做一个电商系统。具体做成什么样&#xff0c;还不清楚。你需要和老板讨论需求。 你&#xff1a;“咱们要做的业务模式是C2C、B2C还是B2B呢&#xff1f;” 老板&#xff1a;“…

CES 2023:NVIDIA发力元宇宙与汽车市场

作为全球规模最大、影响最为广泛的国际消费电子展&#xff0c;2023年的CES&#xff08;Consumer Electronics Show&#xff09;在美国拉斯维加斯如约而至。众所周知&#xff0c;作为全球消费电子产业发展的风向标&#xff0c;每年的CES都汇聚了各大科技企业最先进的技术与产品。…

Renesas setting-文件导入

导入工程 1.1, 文件\从文件系统选中打开项目… 1.2, 打开xpg_app文件 链接文件 2.1&#xff0c;选中项目\右键\属性 2.2&#xff0c;删除文件&#xff08;在不同电脑中绝对路径不同&#xff09; 属性\路径和符号&#xff0c; 源位置&#xff08;delete C 文件&#xff09;&…

在未联网的计算机中部署 yum 源和 EPICS 环境

1. 基本背景 EPICS 软件仓库&#xff1a;192.168.206.234:8888 安装方式&#xff1a;yum 2. 配置跳板机 跳板机功能&#xff1a;借助ssh 隧道服务进行端口转发&#xff0c;使未联网的计算机能够访问软件仓库。 将未联网的计算机与一台申请了无线校园网的笔记本电脑进行有线…