新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > STM32F103使用TIM+DMA驱动WS2812灯带

STM32F103使用TIM+DMA驱动WS2812灯带

作者:lulugl 时间:2025-11-02 来源:EEPW 收藏

ws2812做为RGB灯,在很多场合都是非常有用的,我准备使用STM32H755的M4内核驱动时,遇到了一些问题,因此先用来验证一下,找到库存的STM32103的开发板,来实现驱动,特记录如下:

1.使用STM32CubeMX 新建基于C8Tx的工程

image.png

2.打开外部时钟,因为内部时钟最高只能跑到64MHz。

1762089399963862.png

3.在时钟配置界面,配置72MHz的总线时钟。

1762089459555332.png

从上面我们得到Timer的时钟总线为72MHz。

4.打开TIM1的配置界面配置如下:

image.png

这里我们需要将GPIO的输出速度选择为高速模式。

5.配置pwm

1762089674154126.jpg

在定时器配置中,我们根据WS2812 的最大传输速率800kbps,设置定时器不分频和计数周期为89+1,这样下来波形的频率为72 M /(89+1) = 800 K,并且一个波形的周期为1 / 800 = 1.25 us 。

6.配置DMA

1762089717146785.png

我们打开DMA的界面,添加一个DMA,选择方向为从内存到外设,内存为递增,数据宽度为半字节,即16 bit。

到此界面配置结束,生成工程后,使用mdk 打开工程。

【代码添加】

1.新建RGB.c 添加代码如下:

image.png

image.png

image.png

2.添加RGB.h 代码如下:

image.png

image.png

3.Main

首先引RGB.h头文件

再使用extern一下数组

image.png

在while中添加周期的亮灯:

image.png

【验证】

将ws2812 的DI 引脚接到PA8,VCC 与GND 接到开发板的电源上,将程序下载到开发板后,可以看到如期点亮了WB2812。

(本文来源于《EEPW》


关键词: 202510 STM32F103 TIM+DMA

评论


相关推荐

技术专区

关闭