一、報錯
1.未發現選擇目標
原因:硬件連接存在問題
解決方案:將數據線重新插拔或更換接口、數據線
2. 燒錄終止
原因:燒錄前未點擊仿真器復位按鈕
解決方案: 進行燒錄前點擊仿真器復位按鈕(下載過程中不能按)
注:是點擊仿真器復位按鈕不是點擊板子上的按鈕。
3.編譯器在嘗試鏈接程序時找不到名為?main
?的函數定義
原因: 未知(多種原因可造成該問題:定義缺失、鏈接器的設置......)
?解決方案:
1.Project--->option--->C/C++Compiler--->output中的generate debug information選項勾上。
?2.project--->options--->linker里面的format設成debug了
3.更換設備嘗試(電腦)?
?4.內存爆炸
Error[e16]: Segment XDATA_Z (size: 0x1d90 align: 0) is too long for segment definition. At least 0x210 more bytes needed.
?原因:變量定義問題,數據量過大,定義的XDATA_Z段(外部數據段)的大小超出了其在內存中分配的空間。
?解決方案:
1.優化程序——減少全局變量和靜態變量
2.修改XDATA大小(不建議,可能導致硬件不支持)
3.將數據定義成const的,這樣數據就會被放到flash里。
二.實用小技巧
1.Erase flash
擦除設置:可以避免原先存儲的內容干擾新程序
2.Rebuild All
首次打開一個項目并進行編譯時或修改多個文件后,使用Rebuild All。
Rebuild All是對整個工程進行清理、重新編譯、鏈接,耗費時間較長。
與Rebuild All相關的操作還有兩個:
- Compile:只對當前打開的C文件進行語法檢查,而不進行鏈接。這在你只需要檢查單個文件的語法時很有用。
- Make:對工程所有打開的C文件進行語法檢查和鏈接,但只編譯有改動的文件或設置變動的文件。這在你修改了少量文件并希望快速看到結果時很有用。
3.PAN ID?
多個協調器同時工作,解決終端匹配錯誤問題。
注:若周圍存在一樣的ID號則協調器組網時ID自動修改。燒錄終端時ID號是多少那么終端就會接入該ID號的網絡。(有效范圍內確保唯一性)
點贊+收藏,探索不迷茫!