STM32時鐘系統
可對應STM32CubeMX時鐘配置。
在STM32中,有五個時鐘源,為HSI、HSE、LSI、LSE、PLL。
①HSI是高速內部時鐘,RC振盪器,頻率為8MHz。
②HSE是高速外部時鐘,可接石英/陶瓷諧振器,或者接外部時鐘源,頻率範圍為4MHz~16MHz。
③LSI是低速內部時鐘,RC振盪器,頻率為40kHz。
④LSE是低速外部時鐘,接頻率為32.768kHz的石英晶體。
⑤PLL為鎖相環倍頻輸出,其時鐘輸入源可選擇為HSI/2、HSE或者HSE/2。倍頻可選擇為2~16倍,但是其輸出頻率最大不得超過72MHz。
使用者可通過多個預分頻器配置AHB匯流排、高速APB2匯流排和低速APB1匯流排的頻率。AHB和APB2域的最大頻率是72MHZ。APB1域的最大允許頻率是36MHZ。SDIO介面的時鐘頻率固定為HCLK/2。
40kHz的LSI供獨立看門狗IWDG使用,另外它還可以被選擇為實時時鐘RTC的時鐘源。另外,實時時鐘RTC的時鐘源還可以選擇LSE,或者是HSE的128分頻。RTC的時鐘源通過RTCSEL[1:0]來選擇。
STM32中有一個全速功能的USB模組,其序列介面引擎需要一個頻率為48MHz的時鐘源。該時鐘源只能從PLL輸出端獲取,可以選擇為1.5分頻或者1分頻,也就是,當需要使用USB模組時,PLL必須使能,並且時鐘頻率配置為48MHz或72MHz。
另外,STM32還可以選擇一個PLL輸出的2分頻、HSI、HSE、或者系統時鐘SYSCLK輸出到MCO腳(PA8)上。系統時鐘SYSCLK,是供STM32中絕大部分部件工作的時鐘源,它可選擇為PLL輸出、HSI或者HSE,(一般程式中採用PLL倍頻到72Mhz)在選擇時鐘源前注意要判斷目標時鐘源是否已經穩定振盪。Max=72MHz,它分為2路,1路送給I2S2、I2S3使用的I2S2CLK,I2S3CLK;另外1路通過AHB分頻器分頻(1/2/4/8/16/64/128/256/512)分頻後送給以下8大模組使用:
① 送給SDIO使用的SDIOCLK時鐘。
② 送給FSMC使用的FSMCCLK時鐘。
③ 送給AHB匯流排、核心、記憶體和DMA使用的HCLK時鐘。
④ 通過8分頻後送給Cortex的系統定時器時鐘(SysTick)。
⑤ 直接送給Cortex的空閒執行時鐘FCLK。
⑥ 送給APB1分頻器。APB1分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB1外設使用(PCLK1,最大頻率36MHz),另一路送給定時器(Timer2-7)2、3、4倍頻器使用。該倍頻器可選擇1或者2倍頻,時鐘輸出供定時器2、3、4、5、6、7使用。
⑦ 送給APB2分頻器。APB2分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB2外設使用(PCLK2,最大頻率72MHz),另一路送給定時器(Timer1、Timer8)1、2倍頻器使用。該倍頻器可選擇1或者2倍頻,時鐘輸出供定時器1和定時器8使用。另外,APB2分頻器還有一路輸出供ADC分頻器使用,分頻後得到ADCCLK時鐘送給ADC模組使用。ADC分頻器可選擇為2、4、6、8分頻。
⑧ 2分頻後送給SDIO AHB介面使用(HCLK/2)。
時鐘輸出的使能控制
在以上的時鐘輸出中有很多是帶使能控制的,如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時鐘,程式設定時鐘引數流程:
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、設定系統時鐘 RCC_SYSCLKConfig;
11、判斷是否PLL是系統時鐘 while(RCC_GetSYSCLKSource() != 0x08)
12、開啟要使用的外設時鐘 RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()
相關推薦
STM32時鐘系統
可對應STM32CubeMX時鐘配置。 在STM32中,有五個時鐘源,為HSI、HSE、LSI、LSE、PLL。 ①HSI是高速內部時鐘,RC振盪器,頻率為8MHz。 ②HSE是高速外部時鐘,可接石英/陶瓷諧振器,或者接外部時鐘源,頻率範圍為4MHz~16MH
STM32的時鐘系統RCC詳細整理_20170731
/* Get PLL clock source and multiplication factor ----------------------*/ pllmull = RCC->CFGR & RCC_CFGR_PLLMULL; pllsource = R
STM32滴答定時器與UCOS時鐘系統,以及心跳和延時函式的實現.
Systick就是一個定時器而已,只是它放在了NVIC中,主要的目的是為了給作業系統提供一個硬體上的中斷(號稱滴答中斷)。滴答中斷?這裡來簡單地解釋一下。作業系統進行運轉的時候,也會有“心跳”。它會根據“心跳”的節拍來工作,把整個時間段分成很多小小的時間片,每個任務每次
STM32 獲取系統時鐘頻率
系統時鐘 rcc 時鐘頻率 col 定義 typedef nbsp style clas //定義一個RCC_ClocksTypeDef 的結構體 RCC_ClocksTypeDef get_rcc_clock; //調用RCC_GetClocksFreq獲取
時鐘系統
http info pll src .com 分享圖片 技術分享 com png PLLCLK~72M HSE ~~~8M HSI ~~~8M SYSCLK~72M 時鐘系統
STM32 時鐘配置的坑
article 這位 value endif osc tar defined 公司 代碼 今天在調試公司的一款產品的時候發現8M的晶振用完了,於是找了一個16M的替代 坑爹的就在這裏,明明已經把時鐘按照時鐘樹配置好了,但是串口等外設一直無法正常工作 折騰了一下午,終於發現這
裸機——時鐘系統
1. 首先需要知道時鐘有什麼用 時鐘頻率是用來知道硬體工作快慢的, 頻率高,硬體工作快,但發熱高, 頻率低,硬體工作慢,發熱低 無頻率,硬體即使有點也不工作。 2. 要知道時鐘是怎麼產生和管理的。 可以直接在SoC外給高頻時鐘。 可以SoC使用晶振+時鐘發生器,也就是使用
《6.S5PV210的時鐘系統》
《6.S5PV210的時鐘系統》 第一部分、章節目錄 1.6.1.SoC時鐘系統簡介 1.6.2.S5PV210的時鐘系統簡介 1.6.3.S5PV210時鐘域詳解 1.6.4.S5PV210時鐘體系框圖詳解 1.6.5.時鐘設定的關鍵性暫存器 1.6.6.彙編實現時鐘設定程式碼詳解1
5.STM32F407ZG時鐘系統及定時器SYSTICK的使用
1.系統時鐘樹: LSI:低速內部時鐘(RC震盪器),32kHz,提供低功耗時鐘,用於看門狗和自動喚醒單元。 LSE:低速外部時鐘,外接32.768kHz的石英晶體。 HSI:高速內部時鐘16MHz,RC振盪器,精度不高,可用作系統時鐘或PLL輸入。 HSE:高速
為什麼微控制器需要時鐘系統,時鐘訊號在微控制器中扮演怎樣的角色?
我自學了快一年的微控制器,DIY過51、msp430、STM32,會做一些基本的小專案,也瞭解一點微控制器的工作原理與結構,參加過2018年江蘇省電子設計大賽,還獲得了一等獎。 我懂,也同時不懂微控制器,不然也不會提出上面的這個問題。不懂就要去問,去查資料,然
STM32F103 時鐘系統明晰
本人小白一個,利用課外時間自學STM32。個人感覺,STM32的時鐘系統什麼的,感覺很複雜,對整個時鐘系統的概念都很模糊,只知道該怎麼配置,卻不知道是怎麼來的,所以就花了一天功夫專門上網蒐集了一下資料,整理之後在此用通俗易懂的語言分享出來。如有用詞不當以及總結錯誤的地方,
STM32 時鐘樹
在我之前的文章中講到了時鐘的使能,我們通過檢視系統的框架圖,找到了AHB系統匯流排,在圖中可以知道其為168MHz。那這168MHz是怎麼來的呢,STM32中的時鐘結構是怎樣的呢?時鐘的問題是一個很基礎的問題,是學習一款微控制器的核心,我們可以通過參考手冊看看STM32的時鐘樹是怎樣的。
stm32檔案系統fatfs(零碎筆記)-1
使用spi flash直接儲存資料有以下缺點: 1.難以記錄有效資料的位置 2.難以確定儲
S3C2440的時鐘系統:MPLL,UPLL,FCLK,HCLK,PCLK
S3C2440的預設工作主頻有兩種12MHz和16.9344MHz,也就是我們的晶振的頻率,但一般12MHz的晶振用的比較多,Fin就是指我們接的晶振頻率。大家都知道s3c2440上電正常工作後頻率是遠遠大於12MHz和16.9344MHz的,我們的
stm32時鐘配置 STM32CubeMX配置時鐘
軟體: (1)STM32CubeMX (2)KEIL5一、在時鐘配置過程中需結合實際情況配置外部晶振,教程配置外部晶振。如果沒有外部晶振則不用選擇,匯出時會自動生成內部時鐘程式。所對應的IO口也可以設定為普通IO口使用。1.在硬體上加入晶振,選擇相對應的晶振引腳(不選擇則預設
數字時鐘系統
SCM in multi-function digital clock in the application is already very common, people on the digital clock function and are very familiar with the work ord
STM32時鐘體系結構
STM32的時鐘體系可以直接以圖概括(摘自STM32F10X參考手冊) 下面就此圖做分析 1. STM32輸入時鐘源 1.1 時鐘源的作用 無論是小型微控制器還是像STM32這樣高階微控制器,它們工作的核心都是大規模的時序邏輯電路,而驅動時序邏輯
STM32F4再探-1.時鐘系統
在算已經入門了STM32之後(其實也不算入門了,只是會使用STM32的各種外設,會GPIO,會複用,能使用SPI,串列埠,會輸出PWM,會定時器,剛剛實現一個無線通訊控制步進電機按照一定流程運動,下一步打算移植UCOSIII到板子中),在這之前覺著好像僅僅只是會
STM32時鐘配置、GPIO配置
2017年11月13日 13:37 天氣:多雲,反正是看不到黨的光輝。。。。 今天在配置STM32的時鐘和GPIO時,發現了一個現象:GPIO埠的時鐘使能訊號必須在GPIO的
如何確認STM32時鐘配置是否正確
配置STM32F103時鐘(HSI)為48M void SystemClock_Config(void) { RCC_DeInit(); RCC_HSICmd(ENABLE); while(RCC_GetFlagStatus(RC