STM32内部时钟设置-寄存器版
扫描二维码
随时随地手机看文章
同时要记得把延时初始化函数设置好
1 //系统时钟初始化函数
2 //pll:选择的倍频数,从2开始,最大值为16
3 //pll:选择的倍频数,这里使用内部时钟,PLL为4就是4分频
4 void Stm32_Clock_Init(u8 PLL)
5 {
6 unsigned char temp=0;
7 MYRCC_DeInit(); //复位并配置向量表
8 // RCC->CR|=0x00010000; //外部高速时钟使能HSEON
9 RCC->CR|=0x00000001; //内部高速时钟使能HSEON
10
11 // while(!(RCC->CR>>17)); //等待外部时钟就绪
12 while(!(RCC->CR>>1)); //等待内部时钟就绪
13
14 RCC->CFGR=0X00000000; //APB1=DIV1;APB2=DIV1;AHB=DIV1;
15
16 PLL-=2;//抵消2个单位
17 // RCC->CFGR|=PLL<<18; //设置PLL值 2~16
18 RCC->CFGR|=PLL<<18; //设置PLL值 2~16 4倍频
19 RCC->CFGR|=0<<16; //PLLSRC ON ,内部时钟经过两分频后输入给下一个寄存器
20 FLASH->ACR|=0x32; //FLASH 2个延时周期
21
22 RCC->CR|=0x01000000; //PLLON
23 while(!(RCC->CR>>25));//等待PLL锁定
24 RCC->CFGR|=0x00000002;//PLL作为系统时钟
25 while(temp!=0x02) //等待PLL作为系统时钟设置成功
26 {
27 temp=RCC->CFGR>>2;
28 temp&=0x03;
29 }
30 }