STM32中模块时钟

STM32中各个模块都有自己的时钟,当使用相应的模块时首先记得把此模块时钟开启

本次学习使用标准固件库3.3.0

好了,看明白上图咱就开始吧:

void RCC_Configuration(void)
{
ErrorStatus HSEStartUpStatus;
//SystemInit(); //完全可以使用此函数配置,但是为了学习咱先不用
RCC_DeInit(); //复位RCC模块的寄存器,复位成缺省值
RCC_HSEConfig(RCC_HSE_ON); //开启HSE时钟,咱是用HSE的时钟作为PLL的时钟源
HSEStartUpStatus = RCC_WaitForHSEStartUp(); //获取HSE启动状态

     if(HSEStartUpStatus == SUCCESS)                      //如果HSE启动成功
    {
              FLASH_PrefetchBufferCmd(ENABLE);          //开启FLASH的预取功能
              FLASH_SetLatency(FLASH_Latency_2);      //FLASH延迟2个周期(这里我也不明白,先用吧)

             RCC_HCLKConfig(RCC_SYSCLK_Div1);        //配置HCLK,PCLK2,PCLK1,PLL
             RCC_PCLK2Config(RCC_HCLK_Div1);
             RCC_PCLK1Config(RCC_HCLK_Div2);

             RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
             RCC_PLLCmd(ENABLE);                              //启动PLL
             while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)

             {}                                                              //等待PLL启动完成
             RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  //配置系统时钟
             while(RCC_GetSYSCLKSource() !=0x80)          //检查是否将HSE 9倍频后作为系统时钟

             {} 
     }

}

设置时钟流程:

1.将RCC寄存器重新设置为默认值 RCC_DeInit

2.打开外部高速时钟晶振HSE RCC_HSEConfig(RCC_HSE_ON);

3.等待外部高速时钟晶振工作 HSEStartUpStatus = RCC_WaitForHSEStartUp();

4.设置AHB时钟 RCC_HCLKConfig;

5.设置高速APB2时钟 RCC_PCLK2Config;

6.设置低速速APB1时钟 RCC_PCLK1Config

7.设置PLL RCC_PLLConfig

8.打开PLL RCC_PLLCmd(ENABLE);

9.等待PLL工作 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)

10.设置系统时钟 RCC_SYSCLKConfig

11.判断是否PLL是系统时钟 while(RCC_GetSYSCLKSource() != 0x08)

12.打开要使用的外设时钟 RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()

至此我们就将STM32的系统时钟配置好了,系统时钟72MHz,APH 72MHz,APB2 72MHz,APB1 32MHz,USB 48MHz

其他至于ADC什么的先用不管,用到时再设置,本次只是大体先熟悉下STM32的时钟配置流程,便于以后程序的编写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值