STM32 時鐘系統

STM32時鐘系統的基本概念
概念及意義
(1)概念:時鐘系統是由振蕩器(信號源)、定時喚醒器、分頻器等組成的電路。常用的信號源有晶體振蕩器和RC振蕩器。
(2)意義:時鐘對數字電路而言非常重要,沒有時鐘數字電路就沒法工作,其全稱是時鐘頻率,一般由晶振來提供時鐘頻率。在數字電路中,所有數據、邏輯單元等狀態的更新都是以時鐘為基礎的,時鐘頻率在數字電路中起著同步的作用。時鐘是嵌入式系統的脈搏,處理器內核在時鐘驅動下完成指令執行,狀態變換等動作。外設部件在時鐘的驅動下完成各種工作,比如串口的數據發送,A/D轉化,定時器計數等。因此時鐘對于計算機系統是至關重要的,通常時鐘系統出現問題也是致命的,比如振蕩器不起振,振蕩不穩,停振等。

常見的時鐘系統
(1)晶體振蕩器

石英晶體振蕩器是高精度和高穩定度的振蕩器,被廣泛的應用于彩電、計算機等各類振蕩電路中。
優點:相對來說振蕩頻率一般比較穩定,同時精度也比較高
缺點:價格稍微高點,還有用晶體振蕩器一般還需要接兩個15~33pF起振電容。

(2)RC振蕩器

電阻電容構成的振蕩電路,能夠將直流電轉化為具有一定頻率交流信號輸出的電子電路或裝置
優點:實現的成本比較低,
缺點:由于電阻電容的精度問題所以RC振蕩器的振蕩頻率會有誤差,同時也會受到問題濕度的影響

STM32 的時鐘系統圖:
在這里插入圖片描述
在這里插入圖片描述 在 STM32 中,有五個時鐘源,為 HSI、HSE、LSI、LSE、PLL。從時鐘頻率來分可以分為高速時鐘源和低速時鐘源,在這 5 個中 HIS,HSE 以及 PLL 是高速時鐘,LSI 和 LSE 是低速時鐘。從來源可分為外部時鐘源和內部時鐘源,外部時鐘源就是從外部通過接晶振的方式獲取時鐘源,其中 HSE 和 LSE 是外部時鐘源,其他的是內部時鐘源。下面我們看看 STM32 的 5 個時鐘源,我們講解順序是按圖中紅圈標示的順序:

①、HSI 是高速內部時鐘,RC 振蕩器,頻率為 8MHz。

②、HSE 是高速外部時鐘,可接石英/陶瓷諧振器,或者接外部時鐘源,頻率范圍為4MHz~16MHz。我們的開發板接的是 8M 的晶振。
③、LSI 是低速內部時鐘,RC 振蕩器,頻率為40kHz。獨立看門狗的時鐘源只能是 LSI,同時 LSI 還可以作為 RTC 的時鐘源。
④、LSE 是低速外部時鐘,接頻率為 32.768kHz 的石英晶體。這個主要是 RTC 的時鐘源。
⑤、PLL 為鎖相環倍頻輸出,其時鐘輸入源可選擇為 HSI/2、HSE 或者 HSE/2。倍頻可選擇為2~16
倍,但是其輸出頻率最大不得超過 72MHz。

5 個時鐘源是怎么給各個外設以及系統提供時鐘的:
A. MCO 是 STM32 的一個時鐘輸出 IO(PA8),它可以選擇一個時鐘信號輸出,可以選擇為 PLL 輸出的 2 分頻、HSI、HSE、或者系統時鐘。這個時鐘可以用來給外部其他系統提供時鐘源。

B. 這里是 RTC 時鐘源,從圖上可以看出,RTC 的時鐘源可以選擇 LSI,LSE,以及HSE 的 128 分頻。

C. 從圖中可以看出 C 處 USB 的時鐘是來自 PLL 時鐘源。STM32 中有一個全速功能的 USB 模塊,其串行接口引擎需要一個頻率為 48MHz 的時鐘源。該時鐘源只能從 PLL 輸出端獲取,可以選擇為 1.5 分頻或者 1 分頻,也就是,當需要使用 USB模塊時,PLL 必須使能,并且時鐘頻率配置為 48MHz 或72MHz。

D. D 處就是 STM32 的系統時鐘 SYSCLK,它是供 STM32 中絕大部分部件工作的時鐘源。系統時鐘可選擇為 PLL 輸出、HSI 或者 HSE。系統時鐘最大頻率為 72MHz,當然你也可以超頻,不過一般情況為了系統穩定性是沒有必要冒風險去超頻的。

E. 這里的 E 處是指其他所有外設了。從時鐘圖上可以看出,其他所有外設的時鐘最終來源都是SYSCLK。SYSCLK 通過 AHB 分頻器分頻后送給各模塊使用。這些模塊包括:

  • AHB 總線、內核、內存和 DMA 使用的 HCLK 時鐘。

  • 通過 8 分頻后送給 Cortex 的系統定時器時鐘,也就是 systick 了。

  • 直接送給 Cortex 的空閑運行時鐘 FCLK。

  • 送給 APB1 分頻器。APB1 分頻器輸出一路供 APB1 外設使用(PCLK1,最大頻率 36MHz),另一路送給定時器(Timer)2、3、4 倍頻器使用。

  • 送給 APB2 分頻器。APB2 分頻器分頻輸出一路供 APB2 外設使用(PCLK2,最大頻率 72MHz),另一路送給定時器(Timer)1 倍頻器使用。

其中需要理解的是 APB1APB2 的區別,APB1 上面連接的是低速外設,包括電源接口、備份接口、CAN、USB、I2C1、I2C2、UART2、UART3 等等,APB2 上面連接的是高速外設包括 UART1、SPI1、Timer1、ADC1、ADC2、所有普通 IO 口(PA~PE)、第二功能 IO 口等。記憶方法是 2>1, APB2 下面所掛的外設的時鐘要比 APB1 的高。

總結一下:
SystemInit()函數中設置的系統時鐘大小:

  • SYSCLK(系統時鐘) =72MHz

  • AHB 總線時鐘(使用 SYSCLK) =72MHz

  • APB1 總線時鐘(PCLK1) =36MHz

  • APB2 總線時鐘(PCLK2) =72MHz

  • PLL 時鐘 =72MHz

RCC相關配置寄存器:
在這里插入圖片描述
RCC相關頭文件和固件庫源文件:
在這里插入圖片描述
stm32獨立看門狗和窗口看門狗的區別為:時鐘源不同、中斷不同、使用條件不同。
一、時鐘源不同

  • stm32獨立看門狗:stm32獨立看門狗使用的是內部專門的 40Khz低速時鐘,不需要使能時鐘操作。
  • 窗口看門狗:窗口看門狗使用的是 PCLK1的時鐘,使用前需要先使能時鐘。

二、中斷不同

  • stm32獨立看門狗:stm32獨立看門狗沒有中斷,超時直接位。
  • 窗口看門狗:窗口看門狗可以在中斷中做位前的函數操作。

三、使用條件不同

  • stm32獨立看門狗:stm32獨立看門狗一般用于避免程序跑飛或者死循環。
  • 窗口看門狗:窗口看門狗避免程序不安預定邏輯執行,比如先于理想環境完成,或者后于極限時間超時。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272344.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272344.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272344.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【轉載】性能測試淺談

本文主要針對WEB系統的性能測試。不涉及具體的執行操作,只是本人對性能測試的一點理解和認識。 性能測試的目的,簡單說其實就是為了獲取待測系統的響應時間、吞吐量、穩定性、容量等信息。而發現一些具體的性能相關的缺陷(如內存溢出、并發處…

SystemInit時鐘系統初始化函數剖析

SystemInit()函數: void SystemInit (void) {/* Set HSION bit */RCC->CR | (uint32_t)0x00000001;//把內部的HSI RC(高速時鐘)打開#ifndef STM32F10X_CLRCC->CFGR & (uint32_t)0xF8FF0000;//這一句不會執行…

火狐表格錯亂兼容性問題

對于某一單元行需要顯示時,使用CSS display:block屬性,不需要顯示時使用display:none屬性,在IE瀏覽器中顯示正常,沒有任何問題,但是當用Firefox瀏覽時卻出現了布局錯亂的問題,這是為什么呢? 本文…

docker ps命令詳解 列出運行中的容器

docker ps命令詳解 列出運行中的容器 使用docker ps命令即可列出運行中的容器,執行該命令后,會出現如下7列表格 CONTAINER_ID 表示容器ID IMAGE 表示鏡像名稱 COMMAND 表示啟動容器時運行的命令 CREATED …

Lattice 的 Framebuffer IP核使用調試筆記之datasheet筆記

本文由遠航路上ing 原創,轉載請標明出處。 學習使用以及調試Framebuffer IP 核已經有一段時間了,調試的時候總想記錄些東西,可是忙的時候就沒有時間來寫,只有先找個地方記錄下,以后再總結。所以找這個時間好好的記錄學…

Systick滴答定時器寄存器、delay()延時函數、SysTick_Config函數

SysTick定時器 SysTick定時器,是一個簡單的定時器,對于CM3、CM4內核的芯片都有SysTick定時器。SysTick 是一個 24 位的倒計數定時器,當計數到 0 時,將從RELOAD 寄存器中自動重裝載定時初值,開始新一輪計數。只要不把它…

查看docker容器日志

1:實時查看docker容器id為 02c5ac132ee5 的最后10行日志 docker logs -f -t --tail 10 02c5ac132ee5 2:查看指定時間后的日志,只顯示最后100行: docker logs -f -t --since"2020-02-14" --tail100 d7db22166a0a 3:查看最近20分鐘的…

Web UI 自動化測試環境搭建 (轉載自51測試天地第三十九期上)

1. 安裝 Python 2.7 并設置系統環境變量 2. 下載并安裝 python setuptools Easily download, build, install, upgrade, and uninstall Python packages https://pypi.python.org/pypi/setuptools#installation-instructions 2.1 找到ez_setup.py,點擊右鍵--目標另存…

STM32F1 端口復用、端口(部分和完全)重映射

端口復用功能 STM32 有很多的內置外設(比如:串口、ADC、DAC等是獨立的模塊和內核連接在一起),這些外設的外部引腳都是與 GPIO 復用的。也就是說,一個 GPIO如果可以復用為內置外設的功能引腳,那么當…

docker啟動容器后容器狀態為Exited (137) 5 seconds ago

1:因為容器里的運行的代碼報錯了,然后容器 Exited (1) 3 seconds ago 了,通過 docker logs -f container_id 能看到哪里錯了 容器樁體為exited,說明容器已經退出停止 先查看查看鏡像id ps images 在后臺運行一個容器 為了保證提…

ReflectionClass與Closure

<?php /*** Class A*/ class A{}$obj new ReflectionClass(A); var_export($obj.PHP_EOL); 類后面加上PHP_EOL會把當前類的詳細接口文檔打印出來。 ReflectionClass 可以利用這個動態創建類&#xff0c;動態使用類方法參數。 try{ //如果存在控制器名字的類 if(class_exis…

STM32中斷優先級的管理(NVIC)

STM32 NVIC 中斷優先級管理 CM3 內核支持 256 個中斷&#xff0c;其中包含了 16 個內核中斷和 240 個外部中斷&#xff0c;并且具有 256級的可編程中斷設置。STM32 并沒有使用 CM3 內核的全部東西&#xff0c;而是只用了它的一部分。STM32 有 84 個中斷&#xff0c;包括 16 個…

docker修改容器名字

查看一下容器的名字 這個laughing_elion是下載es時候默認的名字 修改容器名字 docker rename 容器原來名 要改為的名字 最后可以看到容器名已經修改成功

STM32 串行通信原理

處理器與外部設備通信的兩種方式&#xff1a; 并行通信 傳輸原理&#xff1a;數據各個位同時傳輸。優點&#xff1a;速度快缺點&#xff1a;占用引腳資源多 串行通信 傳輸原理&#xff1a;數據按位順序傳輸。優點&#xff1a;占用引腳資源少缺點&#xff1a;速度相對較慢 …

linus下centos7防火墻設置

CentOS7 默認使用firewalld防火墻&#xff0c;如果想換回iptables防火墻&#xff0c;可關閉firewalld并安裝iptables。 1:安裝firewalld服務 yum install firewalld 2、firewalld的基本使用 啟動&#xff1a; systemctl start firewalld &#xff08;關閉后顯示notrunning&a…

串口通信寄存器/庫函數配置、實例編寫

常用的串口相關寄存器 USART_SR狀態寄存器USART_DR數據寄存器USART_BRR波特率寄存器 串口操作相關庫函數&#xff08;省略入口參數&#xff09;&#xff1a; void USART_Init(); //串口初始化&#xff1a;波特率&#xff0c;數據字長&#xff0c;奇偶校驗&#xff0c;硬件流…

使用docker安裝Mongodb

下載mongo3.2的docker鏡像&#xff1a; docker pull mongo:3.2 使用docker命令啟動&#xff1a; docker run -p 27017:27017 --name mongo \ -v /mydata/mongo/db:/data/db \ -d mongo:3.2 查看已經成功啟動

移動端meta標簽

現在的手機或平板電腦等移動設備上的瀏覽器默認都有雙擊放大的設置&#xff0c;如何阻止雙擊放大&#xff1f;user-scalableno <!-- 禁止縮放 --> <meta name”viewport” content”widthdevice-width,initial-scale1.0,maximum-scale1.0,user-scalableno”> <!…

正點原子stm32--串口通信實驗講解里關于USART_RX_STA的問題與思考

這篇博文講的挺詳細的可以參考以下&#xff1a; USART_RX_STA詳解

什么是真正的程序員?

什么是真正的程序員 這篇文章的原文來自&#xff1a;A Little Printf Story作者仿照《小王子》中的情節&#xff0c;通過小printf遇見的不同類型的程序員&#xff0c;最后悟出什么才是真正的程序員&#xff01;第一次翻譯有很多不妥&#xff0c;歡迎留言指正。 文章略長&#x…