STM32 boot跳转后RCC配置失败问题

项目执行boot跳转后,遇到RCC配置直接进入硬件异常中断,遇到过多种情况,这边做个记录。

跳转前后关中断开中断不过多介绍,主要介绍下花费时间较长的问题排查

1、PLL锁相环问题

在boot中启用了PLL锁相环,需要在APP中切换时钟源,再重新配置PLL。

  /**
    * 因为在BootLoader中已经初始化过锁相环PLL,
    * 所以需先切换下时钟再进行配置锁相环,之后切换回时钟源,
    * 否则会在配置锁相环时异常  HAL_RCC_OscConfig 执行失败
    */
    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK;
    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
    if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
   {
     _Error_Handler(__FILE__, __LINE__);
   }

2、SysTick时钟问题

使用freeRTOS时,SysTick做为操作系统时钟源,在boot跳转前需要先禁用SysTick;

SysTick->CTRL = 0x00;  //禁止SysTick

也曾遇到APP串口初始化不正确的问题,原因是在boot中已经初始启动了串口,在重新配置时不起作用,需要先关闭串口,再重新配置即可。LL_USART_Disable(USART1);

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
STM32G030 Cube软件库中,RCC(Reset and Clock Control)模块用于配置微控制器的时钟系统。配置RCC模块可以设置微控制器的系统时钟源、时钟分频器和时钟使能等。 首先,我们需要选择适合应用需求的系统时钟源。可以选择内部时钟源(HSI、MSI或LSI)或外部时钟源(HSE)作为系统时钟源。在RCC配置中,我们可以通过选择合适的宏定义来配置系统时钟源。 然后,我们需要设置时钟分频器来调整系统时钟频率。可以使用RCC_ClkInitStruct结构体中的参数来配置主时钟(SYSCLK)、AHB总线时钟(HCLK)、APB总线时钟(PCLK1和PCLK2)的分频系数。通过设置不同的分频系数,可以根据需求调整系统的运行速度。 另外,RCC模块还提供了时钟使能功能,用于使能各个外设模块的时钟。通过配置RCC_AHBENR、RCC_APB1ENR和RCC_APB2ENR寄存器,可以使能或禁用各个外设模块的时钟。例如,如果需要使用GPIO模块,需要使能相应的GPIO时钟。 在配置完成后,可以调用HAL_RCC_ClockConfig()函数来应用RCC配置。该函数将根据RCC_ClkInitStruct结构体中的参数进行时钟配置,并更新相应的系统时钟源、分频器和时钟使能。 总而言之,通过在STM32G030 Cube软件库中配置RCC模块,可以轻松实现对微控制器的时钟系统进行灵活的配置。这些配置可以根据具体应用的需求进行调整,从而提高系统运行效率和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值