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<

效果展示:

 


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

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部