![]() |
發布時間: 2020-7-16 10:02
正文摘要:STC8G單片機使用printf()函數發送數據,出現錯亂現象: void UartIsr() interrupt 4 { int d=0,e=1,f=2,g=3; if (RI) ... |
重定義 printf函數功能 ,即fputc函數 |
兩個問題: 1. 你的串口發送如果選擇hex的話,就不能填1了吧,應該填31吧!這個你再核對下。可以下載sscom試試。 2. 這個很重要:中斷中不能執行耗時太長的任務,否則會對整個系統造成影響。 你在串口中斷中調用printf就不行,因為printf太耗時了,如果你要做回環測試的話,將中斷收到的數據先放到一個全局變量的數組中暫時存起來,等退出中斷后,在大循環中判斷是否收到數據,如果收到數據,則將收到的數據用printf打印出來。這樣就不會出現只能收到1字節的問題了。如果你已經這樣改了,還不能收到,那么就是你的中斷響應太慢了,這時候就要降低波特率來降低中斷觸發的速度。 |