我正在try 配置一块STM32G474RE线路板的RCC时钟,其中PLL使用HSI16作为时钟源,PLLM=1、PLLN=10、AHB=1、APB1=1和APB2=4作为配置.然而,当我运行代码时,PLLRDY标志从未被设置,并且我被困在无限循环中.
#include "main.h"
void SytemClockConfig(void){
/*Enable HSI16*/
RCC->CR |= RCC_CR_HSION;
while(!(RCC->CR & RCC_CR_HSIRDY)){}
/*Configure PWR and FLASH*/
RCC->APB1ENR1 |= RCC_APB1ENR1_PWREN;
PWR->CR1 |= (0x01 & PWR_CR1_VOS_Msk);
FLASH->ACR |= FLASH_ACR_ICEN | FLASH_ACR_DCEN | FLASH_ACR_LATENCY_2WS | FLASH_ACR_PRFTEN;
/*Configure AHB and APB*/
RCC->CFGR |= (0x00 & RCC_CFGR_HPRE_Msk);
RCC->CFGR |= (0x00 & RCC_CFGR_PPRE1_Msk);
RCC->CFGR |= (0x05 & RCC_CFGR_PPRE2_Msk);
/*Config PLL*/
RCC->PLLCFGR |= (0x02 & RCC_PLLCFGR_PLLSRC_Msk);
RCC->PLLCFGR |= (0x00 & RCC_PLLCFGR_PLLM_Msk);
RCC->PLLCFGR &= ~(RCC_PLLCFGR_PLLN_Msk);
RCC->PLLCFGR |= (0x0A & RCC_PLLCFGR_PLLN_Msk);
RCC->PLLCFGR |= (0x01 & RCC_PLLCFGR_PLLREN_Msk);
RCC->PLLCFGR |= (0x00 & RCC_PLLCFGR_PLLR_Msk);
/*Enable PLL*/
RCC->CR |= (0x01 & RCC_CR_PLLON);
while(!(RCC->CR & RCC_CR_PLLRDY)){}
RCC->CFGR |= (0x05 & RCC_CFGR_SW_Msk);
while((RCC->CFGR & RCC_CFGR_SWS) != (0x03 & RCC_CFGR_SWS_Msk)){}
}
int main(void){
SytemClockConfig();
}