STM32 RCC时钟设置(学习笔记4)

前面几篇我讲了如何使用标准固件库来让STM32实现一些功能;但是想要实现各种功能前都必须要对单片机时钟源进行设置,时钟树:如果大家对这块不懂的话推荐大家看看【STM32】超清晰STM32时钟树动画讲解

固件库函数

代码编写
ErrorStatus HSEStartUpStatus;

RCC_DeInit(); // RCC寄存器恢复到初始状态,这通常用于调试目的以确保从一个已知状态开始

RCC_HSEConfig(RCC_HSE_ON); // 使能外部高速晶振(High-Speed External,HSE)

// 等待外部高速晶振(HSE)稳定并准备好, 如果超时则返回ErrorStatus::ERROR
HSEStartUpStatus = RCC_WaitForHSEStartUp(); 

if(HSEStartUpStatus == SUCCESS){ // 如果HSE启动成功执行以下配置
    // 设置PLL(相位锁定环)的时钟源为HSE,并设置倍频系数为9
    // 当HSE为8MHz时,经过PLL后,系统时钟(SYSCLK)为72MHz
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
    
    // 设置AHB时钟(HCLK),此处配置为与SYSCLK一致,即72MHz
    RCC_HCLKConfig(RCC_SYSCLK_Div1);
    
    // 设置APB1时钟(PCLK1),此处配置为HCLK的一半,即36MHz
    // APB1通常用于驱动低速外设
    RCC_PCLK1Config(RCC_HCLK_Div2);
    
    // 设置APB2时钟(PCLK2),此处配置为与HCLK一致,即72MHz
    // APB2通常用于驱动高速外设
    RCC_PCLK2Config(RCC_HCLK_Div1);
    
    // 根据系统时钟设置FLASH存储器的延迟周期,以确保FLASH操作的稳定性
    // 系统频率在48MHz到72MHz之间时,推荐设置2个等待周期
    FLASH_SetLatency(FLASH_Latency_2);

    // 启用FLASH预取指缓冲,以优化代码执行速度
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

    // 使能PLL,此配置用于增加系统时钟频率
    RCC_PLLCmd(ENABLE);

    // 等待PLL输出稳定
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);

    // 将PLL输出设置为系统时钟源(SYSCLK)
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

    // 等待PLL输出确实作为系统时钟源使用
    while(RCC_GetSYSCLKSource() != 0x08);
}  

// 可以在此处根据需要使能其他外设的时钟
// 例如,如果需要使用USART1,GPIOA,和SPI1,可以取消以下注释来使能相关时钟
//	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |   
//	RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE, ENABLE); //APB2外设时钟使能      
//	RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); //APB1外设时钟使能  
//	RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);   
//	RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);   	 
//	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);  

这代码最后注释的RCC使能,我们在之前各个功能设置的时候单独使能了

资料:

  • 12
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值