: 脚位:
【资料图】
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< if(z){ LED2 = 1; //灯的控制脚位设置为输出高 delay_ns(7); LED2 = 0; delay_ns(1); //灯的控制脚位设置为输出低 }else{ LED2 = 1; delay_ns(1); LED2 = 0; delay_ns(7); } } } } int main(void) { delay_init(); //延时函数初始化 LED_Init(); //初始化与LED连接的硬件接口 LED2 = 0; delay_us(310); //发送数据前发送300us以上的复位数据 send_code(&rgb_data[0]); delay_us(310); send_code(&rgb_data[0]); //控制灯的数据发送两次以防其他影响 LED2 = 0; delay_ms(310); LED2 = 1; while(1); } 效果展示: 原文链接:https://blog.csdn.net/weixin_47869185/article/details/121718268
下一篇:最后一页
广告
X 关闭
广告
X 关闭
近日,深圳市司法局通过官网公布《深圳经济特区燃气管理条例(征求意见稿)》(以下简称《条例(征求意见稿)...
今年5月22日是第29个国际生物多样性日。当天,深圳市生态环境局主办的共建地球生命共同体主题活动在大鹏...
日前,深圳市残联、市财政局、市人社局联合发布《深圳市促进残疾人就业办法》(以下简称《办法》),《办...
5月18日下午,2021年度深圳十大法治事件十佳最美政法干警发布仪式顺利举办,现场发布十大法治事件十佳最...
最新一期《深圳市人民政府公报》发布了《深圳市妇女发展规划(2021-2030年)》(以下称《妇女发展规划》)《...
记者5月17日从深圳市交通运输局获悉,近期,该局对全市道路英文标识错误展开系统排查,力争7月中旬完成...
5月17日,市文明办发布4月份城市交通文明指数。4月,深圳市城市交通文明指数为90 75分,比2月减少0 05...
记者从广东省生态环境厅获悉,《广东省碧水保卫战五年行动计划(2021-2025年)》(简称《行动计划》)近日正...
随着全省空气质量日益提升,广东蓝霸屏已成常态。记者近日从广东省生态环境厅了解到,得益于广东推进产...
日前,深圳市规划和自然资源局编制并印发了《深圳市海洋自然灾害防灾减灾专项规划(2021-2025年)》,旨在...