voidStm32_Clock_Init(u8 PLL) main() { u32 i; Stm32_Clock_Init(9); RCC->APB2ENR|= RCC_APB2_IOPA; GPIOA->CRH&=0xfffffff0; GPIOA->CRH|= GPIO_CR_OUT50MHZ; GPIOA->CRH|= GPIO_CR_OUTPP; while(1) { GPIOA->ODR|= 1<<8; for(i=0;i<1000000;i++); GPIOA->ODR&= ~(1<<8); for(i=0;i<1000000;i++); } } void Stm32_Clock_Init(u8 PLL) { if((PLL>=2)&&(PLL<=9)) { unsignedchar temp=0; RCC->CR|=0x00010000; while(!(RCC->CR>>17)); RCC->CFGR=0X00000400; PLL-=2; RCC->CFGR|=PLL<<18; RCC->CFGR|=1<<16; if((PLL>3)&&(PLL<=6)) { FLASH->ACR|=0x31; } elseif(PLL>6) { FLASH->ACR|=0x32; } RCC->CR|=0x01000000; while(!(RCC->CR>>25)); RCC->CFGR|=0x00000002; while(temp!=0x02) { temp=RCC->CFGR>>2; temp&=0x03; } } } 此程序的问题是 当频率设置由低到高时,频率升到一定程度后 ,LED的闪烁频率变慢了
|