在MM32 MiniBoard板上运行Demo程序时始终停在:
while(!(RCC->CR&RCC_CR_PLLRDY));//等待PLL锁定
这一步,有哪位大侠遇到过类似的情况吗?改怎样解决?
无论设置外部晶振还是内部HSI都一样。
void SetSysClockTo48_HSI()
{
unsigned char temp=0;
RCC->CR|=RCC_CR_HSION;
while(!(RCC->CR&RCC_CR_HSIRDY));
RCC->CFGR=RCC_CFGR_PPRE1_2; //APB1=DIV2;APB2=DIV1;AHB=DIV1;
RCC->CFGR&=~RCC_CFGR_PLLSRC; //PLLSRC ON
RCC->CR &=~(RCC_CR_PLLON); //清PLL// RCC->CR &=~(7<<20); //清PLL
RCC->CR &=~(0x1f<<26);
RCC->CR|=(4 - 1) << 26; //设置PLL值 2~16
FLASH->ACR=FLASH_ACR_LATENCY_1|FLASH_ACR_PRFTBE; //FLASH 1个延时周期
RCC->CR|=RCC_CR_PLLON; //PLLON
while(!(RCC->CR&RCC_CR_PLLRDY));//等待PLL锁定 ???停在这里不动
RCC->CFGR&=~RCC_CFGR_SW;
RCC->CFGR|=RCC_CFGR_SW_PLL;//PLL作为系统时钟
while(temp!=0x02) //等待PLL作为系统时钟设置成功
{
temp=RCC->CFGR>>2;
temp&=0x03;
}
}
|