高级会员

- 积分
- 757
- 金钱
- 757
- 注册时间
- 2020-5-11
- 在线时间
- 71 小时
|
10金钱
我自己写的一个,不是使用串口接收中断接收PC端发送过来的一个字符,但是最后STM32发送回串口调试助手的数据一直都是第二位字符,如图,发送 'a'才可以输出a,而发送 1 就会是0x0D的空字符。
- int main(void)
- {
- LED_Init();
- delay_init();
- uart_init(9600);
-
-
- printf("test begins");
- while(1)
- {
- //if(USART_GetITStatus(USART1, USART_IT_IDLE))
- //{
- if(USART_GetITStatus(USART1, USART_IT_RXNE)) //若接收到数据
- {
- u8 Receive_Data = 0;
- Receive_Data = USART_ReceiveData(USART1); //读取数据后,RXNE标志位自动清零;
- printf("Receive Succsed: %2x \r\n", Receive_Data);
- if(Receive_Data == 0x61)
- LED0 = !LED0;
- //USART_ClearFlag(USART1,USART_IT_RXNE); //手动清零
- }
- else
- {
- delay_ms(1000);
- //printf("Running....\r\n");
- delay_ms(1000);
- }
- }
- //}
- }
复制代码 代码如上,我怀疑是波特率影响了然后导致数据丢失,把波特率从115200调到了9600,还是会丢失第一个数据。很纳闷。求大佬解决。
|
最佳答案
查看完整内容[请看2#楼]
你这个接收方式有bug吧,你是不是勾选了发送新行?
你这种轮询的接收方式,不要指望一次接收2个字符了,一个字符一个字符的发,应该就没问题。2个字符,很有可能会错乱
|