STM32內(nèi)部時(shí)鐘設(shè)置-寄存器版
掃描二維碼
隨時(shí)隨地手機(jī)看文章
同時(shí)要記得把延時(shí)初始化函數(shù)設(shè)置好
1 //系統(tǒng)時(shí)鐘初始化函數(shù)
2 //pll:選擇的倍頻數(shù),從2開始,最大值為16
3 //pll:選擇的倍頻數(shù),這里使用內(nèi)部時(shí)鐘,PLL為4就是4分頻
4 void Stm32_Clock_Init(u8 PLL)
5 {
6 unsigned char temp=0;
7 MYRCC_DeInit(); //復(fù)位并配置向量表
8 // RCC->CR|=0x00010000; //外部高速時(shí)鐘使能HSEON
9 RCC->CR|=0x00000001; //內(nèi)部高速時(shí)鐘使能HSEON
10
11 // while(!(RCC->CR>>17)); //等待外部時(shí)鐘就緒
12 while(!(RCC->CR>>1)); //等待內(nèi)部時(shí)鐘就緒
13
14 RCC->CFGR=0X00000000; //APB1=DIV1;APB2=DIV1;AHB=DIV1;
15
16 PLL-=2;//抵消2個(gè)單位
17 // RCC->CFGR|=PLL<<18; //設(shè)置PLL值 2~16
18 RCC->CFGR|=PLL<<18; //設(shè)置PLL值 2~16 4倍頻
19 RCC->CFGR|=0<<16; //PLLSRC ON ,內(nèi)部時(shí)鐘經(jīng)過兩分頻后輸入給下一個(gè)寄存器
20 FLASH->ACR|=0x32; //FLASH 2個(gè)延時(shí)周期
21
22 RCC->CR|=0x01000000; //PLLON
23 while(!(RCC->CR>>25));//等待PLL鎖定
24 RCC->CFGR|=0x00000002;//PLL作為系統(tǒng)時(shí)鐘
25 while(temp!=0x02) //等待PLL作為系統(tǒng)時(shí)鐘設(shè)置成功
26 {
27 temp=RCC->CFGR>>2;
28 temp&=0x03;
29 }
30 }