OpenOCD + STLink 初次连接芯片时 RCC 配置失效

/ 0评 / 0

最近遇到一个怪问题,同样的代码和板子,板子还是官方的DISCO,仿真器当然也是板载的,配置非常简单.

其实就只有一个简单的时钟设置,使用外部HSE倍频至工作频率.

我们用任何复位方式,在Keil和IAR中,进入调试后,全速运行至死循环,时钟配置都是正确的.

同一个工程,使用OpenOCD进行调试,并不编译,直接引用Keil生成的axf转elf来调试发现没有用HSE作为PLL时钟源.

但是如果这时候你只要复位再运行就可以了,猜测是OpenOCD复位指令没正确发送到STLINK,其他放真器没有问题,当然HAL库也有问题,解决方法也非常简单,在PLL配置后源不是HSE就复位.

  LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSE_DIV_1, LL_RCC_PLL_MUL_9);

  if(LL_RCC_PLL_GetMainSource() != LL_RCC_PLLSOURCE_HSE)
  {
    NVIC_SystemReset();
  }
  
  LL_RCC_PLL_Enable();
  

这个在正常运行中不会触发,当然如果产品本身是故障的自然也死在里面了.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注