uint8_t temp=0;
//--------以下是内部HSI---------------
RCC->APB1RSTR = 0x00000000; //复位结束
RCC->APB2RSTR = 0x00000000;
RCC->AHBENR = 0x00000014; //睡眠模式闪存和SRAM时钟使能.其他关闭.
RCC->APB2ENR = 0x00000000; //外设时钟关闭.
RCC->APB1ENR = 0x00000000;
RCC->CR |= 0x00000001; //使能内部高速时钟HSION
RCC->CFGR &= 0xF8FF0000; //复位SW[1:0],HPRE[3:0],PPRE1[2:0],PPRE2[2:0],ADCPRE[1:0],MCO[2:0]
RCC->CR &= 0xFEF6FFFF; //复位HSEON,CSSON,PLLON
RCC->CR &= 0xFFFBFFFF; //复位HSEBYP
RCC->CFGR &= 0xFF80FFFF; //复位PLLSRC, PLLXTPRE, PLLMUL[3:0] and USBPRE
RCC->CIR = 0x00000000; //关闭所有中断
RCC->CR |= 0x00000001; //使能内部高速时钟HSION
while((RCC->CR&(1<<1))!=(1<<1)); //等待HSIRDY位变为1
RCC->CFGR=0X00000000; //APB1=DIV1;APB2=DIV1;AHB=DIV1
RCC->CFGR|=1<<21; //12倍频
RCC->CFGR|=1<<19;
RCC->CR|=1<<24; //PLLON
while(!(RCC->CR>>25)); //等待PLL锁定
RCC->CFGR|=0x00000002; //PLL作为系统时钟
while(temp!=0x02) //等待PLL作为系统时钟设置成功
{
temp=RCC->CFGR>>2;
temp&=0x03;
}
RCC->AHBENR|=1<<22; //使能PortF时钟
GPIOF->MODER = 0X55555555 ;
GPIOF->OTYPER = 0X00000000;
GPIOF->OSPEEDR = 0X00000000;
GPIOF->PUPDR = 0X00000000;
GPIOF->BSRR|=3;
|