萌新的STM32學習-8
STM32CubeMX 是由 ST 公司開發的圖形化代碼自動生成工具,能夠快速生成初始化代碼,
如配置 GPIO,時鐘樹,中間件等,使用戶專注于業務代碼的開發。現在 ST 主推 HAL 庫代碼,
經典的標準外設庫已經停止維護了,新產品也只提供 HAL 庫的代碼,因此,我們學習 HAL 庫
是更加有優勢的,由于 HAL 庫具有低耦合、通用、抽象了硬件層,使得開發者無需太過關注硬
件驅動的實現,使得開發更加的簡單快速,更容易維護,因此被越來越多的產品所使用。
通過上一步安裝固件庫后,我們就可以使用 STM32CubeMX 配置工程,步驟如下:
- 工程初步建立
- HSE 和 LSE 時鐘源設置
- 時鐘系統(時鐘樹)配置
- GPIO 功能引腳配置
- 配置 Debug 選項
- 生成工程源碼
- 用戶程序
這左邊是外部時鐘晶振
這右邊這塊是(外部)輸入源時鐘信號
這兩個是內部時鐘信號源
2 個外部時鐘源:? 高速外部振蕩器 HSE (High Speed External Clock signal)
外接石英/陶瓷諧振器,頻率為 4MHz~16MHz。本開發板使用的是 8MHz。
? 低速外部振蕩器 LSE (Low Speed External Clock signal)
外接 32.768kHz 石英晶體,主要作用于 RTC 的時鐘源。
(2)2 個內部時鐘源:
? 高速內部振蕩器 HSI(High Speed Internal Clock signal)
由內部 RC 振蕩器產生,頻率為 8MHz。
? 低速內部振蕩器 LSI(Low Speed Internal Clock signal)
由內部 RC 振蕩器產生,頻率為 40kHz,可作為獨立看門狗的時鐘源。
芯片上電時默認由內部的 HSI 時鐘啟動,如果用戶進行了硬件和軟件的配置,芯片才會根
據用戶配置調試嘗試切換到對應的外部時鐘源,所以同時了解這幾個時鐘源信號還是很有必要
的。如何設置時鐘的方法我們會在后文提到。
在正點原子一般HSE接的是8MHz
因為我們從上面了解到經過HSE 以及HSI 才能達到 內部的頻率 SYSCLK 是72MHz 但是我們怎樣才能達到這個頻率呢 我們需要經過一個鎖相環PLL達到72MHz 倍乘
因為HSI是8MHz 進來先經過了一個二分頻就變成了4 HSE有2分頻 和1分頻 用內部4乘16=64 也滿足不了所需要的72MHz 所以基本上我們用的是外部 的HSE 8x9=72
經過SYSCLK 之后來到了HCLK HCLK其實就是我們的AHB高性能總線 從SYSCLK過來要經過一個分頻
來到HCLK之后 會經過2個橋 一個來到APB1 另一個來到APB2
APB1 最大是36M APB2 最大是72M
除了AHB總線之外那么HCLK總線上還會掛載一些外設 和 內核
繼而會從APB1 和APB2 各引出一個外設
上面講述的是高速的部分 接下來敘述一下低速的部分
LSI 與 LSE
LSI是40MHz LSE是 32.768MHz
LSI可以作為IWDG 和 RTC的時鐘源
LSE 只作為RTC的時鐘源
一些簡單的注意事項
由于外部的時鐘源振蕩器用的是晶體/陶瓷結構 而內部一般來說用的是RC 所以 我們大多會選用外部