STM32控制RGB(WS2812B)灯 ,纳秒(ns)级延时配置
一:WS2812B灯介绍:
1: 脚位:

2:数据

0码:高电平时间220ns-500ns 低电平时间750ns-2us
1码:高电平时间750ns-2us 低电平时间220ns-500ns
复位码:300us以上的低电平
由24位数据控制,高8bit控制绿灯,中8bit控制红灯,低8bit控制蓝灯。
二:STM32介绍
由于STM32时钟教学时钟配置72兆,按照计算纳秒延时应该是可以的,可是通过实际测试,可能由于单条指令也会时间延时,所以延时达不到纳秒,所以只能通过单条指令循环的方法来实现纳秒延时。延时程序如下:
void delay_ns(u32 nus){while(nus--);
}
以下为控制6个灯不同颜色的程序:
uint8_t rgb_data[18] = {0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x7F,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x7F,0xFF};void delay_ns(u32 nus){ //延时程序n为1时大概延时时间为370ns左右while(nus--);
}void send_code(uint8_t * sdata){ //发送亮度数据uint8_t i = 0,n = 0;uint8_t x = 0,y = 0,z = 0;for(x = 0;x < 18;x++){ //发送18字节数据;18 = 一个灯3字节数据*6个灯n = sdata[x];for(y = 0;y < 8;y++){z = ((n<
效果展示:

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
