最近在以前的項目上添加串口3通訊后,程序一進入接收中斷后就產生HardFault_Hander。串口3發送數據一切正常,當打開串口3接收功能時,程序就處於HardFault_Hander狀態,而導致死機。查詢串口3的所有配置,都沒有發現問題。在網上查詢好久,也沒有找到解答的辦法。
花了近二天時間后,突然發現項目的啟動文件配置錯誤了。給配置為了startup_stm32f10x_ld.s。后打開startup_stm32f10x_ld.s文件查看,發現其中根本沒有配置UARTS3的中斷向量。
LD.S配置圖片:可以發現其中根本沒有配置UART3的向量中斷。所以當串口3有接收中斷時,中斷得不到處理就會進入HardFault_Hander。(發送沒使用中斷,所以不會進入中斷)
HD.S圖片中是有配置所有外設。
發現是此問題后,將啟動文件改為HD.S重新編譯,程序就沒有出問題了。
此處是因為個人不小心添加錯了啟動文件導致的。希望以后碰到此類問題的朋友注意檢查一下是不是發生此類低級錯誤。