|
|
按道理讲,单片机中断的时候,它会先去处理中断程序,待中断程序处理完毕后才继续进行其他的程序。WS2812是时序相对严格的一款外设,因为它的脉冲短(ns级),任何风吹草动都会影响它的脉冲长短。
本次的测试环境如下:
单片机:STC32G144K246
系统频率:40MHz
WS2812驱动模式:软件延时和PWM
WS2812发光:主程序轮流(间隔500ms)发红、蓝、绿三色光
大循环代码:
- while(1)
- {
- printf("test---");
- WS2812_rand_color(1,0,0);
- delay_ms(500);
- WS2812_rand_color(0,1,0);
- delay_ms(500);
- WS2812_rand_color(0,0,1);
- delay_ms(500);
- }
复制代码
中断干扰:通过串口连续向单片机发送数据,而串口接收中断后返回收到的数据,也就是说,中断不定时,无规律。串口通讯波特率:115200.
串口中断代码如下:
- void Uart1_Isr(void) interrupt 4
- {
- if (TI)
- {
- TI = 0;
- fBusy = 0;
- }
- if (RI)
- {
- ckdat=SBUF;
- SBUF=ckdat;
- RI = 0;
- }
- }
复制代码
通过测试,无论是PWM还是软件延时模式驱动ws2812,串口中断均不会对ws2812的色光发生影响,这真是百思不得其解。PWM暂且不说,软件延时模式驱动ws2812,任何中断都会对其延时产生巨大的影响,为什么不见ws2812的偏色现象?
测试视频网址:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|