|
发表于 2019-9-28 09:12:48
|
显示全部楼层
调度器:
https://www.amobbs.com/thread-5702323-1-1.html
我的串口数据处理:
- //--------------------------------------------------
- //串口1发送一串数据
- //--------------------------------------------------
- void uart1sendframe(U8 s[],U8 size)//发送一帧
- {
- idata U16 i;
- idata U8 chk=0;
- uart1_sendbyte(0xAA); //开始
- uart1_sendbyte(size); //消息长度
- chk=0x55+size;
- for(i=0;i<size;i++) //数据区
- {
- chk=chk+s[i]; //计算校验和
- uart1_sendbyte(s[i]);
- }
- uart1_sendbyte(chk); //校验
- }
- //--------------------------------------------------
- //模拟串口1中断
- //--------------------------------------------------
- void uart1_mint(U8 ud)
- {
- switch(uart1state)
- {
- case 0://起始码0
- if(ud==0XAA)
- {
- uart1state++;
- uart1chk=ud;//从第1字节开始计算校验
- }
- break;
- case 1://帧长
- uart1size=ud;//计录数据长度
- uart1chk+=ud;//计算校验
- uart1rec=0;
- uart1state++;
- if(uart1size>UARTBUFSIZE)
- {
- uart1state=0;
- }
- else if(uart1size==0)
- {
- uart1state++;
- }
- break;
- case 2://数据
- uart1buf_rx[uart1rec]=ud;
- uart1chk+=ud; //计算校验
- uart1rec++; //接收数据计数
- if(uart1rec>=uart1size)
- uart1state++;
- break;
- case 3://校验
- if(ud==uart1chk)
- {
- uart1_proc();//帧数据处理
- }
- uart1state=0;
- break;
- default:
- uart1state=0;
- uart1tick=0;
- break;
- }
- }
复制代码 |
|