1. 程式人生 > >STM32F10在iap和app模式下,除錯模式串列埠可以通訊,下載後卻不能通訊的問題

STM32F10在iap和app模式下,除錯模式串列埠可以通訊,下載後卻不能通訊的問題

開發環境iar for arm ,開發晶片是STM32F103
問題點:在除錯模式下,usart1可以接受和傳送資料,但是下載到晶片內部時,或者使用iap升級之後就出現資料無法接受的問題。

第一就像想到的啟動檔案和中斷向量表沒有配置好:
如圖所示:ICF配置
ICF配置APP的起始地址
這一張是具體的記憶體資訊配置
對比之前的工程,和百度上的搜尋結果發現是對的。
經過非常痛苦的焦慮之後,開始冷靜下來,想想到底怎麼回事、如何查詢。
第一:我的配置確認沒錯,啟動檔案和icf檔案都是正確的。
第二:既然usart1在除錯下可以接受說明基本的配置沒有錯誤,既然下載後不能用,說明他的中斷在其他地方被取消掉了。問題是什麼地方和usart可以用同意部分資源吶,除錯和下載後就多了iap部分的影響,而iap和app的程式的初始化有一部分是重疊的。所以對比iap和app程式吧。。。。

突然間發現我的iap裡面的wifi通訊使用的是usart1,但是資料接收使用了DMA緩衝。。。
在我app裡面不需要使用wifi通訊,所以就直接用usart1中斷接收了。。。
問題來了:iap初始化好了之後,先判斷是否存在升級標誌,在判斷是否存在app,然後進入app,著中間是沒有間斷(CPU一直在執行),所以有一些被啟用的外設是保持的,除非在app初始化裡面被重新配置了。。。既然iap裡面用了DMA接收usart1資料,app裡面就是沒用也應該disable。。。
改完發現好了。。。

血的教訓:iap和app裡面的上電初始化一定要仔細對比,iap內部儲存的初始化要確保在app裡面被遮蔽或者重新初始化。

廢話太多了!