STM32學(xué)習(xí)之啟動(dòng)代碼很重要!
最近在寫一個(gè)人機(jī)界面,由于硬件同事布板的問題,必須要用到串口4,先開始我還覺得沒什么,就是把USART1改成4以及改下開啟時(shí)鐘和配置引腳。
但是事實(shí)證明我的想法是多么愚蠢,調(diào)了整整2天,UART4發(fā)送很好,但是就是在接收時(shí)死活的卡在中斷之前,就會(huì)進(jìn)入HardFaultException B HardFaultException。真是百思不得其解,我就一步步調(diào)試跟蹤,也沒有發(fā)現(xiàn)任何問題,UART4的配置都是正確的,引腳也都沒問題。這兩天真是調(diào)試的快崩潰了。在網(wǎng)上查詢該問題,大家也都沒有答案,有些人甚至直接說UART4不能用,說心里話我不相信,別個(gè)STM那么大的公司,會(huì)推出不能用的功能?
在我最無助的時(shí)候,我突然想起我們大學(xué)老師的一句話,中斷出問題,就多看看啟動(dòng)代碼的中斷向量部分,多去理解。事實(shí)證明老師是對的,我花了半天的時(shí)間仔細(xì)的看了我的啟動(dòng)代碼,乖乖啟動(dòng)代碼里面居然沒有
IMPORT UART4_IRQHandler
IMPORT UART5_IRQHandler
DCD UART4_IRQHandler
DCD UART5_IRQHandler
而串口1、2、3都有。于是我加上了以上代碼,串口成功的進(jìn)入中斷,并且接收到了數(shù)據(jù)。
搞了STM32已經(jīng)快3個(gè)月了,第一次仔細(xì)的看了啟動(dòng)代碼,之前一直認(rèn)為啟動(dòng)代碼就是現(xiàn)成的,所以從來都不去看,覺得看了也沒用。事實(shí)證明這樣的想法是愚蠢的。
發(fā)了下牢騷,但是真心希望大家不要忽略了啟動(dòng)代碼。也真心希望以上解決方法能幫助到你。
編輯:admin 最后修改時(shí)間:2018-05-18