![]() |
發布時間: 2020-9-6 20:36
正文摘要:程序在調試狀態一步一步執行發送字符串都能正常的發送,但全速運行時發送1和0以外的字符時,就出現錯誤了 求求大佬幫忙找找原因 或者給個解決思路 不勝感激 #include <stm8l ... |
采蘑菇的小宋 發表于 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); //加入發送標志位檢測 } } |