我用了一块STM8F103F3P,TSSOP20封装的最小系统板,直接连接WS2811的灯条,用数组来存贮要发送的数据,发送是这样写的: /*********************** 函数功能:发送LED_DATA数组的数据 输入参数:无 输出参数:无 备 注:无 ***********************/ void send_string_data() { u8 i; sim();//关总中断,防止发送数据中出错 for(i=0;i<size;i++) { WS2811_SendByte(LED_data[i][1]); WS2811_SendByte(LED_data[i][0]); WS2811_SendByte(LED_data[i][2]); } Reset(); rim();//开总中断 } 上面的发送程序在51中验证过,是没问题的,想想也不应该有问题,但是在STM8S103中,始终是发送的数据不对,出现了颜色不对的现象,但是我把程序更改成这样: /*********************** 函数功能:发送LED_DATA数组的数据 输入参数:无 输出参数:无 备 注:无 ***********************/ void send_string_data() { u8 i; sim();//关总中断 for(i=0;i<size;i++) { if(i==0) { WS2811_SendByte(LED_data[0][1]); WS2811_SendByte(LED_data[0][0]); WS2811_SendByte(LED_data[0][2]); } else if(i==1) { WS2811_SendByte(LED_data[1][1]); WS2811_SendByte(LED_data[1][0]); WS2811_SendByte(LED_data[1][2]); } else if(i==2) { WS2811_SendByte(LED_data[2][1]); WS2811_SendByte(LED_data[2][0]); WS2811_SendByte(LED_data[2][2]); } else if(i==3) { WS2811_SendByte(LED_data[3][1]); WS2811_SendByte(LED_data[3][0]); WS2811_SendByte(LED_data[3][2]); } else if(i==4) { WS2811_SendByte(LED_data[4][1]); WS2811_SendByte(LED_data[4][0]); WS2811_SendByte(LED_data[4][2]); } } Reset(); rim();//开总中断 } 更改成这样后,颜色问题解决了,功能正常了。。。。。。。 有没有知道原因的大神,解释一下,这是什么原因? 大过年的,在此祝各位明年工作顺利,用啥U都顺心! |
测试标签123
IAR FOR ARM和IAR FOR STM8无法共存,
STM8L052,液晶内部电源怎么用?
STM8S103飞线外接芯片,I2C不能得到slaveAddress应答,通讯失败。
STM8S105C6T6 UART2串口,能接收数据,不能发送数据
STM8S105K4 串口2 无奇偶校验,也能接收 偶校验的 数据
在STM8S的IAP使用中断和APP使用中断问题
STM8L151 SMBUS设计
STM8S103F复位异常
STM8L的LCD调试时不亮
这句里头的 size ,在哪里定义的?
如何传递进来的?
感谢您的回复:
在这个子程序的开头,头文件的下一行,用的是:#define size 5,5代表的是5个芯片
在循环中每次操作函数后插入延时应该就能解决
回大神,谢谢您的回复,加延时不行!
回大神,我用的是IAR1.40,我感觉用STM8这个芯片出的问题都很怪,可能像您所说的是编译器的问题,不知道大神您推荐使用哪个版本的编译器好!谢谢