---
# System prepended metadata

title: STM時鐘樹與總線
tags: [STM32]

---

[TOC]

![image](https://hackmd.io/_uploads/r1F5dVB2R.png)

# 時鐘(Clock)
- 時鐘的快慢決定數位電路的運行速度
- 對於通訊或是控制要求，講究輸出或輸入訊號的鮑率或者計時精確度，都由時鐘做決定

# 預除器(Prescaler)
- 不同的電路功能可能需要不同的時鐘頻率，如果每個時鐘頻率都需要一個震盪器產生並不符合效益
- 預除器可以將一個時鐘源頻率向下切割，下面這張圖很好理解它的作用原理
    ![image](https://hackmd.io/_uploads/SyHrerBnC.png)

- 設置的輸出頻率即把原本頻率除以prescaler，譬如原本是16Mhz，prescaler設為8，則輸出的頻率則變為2MHz
- 


# CubeMX時鐘配置
- STM的時鐘結構說明可見 野火-HAL庫實戰開發或手冊或[上網查查](https://blog.csdn.net/changxiaoyong8/article/details/128204355)
- 最右側的輸出為MCU內不同類別對應的時鐘源，配置的主要目的是讓最右側的各個時鐘源符合需求，這些時鐘源溯及既往可以看到 : 
    - APBx Prescaler
    - HCLK
    - AHB Prescaler
    - SYSCLK
- 通常使SYSCLK或HCLK直接到最高速的 168 MHz，因此在更前面的System Clock Mux選擇用PLLCLK
- 電路設計上只能有1、2、4、8...分頻
- 如果有顯示紅色代表設置不正確要注意
- 

# 時鐘源區別
- 除了一些明確標明用途的時鐘源(如Ethernet PTP clock)，其他主要為APBx peripheral clock和APBx timer clock
- APBx 為 總線名稱，不同的周邊設備或timer吃不同的總線，因此需要確認自己的需求應該調整哪個總線上的時鐘源!
- 不同功能對應到的總線可以到rm0090手冊的 Table 1. STM32F4xx register boundary addresses 查詢

# STM 總線
- rm0090 2.3 Memory map
- 