解决STM32调试卡在LDR R0, =SystemInit无法进入main函数的问题

已经有十年没认真用stm32了。那时候还用2.0.3库。不跑题。哈哈。这次需要用一个F407做事。但是开发板自带例程有时候能跑通,有时候跑不通。现象就是如题所述。
有时候会进入void HardFault_Handler(void)有时候会进入void MemManage_Handler(void)。但更多的时候跑不通,尤其是全速模式很难跑通。
分别尝试了,大神们提供的微库法,重写pfunc法,关闭systemtick中断法。都无效。只有keil4中的cross-module optimization 有点用。改到keil5中的这个选项又不起作用,而且还让编译过程很慢长。
emmm,不啰嗦啦。最后改了时钟配置的锁相环参数。思路就是分母不能太小定律。

/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
  #define PLL_M      50//25
  #define PLL_N      672//336

他们我开始真的以为就是一般的乘除法,也没多看手册。赶紧赶工
实际上是写了这个寄存器。希望能帮到遇到同样问题的人。

/* Configure the main PLL */
RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) |
               (RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24);
物联沃分享整理
物联沃-IOTWORD物联网 » 解决STM32调试卡在LDR R0, =SystemInit无法进入main函数的问题

发表评论