我的一个STM32F107VCT6最小系统板,时钟初始化如下:
FLASH->ACR=0;
FLASH->ACR |=(FLASH_ACR_PRFTBE|FLASH_ACR_LATENCY_1);//FLASH_ACR_PRFTBS|
RCC->CFGR=0;
RCC->CFGR2=0;
RCC->CFGR |= RCC_CFGR_MCO_NOCLOCK|RCC_CFGR_PLLMULL9|RCC_CFGR_PLLXTPRE_PREDIV1|RCC_CFGR_PLLSRC_PREDIV1|RCC_CFGR_ADCPRE_DIV6|RCC_CFGR_PPRE2_DIV1 |RCC_CFGR_PPRE1_DIV2 | RCC_CFGR_HPRE_DIV1 | RCC_CFGR_SW_PLL;
RCC->CFGR2 |= RCC_CFGR2_PREDIV1SRC_PLL2|RCC_CFGR2_PLL3MUL8|RCC_CFGR2_PLL2MUL8|RCC_CFGR2_PREDIV2_DIV5|RCC_CFGR2_PREDIV1_DIV5;
RCC->CR |= (RCC_CR_PLL2ON|RCC_CR_PLLON|RCC_CR_CSSON|RCC_CR_HSEON);
while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL);
外部晶体为25MHz,这样可以把系统设置为72MHz,为什么总是不成功。PLL只能取RCC_CFGR_PLLMULL6,把系统设置为48MHz,才能成功。同样的代码,PLL取6倍频可以成功,取9倍频率就不行。是还有什么外设没关闭吗? |