(单片机,嵌入式串口,STM32)STM32F429串口IAP,APP程序HardFault_Handler死机

上面是把接收到串口的数据写入flash写入的数据是没有错误的,通过读flash和app的bin文件做了比较

串口接收发送都是采用中断


每次在跳转的时候就会进入HardFault_Handler不知道错在什么地方

每次茬接收完成,把数据写入到flash之后再进行跳转就会进入HardFault_Handler不知道那里有错,

错误的原因是:我虽然设置了起始地址但是没选择如下图,所鉯map里面的地址一直没改变,use memory哪里默认的不是勾选应该把哪里勾选


这样我的问题就解决了 ,有空再把bootloader的整体给写出来,这里个错误找了峩3天时间 ,好浪费啊  希望可以帮助到其他人


这样map就可以看到起始地址的改变了


仿真调试结果发现仿真时居然沒问题!!搜了下关于BOOT跳转APP进入HardFault_Handler解决方案,大多建议BOOT先关闭全局中断APP再开全局中断解决,尝试上述方式问题依旧。

为了赶时间交样品演示先修改Keil优化等级到0级,应付下吧;结果还是没应付得了调试NTC温度采集发现温度数据始终不变!!!(ADC采集通过DMA方式,DMA长度3ADC3通道,分别是电池电压Vbat、NTC电压Vntc、STM32内部基准电压VrefintADC采集顺序依次如上所述排序)Log信息显示采集到的ADC数据错位了:Vrefint、Vbat、Vntc,也就是说NTC电压实际是Vbat难怪温度数据始终不变。

怀疑是不是Keil编译时搞了什么鬼于是找来陈年旧货EWARM-CD-,新建工程遇到问题解决见上一帖子为什么不用新版IAR,因为太占空间啦烧录运行后问题出现转机!!!,重新上下电DMA过来的ADC数据概率性错误,对就是这个概率性让我想到了会不会是BOOT搞的鬼呀,於是修改BOOTBOOT跳转APP之前关全局中断、关ADC采集、关DMA,结果问题搞定了!!!

总结:BOOT跳转APP之前关闭中断关闭DMA。

本人手记用作备忘,他人不解請提问尽量回答。

我要回帖

更多关于 嵌入式串口 的文章

 

随机推荐