時鐘系統(tǒng)是處理器的核心,所以在學習STM32所有外設之前,認真學習時鐘系統(tǒng)是必要的,有助于深入理解STM32。
下面是從網上找的一個STM32時鐘框圖,比《STM32中文參考手冊》里面的是中途看起來清晰一些:
重要的時鐘:
PLLCLK,SYSCLK,HCKL,PCLK1,PCLK2 之間的關系要弄清楚;
1、HSI:高速內部時鐘信號 stm32單片機內帶的時鐘 (8M頻率) 精度較差
2、HSE:高速外部時鐘信號 精度高 來源(1)HSE外部晶體/陶瓷諧振器(晶振) (2)HSE用戶外部時鐘
3、LSE:低速外部晶體 32.768kHz 主要提供一個精確的時鐘源 一般作為RTC時鐘使用
在STM32中,有五個時鐘源,為HSI、HSE、LSI、LSE、PLL。
①、HSI是高速內部時鐘,RC振蕩器,頻率為8MHz。
②、HSE是高速外部時鐘,可接石英/陶瓷諧振器,或者接外部時鐘源,頻率范圍為4MHz~16MHz。
③、LSI是低速內部時鐘,RC振蕩器,頻率為40kHz。
④、LSE是低速外部時鐘,接頻率為32.768kHz的石英晶體。
⑤、PLL為鎖相環(huán)倍頻輸出,其時鐘輸入源可選擇為HSI/2、HSE或者HSE/2。倍頻可選擇為2~16倍,但是其輸出頻率最大不得超過72MHz。
其中40kHz的LSI供獨立看門狗IWDG使用,另外它還可以被選擇為實時時鐘RTC的時鐘源。另外,實時時鐘RTC的時鐘源還可以選擇LSE,或者是HSE的128分頻。RTC的時鐘源通過RTCSEL[1:0]來選擇。
STM32中有一個全速功能的USB模塊,其串行接口引擎需要一個頻率為48MHz的時鐘源。該時鐘源只能從PLL輸出端獲取,可以選擇為1.5分頻或者1分頻,也就是,當需要使用USB模塊時,PLL必須使能,并且時鐘頻率配置為48MHz或72MHz。
另外,STM32還可以選擇一個時鐘信號輸出到MCO腳(PA8)上,可以選擇為PLL輸出的2分頻、HSI、HSE、或者系統(tǒng)時鐘。
系統(tǒng)時鐘SYSCLK,它是供STM32中絕大部分部件工作的時鐘源。系統(tǒng)時鐘可選擇為PLL輸出、HSI或者HSE。系統(tǒng)時鐘最大頻率為72MHz,它通過AHB分頻器分頻后送給各模塊使用,AHB分頻器可選擇1、2、4、8、16、64、128、256、512分頻。其中AHB分頻器輸出的時鐘送給5大模塊使用:
①、送給AHB總線、內核、內存和DMA使用的HCLK時鐘。
②、通過8分頻后送給Cortex的系統(tǒng)定時器時鐘。
③、直接送給Cortex的空閑運行時鐘FCLK。
④、送給APB1分頻器。APB1分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB1外設使用(PCLK1,最大頻率36MHz),另一路送給定時器(Timer)2、3、4倍頻器使用。該倍頻器可選擇1或者2倍頻,時鐘輸出供定時器2、3、4使用。
⑤、送給APB2分頻器。APB2分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB2外設使用(PCLK2,最大頻率72MHz),另一路送給定時器(Timer)1倍頻器使用。該倍頻器可選擇1或者2倍頻,時鐘輸出供定時器1使用。另外,APB2分頻器還有一路輸出供ADC分頻器使用,分頻后送給ADC模塊使用。ADC分頻器可選擇為2、4、6、8分頻。
在以上的時鐘輸出中,有很多是帶使能控制的,例如AHB總線時鐘、內核時鐘、各種APB1外設、APB2外設等等。當需要使用某模塊時,記得一定要先使能對應的時鐘。
需要注意的是定時器的倍頻器,當APB的分頻為1時,它的倍頻值為1,否則它的倍頻值就為2。
連接在APB1(低速外設)上的設備有:電源接口、備份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看門狗、Timer2、Timer3、Timer4。注意USB模塊雖然需要一個單獨的48MHz時鐘信號,但它應該不是供USB模塊工作的時鐘,而只是提供給串行接口引擎(SIE)使用的時鐘。USB模塊工作的時鐘應該是由APB1提供的。
連接在APB2(高速外設)上的設備有:UART1、SPI1、Timer1、ADC1、ADC2、所有普通IO口(PA~PE)、第二功能IO口。
涉及的寄存器:
RCC 寄存器結構,RCC_TypeDeff,在文件“stm32f10x_map.h”中定義如下:
typedef struct
{
vu32 CR; //HSI,HSE,CSS,PLL等的使能
vu32 CFGR; //PLL等的時鐘源選擇以及分頻系數(shù)設定
vu32 CIR; // 清除/使能 時鐘就緒中斷
vu32 APB2RSTR; //APB2線上外設復位寄存器
vu32 APB1RSTR; //APB1線上外設復位寄存器
vu32 AHBENR; //DMA,SDIO等時鐘使能
vu32 APB2ENR; //APB2線上外設時鐘使能
vu32 APB1ENR; //APB1線上外設時鐘使能
vu32 BDCR; //備份域控制寄存器
vu32 CSR;
} RCC_TypeDef;
可以對上上面的時鐘框圖和RCC寄存器來學習,對STM32的時鐘系統(tǒng)有個大概的了解,然后對照我們的《STM32不完全手冊》的系統(tǒng)時鐘配置函數(shù)void Stm32_Clock_Init(u8 PLL)一同來學習。
時鐘輸出的使能控制
在以上的時鐘輸出中有很多是帶使能控制的,如AHB總線時鐘、內核時鐘、各種APB1外設、APB2外設等。
當需要使用某模塊時,必需先使能對應的時鐘。需要注意的是定時器的倍頻器,當APB的分頻為1時,它的倍頻值為1,否則它的倍頻值就為2。
連接在APB1(低速外設)上的設備有:電源接口、備份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看門狗、 Timer2、Timer3、Timer4。注意USB模塊雖然需要一個單獨的48MHz時鐘信號,但它應該不是供USB模塊工作的時鐘,而只是提供給串行接口引擎(SIE)使用的時鐘。USB模塊工作的時鐘應該是由APB1提供的。
連接在APB2(高速外設)上的設備有:GPIO_A-E、USART1、ADC1、ADC2、ADC3、TIM1、TIM8、SPI1、AFIO
使用HSE時鐘,程序設置時鐘參數(shù)流程:
1、將RCC寄存器重新設置為默認值 RCC_DeInit;
2、打開外部高速時鐘晶振HSE RCC_HSEConfig(RCC_HSE_ON);
3、等待外部高速時鐘晶振工作 HSEStartUpStatus = RCC_WaitForHSEStartUp();
4、設置AHB時鐘 RCC_HCLKConfig;
5、設置高速AHB時鐘 RCC_PCLK2Config;
6、設置低速速AHB時鐘 RCC_PCLK1Config;
7、設置PLL RCC_PLLConfig;
8、打開PLL RCC_PLLCmd(ENABLE);
9、等待PLL工作 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
10、設置系統(tǒng)時鐘 RCC_SYSCLKConfig;
11、判斷是否PLL是系統(tǒng)時鐘 while(RCC_GetSYSCLKSource() != 0x08)
12、打開要使用的外設時鐘 RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()
下面是STM32軟件固件庫的程序中對RCC的配置函數(shù)(使用外部8MHz晶振)
void RCC_Configuration(void)
{
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON); //RCC_HSE_ON——HSE晶振打開(ON)
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS) //SUCCESS:HSE晶振穩(wěn)定且就緒
{
RCC_HCLKConfig(RCC_SYSCLK_Div1); //RCC_SYSCLK_Div1——AHB時鐘 = 系統(tǒng)時鐘
RCC_PCLK2Config(RCC_HCLK_Div1); //RCC_HCLK_Div1——APB2時鐘 = HCLK
RCC_PCLK1Config(RCC_HCLK_Div2); //RCC_HCLK_Div2——APB1時鐘 = HCLK / 2
FLASH_SetLatency(FLASH_Latency_2); //FLASH_Latency_2 2延時周期
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); // 預取指緩存使能
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
// PLL的輸入時鐘 = HSE時鐘頻率;RCC_PLLMul_9——PLL輸入時鐘x 9
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) ;
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//RCC_SYSCLKSource_PLLCLK——選擇PLL作為系統(tǒng)時鐘
while(RCC_GetSYSCLKSource() != 0x08); //0x08:PLL作為系統(tǒng)時鐘
}
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC , ENABLE);
//RCC_APB2Periph_GPIOA GPIOA時鐘
//RCC_APB2Periph_GPIOB GPIOB時鐘
//RCC_APB2Periph_GPIOC GPIOC時鐘
//RCC_APB2Periph_GPIOD GPIOD時鐘
}
上一篇:STM32 HAL 庫學習筆記之-------(系統(tǒng)時鐘配置)
下一篇:STM32f103時鐘系統(tǒng)簡介
推薦閱讀
史海拾趣
在數(shù)字化時代,通信技術的更新?lián)Q代速度極快。為了保持競爭優(yōu)勢,Black Box不斷投入研發(fā),推出了一系列創(chuàng)新產品和技術。例如,公司研發(fā)了一款智能網絡管理平臺,能夠實時監(jiān)控網絡狀態(tài)并進行故障預警。這一技術創(chuàng)新大大提高了網絡的穩(wěn)定性和安全性,贏得了客戶的廣泛好評。
在20世紀中葉,西鐵城公司迎來了一次重要的技術突破。1956年,公司成功研制出防震手表,并通過了空中墜表實驗,這一創(chuàng)新轟動了整個行業(yè)。防震手表的推出不僅提升了西鐵城產品的品質,也進一步鞏固了其在全球腕表市場中的地位。這一技術的成功應用,也顯示了西鐵城在精密加工和測量技術方面的實力。
近年來,西鐵城公司在市場推廣方面也進行了一些大膽的嘗試。其中,與著名花樣滑冰選手羽生結弦的跨界合作尤為引人注目。雙方共同推出了限量版簽名腕表“四周半”,這一產品以羽生結弦的經典動作為靈感,融合了西鐵城獨特的光動能技術,展現(xiàn)了技術與藝術的完美結合。這一合作不僅提升了西鐵城品牌的市場影響力,也展示了公司在產品創(chuàng)新和市場推廣方面的新思路和新策略。
這些故事只是西鐵城公司發(fā)展過程中的一部分,但它們都充分展示了公司在電子行業(yè)中的創(chuàng)新實力和市場競爭力。從最初的維修和銷售到如今的全球知名品牌,西鐵城的發(fā)展歷程充滿了挑戰(zhàn)和機遇,也為我們提供了一個觀察電子行業(yè)發(fā)展和變革的窗口。
在智能家居領域,Cramer公司也展現(xiàn)出了強大的創(chuàng)新能力。他們推出了一款智能家居控制系統(tǒng),該系統(tǒng)可以通過手機APP遠程控制家中的電器設備。為了實現(xiàn)這一功能,Cramer公司投入了大量資源進行技術研發(fā),并與多家家居品牌達成了戰(zhàn)略合作協(xié)議。這款產品的推出,使得Cramer公司在智能家居市場上占據(jù)了一席之地。
近年來,隨著環(huán)保意識的提升和綠色能源的普及,三禮公司也積極投身于綠色生產領域。2019年,公司在廣西南寧開始建設新廠,預定投資3億元人民幣用于廠房及自動化設備的建設。新廠總建筑面積達70,000平方米,將成為公司目前所有生產基地中規(guī)模最大的一個。同時,公司還計劃全面架設太陽能發(fā)電系統(tǒng),目標是在未來三年內承擔公司總需求電量的30%。這一舉措不僅有助于降低公司的生產成本,還體現(xiàn)了公司對環(huán)保事業(yè)的積極貢獻。
這五個故事只是三禮公司發(fā)展歷程中的一部分縮影,但它們卻生動地展現(xiàn)了公司在電子行業(yè)中的成長軌跡和不懈努力。從北美市場的拓展到中國內地生產能力的擴大,再到技術突破和新產品開發(fā),三禮公司始終保持著敏銳的市場洞察力和強大的創(chuàng)新能力。同時,公司還積極投身于綠色生產領域,為推動電子行業(yè)的可持續(xù)發(fā)展做出了積極貢獻。
20世紀50年代,隨著自動控制技術的發(fā)展和現(xiàn)代工業(yè)水平的不斷提高,氣動元件和氣動系統(tǒng)得到了廣泛的應用。被譽為“德國氣動之父”的Kurt Stoll敏銳地發(fā)現(xiàn)了這一趨勢,并領導Festo公司開始在這一領域進行深入的研發(fā)。通過不斷的努力和創(chuàng)新,F(xiàn)esto成功開發(fā)出了一系列高性能的氣動產品,并在市場上取得了巨大的成功。逐漸地,F(xiàn)esto成為了全球氣動自動化領域的領導者。
問題:如何通過Tornado自帶的TCL命令實現(xiàn)對當前工程dependencies 不用tornado的圖形工具,直接用命令dependencies工程怎么實現(xiàn)?謝謝啦,… 查看全部問答∨ |
|
我的第一份工作也許就是國慶后的學校面試招聘!也許是打包回家!好煩現(xiàn)在!因為我高考體檢檢查感染了肝功能不正常!雖說沒有傳染性!但又有那個公司會要我呢!我想誠實對待工作!希望老板也能誠實對待我吧!三年我很努力的學習!就是想用努力彌補我 ...… 查看全部問答∨ |
針對 Xilinx Spartan™-6 LX150 的電源參考設計 此參考設計旨在給Spartan 6 LX150及帶有TI Swift Integrated FETS的DC/DC轉換器供電… 查看全部問答∨ |
設計資源 培訓 開發(fā)板 精華推薦
- 【直播】恩智浦Thread/BLE雙模技術講座
- 文曄科技有獎直播:C2000在電機控制中的應用 等你來看!
- 泰克70周年慶 了解新品 參與掀蓋有禮活動 最多可獲得6次抽獎機會
- 【EEWORLD第六屆社區(qū)明星人物】8月明星人物
- 直播已結束【使用 TI 低成本 MSPM0 MCU 快速開發(fā) – 生態(tài)詳解系列之二】(9:45開始入場)
- 新春尋寶記,泰克送福利!快來開啟你的尋寶之旅~
- 有獎直播:借助Maxim的模擬技術優(yōu)化設計
- 有獎評測:50套來自恩智浦全新快速物聯(lián)網原型設計套件(價值350元)
- DEYISUPPORT TI 大咖級工程師在這里,等你來約!