由於許可問題,我有一個應用程序從基爾IDE移植到GNU工具鏈。我已成功地在設備上設置,構建,閃存和運行應用程序。未配置STM32 WWDG中斷觸發
由於某種原因,GNU端的應用程序陷入了無限循環的WWDG的弱鏈接IRQ處理程序中。該應用程序不啓用WWDG,並且在默認情況下在重置時禁用。我還驗證了配置寄存器處於其默認啓動值。
編譯器以外的唯一區別是鏈接器和啓動文件。但是,兩個工具鏈使用的啓動文件和鏈接程序文件都是STM生成的默認文件。
任何想法可能會導致此?我在我的智慧在這裏結束。
使用stm32f103XX,讓我知道是否有任何其他信息會有所幫助。
編輯: 使用下面的評論我能夠斷言它實際上是被觸發的HardFault_Handler。 我有包括回溯輸出低於如果可能的幫助
GDB BT:
0 HardFault_Handler()
1(信號處理程序調用)
2 0x720a3de在?? ()
3 FOO 0x80005534()
回溯停止:前幀等同於該框架
兩件事情中脫穎而出對我來說,雖然IM沒有GDB專家(堆棧損壞?)。 1)foo不是一個函數,它是一個字符的常量數組,2)0x0720a3de不是有效的內存地址,flash地址範圍從0x08000000開始
你確定它真的是WWDG嗎?另一個'while(1);'可能由於優化而共享該代碼。地圖文件是否只顯示該地址處的WWDG? –
你可能正在做某事。看起來,在.elf文件中,所有默認的irq符號都指向相同的地址,我想這意味着WWDG_IRQ的名稱是調試器中的ues。我將爲irq添加stong鏈接函數,以便我可以找出究竟哪一個是罪魁禍首。 – gettingSmarter