原因很多,主要原因是非法访问导致的。
具体到平常代码实现过程中,主要有程序跑飞、指针未初始化和野指针、寄存器操作不当、堆栈溢出、数组越界等。
在线调试STM32 卡在LDR R0, = SystemInit_ExtMemCtl
程序卡在在线调试STM32 卡在LDR R0, = SystemInit_ExtMemCtl的解决办法如下:
出现最多的情况就是设置的 断点过多,可以把断点全部删除试试看 ,把断点设置在主函数。
在程序中使用了C库(printf),那么进入Option---target将usemicroLib勾选上。
硬件原因,主芯片,或者晶振有问题,更换一下就好了
程序跑飞了或者进入某些严重错误的中断函数里面去了,你可以仿真看看具体进入哪个中断函数了,以此来判别错误类型。
一般的错误有 数据溢出(数据超过最大值了),除数为零,越界访问(一般是数组)等等。我曾经使用了sprinft这个函数也造成错误,后来吧代入的数组的长度改为偶数就好了。
你说的是不是,姓错误时跳到了这个中断HardFaultException()。如果是,那么一般情况下是你的数组定义太大了。按你题目的意思,你在接收数据的时候,发现错误,是不是你没对错误数据进行正确处理,导致数组溢出。
在keil中使用stlink调试时,点击运行,程序始终跑不起来,可能的运行是:在上一次调试中,有程序运行错误,例如:数组访问越界,导致keil中的项目工程文件出现错误,所以跑不起来,可以新建工程解决该问题,问题主要出现在keil的工程文件上
本文标签:stm32大数组程序卡住