在usart.c文件,串口中断程序中,条件语句为USART_RX_STA>(USART_REC_LEN-1) ,
但是我怎么觉得应该是 USART_RX_STA>(USART_REC_LEN)
假设接受200个字节,最后一个字节内容为A
执行结束USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;语句时,
USART_RX_BUF[199]的值为A,为最后一个字节。
执行结束USART_RX_STA++;语句时,
USART_RX_STA的值为200。
此时进行判断,if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;即 : if(200>199)USART_RX_STA=0;
判断结果为接收数据错误。但是此时接收数据没错啊?
判断条件不是应该为 : if(USART_RX_STA>(USART_REC_LEN)) 吗?
如果是我理解错了,请指正,谢谢
一周热门 更多>