(1)STM32固件库默认8MHz时钟修改为16MHz的操作

本文详细介绍了如何将STM32固件库默认的8MHz系统时钟修改为16MHz。通过分析`stm32f37x.h`和相关手册,找到了时钟配置的关键步骤,涉及`SystemCoreClockUpdate()`、`RCC_CR_HSEON`、`SetSysClock()`和`SystemInit()`等函数。关键在于修改`HSE_VALUE`宏定义以及调整`RCC_CFGR_PLLXTPRE`预分频器设置。
摘要由CSDN通过智能技术生成

    最近在跟着ZF学习无人机,到了软件编程部分,首先是产生PWM的代码,芯片使用的是STM32F373CCT6,Keil创建Project就不说了,关于固件库的移植做了一个图表便于记录。

图1

 固件库默认的时钟是8MHz,实际使用的16MHz,需要修改固件库。

问题1:到哪里找这个8MHz呢?猜测在和时钟相关的.h文件种。

在stm32f37x.h文件中有宏定义:

/**
 * @brief In the following line adjust the value of External High Speed oscillator (HSE) used in your application 
  */           
#if !defined  (HSE_VALUE) 
 #define HSE_VALUE       ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */

    右键索引到了文件system_stm32f37x.h中的SystemCoreClockUpdate()中,可以看出HSE_VALUE的值由RCC的CFGR 寄存器的SWS决定。

/* Get SYSCLK source -------------------------------------------------------*/
  tmp = RCC->CFGR & RCC_CFGR_SWS;
    switch (tmp)
  {
    case 0x04:  /* HSE used as system clock */
      SystemCoreClock = HSE_VALUE;
      break;
}

     到《STM32F373XXX_Reference_Manual》中找下RCC_CFGR_SWS,当值SWS[1:0]为01时,即0x04,系统时钟选用HSE,吻合。

图2

问题2:SystemCoreClockUpdate()这个函数什么时候被调用?被谁调用?

    首先函数自身有解释,Each time the core clock (HCLK) changes, this function must be called to updat

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值