关于串口通信问题,求大神讲解

2019-08-17 08:53发布

串口通信最后的时候有一个USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
                                        USART_RX_STA++;


为什么上一句代表数组第二行代表个数代表个数加1
求大神指导

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
peng1554
1楼-- · 2019-08-17 10:10
如果是在没有接收到0x0d的情况下就会执行:
SART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
                                        USART_RX_STA++;
                                        if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//接收数据错误,重新开始接收
前边USART_RX_STA=0,res保存的是串口接收到的数据。在接收数据的过程中每接收一个字节的数据就会保存在缓冲数组中。
同时USART_RX_STA++ 也是为了能把数据保存在缓冲数组中
lvkanger
2楼-- · 2019-08-17 14:01
 精彩回答 2  元偷偷看……
super910906
3楼-- · 2019-08-17 19:40
USART_RX_BUF[USART_RX_STA&0X3FFF]=Res, Res是一个字节的数据,一次中断会接收一个字节的数据存入USART_RX_BUF数组,USART_RX_STA这是数组的指针,存入一个字节的数据当然要偏移一次,也就是加一。USART_RX_STA&0X3FFF这是防止溢出处理。
stm32f103ZE
4楼-- · 2019-08-17 22:16
lvkanger 发表于 2017-6-10 09:16
缓存,当然位置得累加!

OKOKOK
stm32f103ZE
5楼-- · 2019-08-18 02:28
super910906 发表于 2017-6-10 09:19
USART_RX_BUF=Res, Res是一个字节的数据,一次中断会接收一个字节的数据存入USART_RX_BUF数组,USART_RX_S ...

XIEXIE 谢谢谢

一周热门 更多>