STM32有三種不同的時鐘源可被用來驅動系統(tǒng)時鐘(SYSCLK):
1:HSI振蕩器時鐘(內部時鐘)
2:HSE振蕩器時鐘 (外部時鐘,即晶振所提供)
3:PLL時鐘(鎖相環(huán)時鐘)
這些設備有以下2種二級時鐘源:
(1)40kHz低速內部RC,可以用于驅動獨立看門狗和通過程序選擇驅動RTC。RTC用于從停機/待機模式下自動喚醒系統(tǒng)。
(2)32.768kHz低速外部晶體也可用來通過程序選擇驅動RTC(RTCCLK)。
當不被使用時,任一個時鐘源都可被獨立地啟動或關閉,由此優(yōu)化系統(tǒng)功耗。
1:常用配置如下
使用HSE作為PLL的輸入源,將PLL的輸出配置為72MHZ,然后將PLL作為系統(tǒng)時鐘,最后將其他時鐘配置為系統(tǒng)時鐘的分頻輸出。
2:配置過程
-將所有和時鐘相關的寄存器進行復位;
-啟動HSE并等待其穩(wěn)定;
-配置HCLK和SYSCLK相等;
-配置PCLK1為HCLK的2分頻;(由參考手冊上的時鐘樹得知PCLK1為低速外設時鐘,最大不超過36MHZ,所以,PLL倍頻不建議超過72MHZ)
-配置PCLK2和HCLK相等;(PCLK2為高速外設時鐘,最大不超過72MHZ)
-根據(jù)是否使用AD及其輸入信號的頻率配置ADCLK為PCLK2的若干分頻;
-根據(jù)是否使用USB設備接口,配置USB的時鐘為48MHZ;
-配置HSE為PLL的輸入,并設置兩個分頻比使PLL輸出72MHZ頻率,等待其穩(wěn)定;
-將PLL輸出作為系統(tǒng)時鐘;
-根據(jù)需要來決定是否啟用時鐘安全系統(tǒng)。
在寫系統(tǒng)時鐘初始化代碼之前可以先看《STM32參考手冊》的系統(tǒng)時鐘樹:
STM32PLL時鐘配置函數(shù):
void Stm32_Clock_Init(u8 PLL)
{
unsigned char temp=0; //當前系統(tǒng)時鐘狀態(tài)標志
MYRCC_DeInit(); //復位并配置向量表
RCC->CR|=0x00010000; //外部高速時鐘使能HSEON
while(!(RCC->CR>>17));//等待外部時鐘就緒
RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1;
PLL-=2;//抵消2個單位 //這里PLL減去2是因為倍頻系數(shù)從2開始,但倍頻寄存器值從 0000開始,即如果是9倍頻,則倍頻寄存器應寫0111。
RCC->CFGR|=PLL<<18; //設置PLL值 2~16
RCC->CFGR|=1<<16; //由軟件置’1’或清’0’來選擇PLL輸入時鐘源。該位只有在PLL關閉時才 可以被寫入。
FLASH->ACR|=0x32; //FLASH 2個延時周期
RCC->CR|=0x01000000; //PLLON
while(!(RCC->CR>>25));//等待PLL鎖定
RCC->CFGR|=0x00000002;//PLL作為系統(tǒng)時鐘
while(temp!=0x02) //等待PLL作為系統(tǒng)時鐘設置成功
{
temp=RCC->CFGR>>2;
temp&=0x03;
}
}
MYRCC_DeInit函數(shù)原型:
void MYRCC_DeInit(void)
{
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; //關閉所有中斷
//配置向量表
#ifdef VECT_TAB_RAM
MY_NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else
MY_NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
#endif
}
時鐘控制寄存器:
時鐘控制寄存器:
上一篇:STM32、ESP8266與MQTT連接阿里云物聯(lián)網(wǎng)的串口通信異常解析
下一篇:2、STM32學習筆記——定時器
推薦閱讀最新更新時間:2025-05-20 19:14




設計資源 培訓 開發(fā)板 精華推薦
- 使用 Diodes Incorporated 的 PT8A 3518CPE 的參考設計
- P1020RDB: QorIQ? P1020和P1011參考設計板
- LTC2602CMS8 演示板,雙 16 位軌至軌 Vout DAC
- 基于ISD4002-120錄音回放的ISD-ES302、ES302演示板
- 使用 Diodes Incorporated 的 ZSAT600 的參考設計
- 聲控LED燈
- 1117 電壓調節(jié)器的簡易板
- DER-857 - 基于具有PowiGaN技術的LYTSwitch-6的65 W高功率因數(shù)、隔離反激式和開關填谷PFC LED驅動器
- 隨機數(shù)發(fā)生器
- CAT4252EVAL、AN??D9010/D CAT4252 LED 驅動器評估板
- 貿澤開售Raspberry Pi用于嵌入式和IIoT應用的RP2350微控制器
- 高壓不懼,小巧有力——納芯微車規(guī)級絕壓傳感器NSPAD1N拓展壓力傳感性能邊界
- 如何為特定應用選擇溫度傳感器
- Polyn 首款神經擬態(tài)模擬信號處理芯片流片成功
- 鎧俠公開首秀光學SSD:30米開外 依舊滿血
- 三星激進投資 HBM4,押注 1c DRAM 挑戰(zhàn) SK 海力士霸主地位
- 英特爾推出三款 AI GPU 系統(tǒng)頭節(jié)點至強處理器
- 智慧與實踐交融:亞世科化學鑄造學院專場研討會圓滿舉辦
- 驅動汽車電子創(chuàng)新:RIGOL CAN-FD總線分析解決方案
- 掌握拓撲選擇:優(yōu)化電池供電設備設計