初级会员

- 积分
- 61
- 金钱
- 61
- 注册时间
- 2015-5-12
- 在线时间
- 0 小时
|
5金钱
u8 USART_RX_BUF[USART_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.
//接收状态
①
//bit15, 接收完成标志
//bit14, 接收到0x0d
//bit13~0, 接收到的有效字节数目
u16 USART_RX_STA=0; //接收状态标记
②
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾)
{
Res =USART_ReceiveData(USART1);//(USART1->DR); //读取接收到的数据
if((USART_RX_STA&0x8000)==0)//接收未完成
{
if(USART_RX_STA&0x4000)//接收到了0x0d
{
if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始
else USART_RX_STA|=0x8000; //接收完成了
}
请教各位大神,上面红色部分的问题:
①那里数据位不是8位+1位停止位一共9位吗?怎么会有下面几位呢?
//bit15, 接收完成标志
//bit14, 接收到0x0d
//bit13~0, 接收到的有效字节数目
②接收到的数据为什么是0x0d 0x0a结尾??
|
最佳答案
查看完整内容[请看2#楼]
http://www.openedv.com/posts/list/18508.htm 看看这个帖子吧,也许会有收获
|