采蘑菇的小宋 发表于 2020-9-7 13:33 原来错误在这 我就说为什么单步调试时能发送成功,全速运行的时候就出错 感谢大佬的回答 ![]() |
把“hex显示”旁边的钩去掉 |
1、使用单片机串口往上发送数据时,一定要检测与发送相关的标志位,比如TXE(发送数据寄存器空)、TC(发送完成)等,若不检测等待这些标志位,连续发送时就会出现问题; 2、所以,若单片机串口间隔较长时间发送单字节,是不会有啥问题的,比如你这段响应‘0’和‘1’的程序; if(REData=='0'||REData=='1') { USART_SendData8(USART1,REData); //将接收到的数据发送出去 } 3、但是连续发送时就会出现问题,比如你发送字符串那段程序,加一句标志位检测就可以了; else { for(i=0;i<6;i++) { USART_SendData8(USART1,str[i]); //错误 while(USART_GetFlagStatus(XXX)==XXX); //加入发送标志位检测 } } |