stm32 调试时卡在 LDR R0, =SystemInit不能进入main

文章讲述了作者在使用STM32F407开发板时遇到程序运行不稳定的状况,主要表现为进入HardFault_Handler和MemManage_Handler异常处理函数。尝试过微库法、重写pfunc法、关闭SystemTick中断等方法未果。最终发现问题是PLL配置的锁相环参数不当,调整PLL_M和PLL_N的值后解决了问题,提醒读者注意PLL配置的正确性。
摘要由CSDN通过智能技术生成

已经有十年没认真用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);
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KiraHan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值