STM32学习之启动代码很重要!

demi的头像

最近在写一个人机界面,由于硬件同事布板的问题,必须要用到串口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个月了,第一次仔细的看了启动代码,之前一直认为启动代码就是现成的,所以从来都不去看,觉得看了也没用。事实证明这样的想法是愚蠢的。

来源:网络