STM32学习之启动代码很重要!
扫描二维码
随时随地手机看文章
最近在写一个人机界面,由于硬件同事布板的问题,必须要用到串口4,先开始我还觉得没什么,就是把USART1改成4以及改下开启时钟和配置引脚。
但是事实证明我的想法是多么愚蠢,调了整整2天,UART4发送很好,但是就是在接收时死活的卡在中断之前,就会进入HardFaultException B HardFaultException。真是百思不得其解,我就一步步调试跟踪,也没有发现任何问题,UART4的配置都是正确的,引脚也都没问题。这两天真是调试的快崩溃了。在网上查询该问题,大家也都没有答案,有些人甚至直接说UART4不能用,说心里话我不相信,别个STM那么大的公司,会推出不能用的功能?
在我最无助的时候,我突然想起我们大学老师的一句话,中断出问题,就多看看启动代码的中断向量部分,多去理解。事实证明老师是对的,我花了半天的时间仔细的看了我的启动代码,乖乖启动代码里面居然没有
IMPORT UART4_IRQHandler
IMPORT UART5_IRQHandler
DCD UART4_IRQHandler
DCD UART5_IRQHandler
而串口1、2、3都有。于是我加上了以上代码,串口成功的进入中断,并且接收到了数据。
搞了STM32已经快3个月了,第一次仔细的看了启动代码,之前一直认为启动代码就是现成的,所以从来都不去看,觉得看了也没用。事实证明这样的想法是愚蠢的。
发了下牢骚,但是真心希望大家不要忽略了启动代码。也真心希望以上解决方法能帮助到你。