stm32F405RGT6概率性进入硬件错误中断hard fault

2019-07-21 03:40发布

原子哥和众高手们好,我的做项目对体积有要求,所以选择了stm32F405RGT6这种64角的芯片,使用官方提供的库函数开发。写了最简单的IO口亮灯的程序,程序会概率性卡死到无法启动,使用JLink发现程序会概率性的进入hard fault,一步一步寻找出错点,发现在官方文件在system_stm32f4xx.c中的 systeminit() 函数在执行最后一句  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;的时候会概率性进入hard fault。而且发现只要将断点设在这里,让程序停一下,再执行就不会进入hard fault,感觉是程序在执行main函数之前哪里没有准备好,需要停一下才能顺畅。

在组建工程时我按照探索者教程中的工程组件方式组建,其中stm32F405RGT6和stm32F407ZGT6的工程组建只有芯片选择不同,其他文件都是通用的,在网上查过很多,在micro Lib 的选项打钩了也没有解决问题。上边那句  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;应该是和flash的地址设置有关,不知道这里应该是怎么设置,原版的库函数是否需要修改,谢谢原子哥和众高手们  最后附上程序
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。