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