sw是用户配置系统时钟源,sws是stm32目前的时钟源,修改sw后,等待sws的值与sw相等就怎么切换成功
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); RCC->CFGR |= (uint32_t)RCC_CFGR_SW_HSE; /* Wait till HSE is used as system clock source */ while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x04) { } } else { /* If HSE fails to start-up, the ...
使能PLL锁相环时钟并设置倍频因子为9(9*8MHz = 72MHz),使能并选择其为系统的时钟源。 /* PLL configuration: PLLCLK = HSE * 9 = 72 MHz */RCC->CFGR&=(uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC|RCC_CFGR_PLLXTPRE|RCC_CFGR_PLLMULL));RCC->CFGR|=(uint32_t)(RCC_CFGR_PLLSRC_HSE|RCC_...
}// ⑥ 选择PLL作为系统时钟来源RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;// ⑦ 读取时钟切换状态位,确保PLLCLK被选为系统时钟while((RCC->CFGR&(uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08){ } }else{// 如果HSE启动失败,用户...
RCC->CFGR &= (uint32_t)0xF8FF0000; 这是RCC_CFGR寄存器 该行程序清零了MC0[2:0]这三位,和ADCPRE[1:0],ppre2[2:0],PPRE1[2:0],HPRE[3:0],SWS[1:0]和SW[1:0]这16位。 /* MCO: 微控制器时钟输出,由软件置’1’或清零。
RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; /* Wait till PLL is used as system clock source */ while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) { } 至此,成功将系统时钟频率设置为72MHz,其中PCLK1为36MHz,PCLK2为72MHz。
这两个位(实际就是是RCC->CFGR寄存器的3:2位),名字是SWS[1:0],在参考手册上的解释是:SWS[1:0]:系统时钟切换状态 (System clock switch status) 由硬件置’1’ 或清’0’ 来指示哪一个时钟源被作为系统时钟。00:HSI作为系统时钟;01:HSE作为系统时钟;10:PLL 输出作为系统时钟;11...
2、时钟配置寄存器(RCC_CFGR):(复位值为0x0000 0000) 主要功能:系统时钟源切换及状态,AHB、APB1、APB2、ADC、USB预分频,PLL输入时钟源选择及HSE输入PLL分频选择,PLL倍频系数,MCO(PA8)引脚微控制器时钟输出。 3、时钟中断寄存器 (RCC_CIR):(复位值: 0x0000 0000) ...
RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; //PLL输出作为系统时钟 /* Wait till PLL is used as system clock source */ while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)//等待直到PLL成功用作系统时钟源 { }
系统时钟 SYSCLK 经过 AHB 预分频器分频之后得到时钟叫 APB 总线时钟,即 HCLK,分频因子可以是:[1,2,4,8,16,64,128,256,512],具体的由时钟配置寄存器RCC_CFGR 的 HPRE 位设置。片上大部分外设的时钟都是经过 HCLK 分频得到,至于 AHB总线上的外设的时钟设置为多少,得等到我们使用该外设的时候才设置,我们这...