tmp = RCC->CFGR & RCC_CFGR_SWS; switch (tmp) { case 0x00: /* HSI used as system clock */ SystemCoreClock = HSI_VALUE; break; case 0x04: /* HSE used as system clock */ SystemCoreClock = HSE_VALUE; break; case 0x08: /* PLL used as system clock */ /* Get PLL clock source ...
其中,输入时钟频率 FREFIN, 可以通过配置 RCC_PLLCFGR[PLLXTPRE] 和 RCC_PLLCFGR[PLLSRC] 进行选择 ,可选项有 HSI 输出时钟频率 、HSE 输出时钟频率以及 HSE 输出时钟的 2 分频频率。配置此项前,需要使能对应的时钟输入源。分频因子 M = RCC_PLLCFGR[PLL_DM] + 1, P = RCC_PLLCFGR[PLL_PM] + 1;...
tmp = RCC->CFGR & RCC_CFGR_SWS; switch (tmp) { case 0x00: /* HSI used as system clock */ SystemCoreClock = HSI_VALUE; break; case 0x04: /* HSE used as system clock */ SystemCoreClock = HSE_VALUE; break; case 0x08: /* PLL used as system clock */ /* Get PLL clock source ...
tmp = RCC->CFGR & RCC_CFGR_SWS; switch (tmp) { case 0x00: /* HSI used as system clock */ SystemCoreClock = HSI_VALUE; break; case 0x04: /* HSE used as system clock */ SystemCoreClock = HSE_VALUE; break; case 0x08: /* PLL used as system clock */ /* Get PLL clock source ...
{}// ⑥ 选择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启动失败,用户可以在这里...
系统时钟来源可以是: HSI、 PLLCLK、 HSE,具体的由时钟配置寄存器 RCC_CFGR的 SW 位配置。我们这里设置系统时钟: SYSCLK = PLLCLK = 180M。 如果系统时钟是由HSE 经过 PLL 倍频之后的 PLLCLK 得到,当 HSE 出现故障的时候,系统时钟会切换为HSI=16M,直到 HSE 恢复正常为止。
RCC_CFGR 时钟配置寄存器 系统时钟源切换及状态。 AHB、APB1、APB2、ADC、USB预分频选择。 PLL输入时钟源选择及HSE输入PLL分频选择,PLL倍频系数选择。 MCO(PA8)引脚微控制器时钟输出。 RCC_APBxRSTR 外设复位寄存器 LSI、LSE、HIS、HSE、PLL就绪中断标志。
高速外部时钟 (HSE) 锁相环(PLL) 低速内部时钟(LSI) 通过配置 RCC_CFGR[SW] ,可以选择不同的时钟源作为系统时钟源。通过读取RCC_CFGR[SWS] 的值,可以确定系统时钟源选择。值得注意的是,当使能上述四个时钟源后,需要等待 RCC 寄存器中对应的时钟准备就绪标志被拉高,才能确认时钟源被使能完成。( eg. 配置 RCC...
>CFGR &= (uint32_t)0xF0FF0000;#endif/* STM32F10X_CL *//* Reset HSEON, CSSON and PLLON bits */RCC->CR &= (uint32_t)0xFEF6FFFF;/* Reset HSEBYP bit */RCC->CR &= (uint32_t)0xFFFBFFFF;/* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */RCC->CFGR &= (...
eg: RCC->CFGR=0x00000400; //APB1=DIV2;APB2=DIV1(不分频);AHB=DIV1(不分频); 根据STM32库函数设置时钟流程: RCC_DeInit(); //设置RCC寄存器重新设置为默认值 RCC_HSEConfig(RCC_HSE_ON); //打开外部高速时钟晶振 HSEStartUpStatus = RCC_WaitForHSEStartUp(); //等待外部高速时钟晶振工作 ...