使用HSE配置系统时钟控制LED灯闪烁频率
RCC 主要作用—时钟部分
RCC :reset clock control 复位和时钟控制器
设置系统时钟 SYSCLK、设置 AHB 分频因子(决定 HCLK 大小)、设置 APB2 分频因子(决定 PCLK2 大小)、设置 APB1 分频因子(决定 PCLK1 大小)、设置各个外设的分频因子;控制 AHB、APB2 和 APB1 这三条总线时钟的开启、控制每个外设的时钟的开启。
库函数的标准时钟配置为PCLK2 = HCLK = SYSCLK=PLLCLK = 72M,PCLK1=HCLK/2 = 36M。
RCC 框图剖析—时钟部分
选取库函数时钟系统时钟函数:SetSysClockTo72(); 通过对该函数的编写流程来熟悉时钟树。
着重了解一下使用HSE来配置系统时钟,对应的是图中的黄色部分。上面的 7 个步骤对应的设置系统时钟库函数如下,该函数截取自固件库文件 system_stm32f10x.c
static void SetSysClockTo72(void)
{
__IO uint32_t StartUpCounter = 0, HSEStatus = 0;
// 使能 HSE,并等待 HSE 稳定
RCC->CR |= ((uint32_t)RCC_CR_HSEON);
do // 等待 HSE 启动稳定,并做超时处理
{
HSEStatus = RCC->CR & RCC_CR_HSERDY;
StartUpCounter++;
} while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
if ((RCC->CR & RCC_CR_HSERDY) != RESET)
{
HSEStatus = (uint32_t)0x01;
}
else
{
HSEStatus