初级会员

- 积分
- 75
- 金钱
- 75
- 注册时间
- 2017-12-27
- 在线时间
- 20 小时
|
1金钱
最近测试F4串口接收程序,发现一些不理解的问题:
串口在单片机复位之后第一次接收的数据Array2[]和发送的数据Array1[]是一样的 ,即 Array2[] == Array1[] ;
之后每次接收到的数据Array4[]和发送的数据Array3[]都不一样,而且有一个共同的特点,即 Array4[] == ‘0x00’+Array3[],就是说每次接受到的数据 第一个byte都是0x00,从第二个byte开始才是发送的数据。
请问各位朋友,这是怎么回事?有什么解决办法?
谢谢各位解答!
说明:
数据末尾使用 0x0d,0x0a作为结束符。
- void DEBUG_USART_IRQHandler(void)
- {
- static u8 ucTemp[2]= {0x00, 0x00};
- static u8 i=0 ;
- if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE)!=RESET)// && (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_ORE) != RESET) )
- {
- USART_ClearFlag(DEBUG_USARTx,USART_FLAG_ORE);
-
- gu8_USART_RX_BUFF[usart_buffer_len] = USART_ReceiveData( DEBUG_USARTx );
- if(usart_buffer_len > 4 )
- {
- if( gu8_USART_RX_BUFF[usart_buffer_len-1] == 0x0D && gu8_USART_RX_BUFF[usart_buffer_len] == 0x0A)// && i == (gu8_USART_RX_BUFF[1] -1) )
复制代码
|
-
首字符错误的数据
-
正常数据
|