论坛元老
 
- 积分
- 8670
- 金钱
- 8670
- 注册时间
- 2020-5-11
- 在线时间
- 4135 小时
|
发表于 2020-8-20 14:19:30
|
显示全部楼层
本帖最后由 LcwSwust 于 2020-8-20 15:53 编辑
得有i++才行啊。
或
还要想好什么时候清0.
如果是处理一帧数据,我们的做法是这样:
- //--------------------------------------------------
- //全局变量
- //--------------------------------------------------
- U8 uart1rec =0; //数据域收到的字节数
- U8 uart1buf_rx[20];//接收缓冲
- //--------------------------------------------------
- //模拟串口1中断
- //数据直接存入数组
- //--------------------------------------------------
- void uart1_mint(U8 ud)
- {
- uart1tick=5;//帧计时
- if(uart1rec==0)//帧头 16 09 01
- {
- if(ud==0x16)
- uart1buf_rx[uart1rec++]=ud;
- }
- else if(uart1rec==1)
- {
- if(ud==0x09)
- uart1buf_rx[uart1rec++]=ud;
- else
- uart1rec=0;
- }
- else if(uart1rec==2)
- {
- if(ud==0x01)
- uart1buf_rx[uart1rec++]=ud;
- else
- uart1rec=0;
- }
- else
- {
- uart1buf_rx[uart1rec++]=ud;
- if(uart1rec>=10)//帧长10字节
- {
- uart1_proc();//处理数据
- uart1rec=0;
- }
- }
- }
复制代码
|
|