1.復(fù)位和時鐘系統(tǒng)
1.1. 復(fù)位
CIU32M010、CIU32M030 支持系統(tǒng)復(fù)位、電源復(fù)位和主復(fù)位。
1.1.1. 系統(tǒng)復(fù)位
系統(tǒng)復(fù)位將復(fù)位除某些復(fù)位狀態(tài)寄存器和特殊功能寄存器之外的所有寄
當(dāng)以下事件中的一件發(fā)生時,產(chǎn)生一個系統(tǒng)復(fù)位
• SLEEP 模式下外部 IO 口喚醒
• WDT 計(jì)數(shù)溢出復(fù)位
• 系統(tǒng)鎖定復(fù)位
1.1.2. 主復(fù)位
主復(fù)位能將部分系統(tǒng)復(fù)位無法復(fù)位的寄存器復(fù)位。
以下事件可以觸發(fā)一個主復(fù)位
• 軟件復(fù)位
• PVD 檢測到電壓低事件,且控制器處于復(fù)位功能模式
1.1.3. 電源復(fù)位
上電/掉電復(fù)位(POR/PDR 復(fù)位)都屬于電源復(fù)位。電源復(fù)位將復(fù)位所有
復(fù)位入口矢量被固定在地址 0x0000_0004。
1.2 時鐘
1.2.1. 模塊框圖
1.2.2. HIRC 時鐘
HIRC 時鐘信號由內(nèi)部 72MHz 的振蕩器產(chǎn)生,HIRC 振蕩器能夠在
的條件下提供系統(tǒng)時鐘。HIRC 需要頻率校準(zhǔn),校準(zhǔn)值寫在 FLASH 系
使用這個時鐘前,可以讀取并配置出高精度的 HIRC 時鐘。經(jīng)過出廠
圍下 HIRC 精度為 72MHz(±1.5%),具體請參考電氣特性參數(shù) 。
1.2.3. LIRC 時鐘
LIRC 振蕩器擔(dān)當(dāng)一個低功耗時鐘源的角色,它作為系統(tǒng)啟動時鐘為其
LIRC 時鐘頻率大約 256KHz。
1.2.4. 系統(tǒng)時鐘(SYSCLK)
兩種不同的時鐘源可被用來驅(qū)動系統(tǒng)時鐘(SYSCLK)
• 內(nèi)部低速 256KHz LIRC
• 內(nèi)部高速 72MHz(±1.5%) 高速振蕩器
1.2.5. 毛刺濾波時鐘源選擇
三種不同的時鐘源可被用來驅(qū)動 GPIO 的毛刺濾波時鐘
• 內(nèi)部高速 HIRC 的分頻時鐘
• 內(nèi)部低速 LIRC_256K 8 分頻時鐘
• 系統(tǒng)時鐘
• 內(nèi)部低速 LIRC_256K
當(dāng)不被使用時,任一個時鐘源都可被獨(dú)立地啟動或關(guān)閉,由此優(yōu)化系統(tǒng)
通用輸入輸出
2.1. 模塊介紹
每組 GPIO 端口有四個 32 位配置寄存器
(GPIOx_MODE,GPIOx_OTYPE,GPIOx_OSPEED and GPIOx_PUPD)
存器(GPIOx_IDAT and GPIOx_ODAT),一個 32 位置位/復(fù)位寄存器
(GPIOx_BSR)和一個 32 位翻轉(zhuǎn)寄存器(GPIOx_TGL)。另外,所有 G
選擇寄存器(GPIOx_AFRH and GPIOx_AFRL)。
注:GPIOx 中的 x 表示 GPIO 組數(shù)。
2.2. 功能特點(diǎn)
• 輸出狀態(tài):推挽或開漏(上下拉)
• 輸出寄存器狀態(tài)值(GPIOx_ODAT) 或者復(fù)用功能輸出
• 輸入狀態(tài):浮空、上下拉、模擬
• 輸入數(shù)據(jù)到數(shù)據(jù)寄存器(GPIOx_IDAT) 或復(fù)用功能輸入
• 獨(dú)立置位/復(fù)位/翻轉(zhuǎn) IO 狀態(tài)(GPIOx_ BSR、GPIOx_TGL)
• 模擬功能
• 復(fù)用功能(開漏或推挽、上拉或下拉)
2.3. 功能說明
GPIO 的每一個端口可以通過軟件獨(dú)立配置成下面狀態(tài)
• 輸入浮空
• 輸入上拉
• 輸入下拉
• 模擬功能
• 開漏輸出(上拉或下拉)
• 推挽輸出
• 復(fù)用功能(開漏或推挽、上拉或下拉)
2.3.1. 通用 IO(GPIO)
復(fù)位期間和剛復(fù)位后,復(fù)用功能未開啟,IO 端口被配置成浮空輸入模
時,寫到輸出數(shù)據(jù)寄存器上的值(GPIOx_ ODAT)輸出到相應(yīng)的 IO
開漏模式使用輸出驅(qū)動器。輸入數(shù)據(jù)寄存器(GPIOx_ IDAT)在每個 A
腳上的數(shù)據(jù)。所有 GPIO 引腳有一個內(nèi)部弱上拉,當(dāng)配置為輸入時,
2.3.2. 單獨(dú)的位操作
當(dāng)對 GPIOx_ ODAT 的個別位編程時,軟件不需要禁止中斷:在單次
以只更改一個或多個位。只需要通過對“置位/復(fù)位寄存器”(GPIOx_
器”(GPIOx_TGL)中想要更改的位寫“1”來實(shí)現(xiàn)。沒被選擇的位將
2.3.3. 復(fù)用功能(AF)
芯片 IO 引腳通過多路選擇器連接到片內(nèi)外設(shè),每個 IO 上同一時刻
能。每個 IO引腳有一個 2 輸入的多路選擇器連接到復(fù)用功能(AF0
GPIOx_AFRH/L 選擇功能。如果把端口配置成復(fù)用輸出功能,則引腳
并和片上外設(shè)的輸出信號連接。如果軟件把一個 GPIO 腳配置成復(fù)用
將不確定。
2.3.4. GPIO 鎖定機(jī)制
鎖定機(jī)制允許在 GPIO 控制寄存器 GPIOx_LCK 上執(zhí)行一串鎖定程序
狀態(tài)鎖定,一旦 GPIO 狀態(tài)被鎖定,將不可改變,直到復(fù)位。被鎖定
(GPIOx_MODE, GPIOx_OTYPE,GPIOx_OSPEED, GPIOx_PUPD, GP
GPIOx_AFRH)。鎖定序列參考 GPIOx_LCK 寄存器描述 。
2.3.5. 輸入配置
當(dāng) IO 端口配置為輸入時
• 輸出緩存器被禁止
• 根據(jù)輸入配置(上拉、下拉或浮空)的不同,弱上拉和下拉電阻被連
• 出現(xiàn)在 IO 腳上的數(shù)據(jù)在每個 APB 時鐘被采樣到輸入數(shù)據(jù)寄存器
• 對輸入數(shù)據(jù)寄存器的讀訪問可得到 IO 狀態(tài)
2.3.6. 輸出配置
當(dāng) IO 端口被配置為輸出時
• 輸出緩沖器被激活開漏模式:輸出寄存器上的“0”激活 N-MOS,
1”將端口置于高阻態(tài)(P-MOS從不被激活)推挽模式:輸出寄存器上的
而輸出寄存器上的“1”將激活 P-MOS。
• 施密特觸發(fā)輸入被激活
• 弱上拉和下拉電阻被禁止 CIU32M010、CIU32M030
• 出現(xiàn)在 IO 腳上的數(shù)據(jù)在每個 APB 時鐘被采樣到輸入數(shù)據(jù)寄存器
• 在開漏模式時,對輸入數(shù)據(jù)寄存器的讀訪問可得到 IO 狀態(tài)
• 在推挽模式時,對輸出數(shù)據(jù)寄存器的讀訪問得到后一次寫的值
2.3.7. 模擬輸入配置
當(dāng) IO 端口被配置為模擬輸入配置時
• 輸出緩存器被禁止
• 禁止施密特觸發(fā)輸入,實(shí)現(xiàn)了每個模擬 IO 引腳上的零消耗。施密特
“0”
• 弱上拉和下拉電阻被禁止
• 讀取輸入數(shù)據(jù)寄存器時數(shù)值為“0”
2.3.8. 復(fù)用功能配置
對 IO 端口進(jìn)行編程作為復(fù)用功能時
• 在開漏或推挽式配置中,輸出緩沖器被打開
• 內(nèi)置外設(shè)的信號驅(qū)動輸出緩沖器 (復(fù)用功能輸出)
• 施密特觸發(fā)輸入被激活
• 弱上拉和下拉電阻被禁止
• 在每個 APB 時鐘周期,出現(xiàn)在 IO 腳上的數(shù)據(jù)被采樣到輸入數(shù)據(jù)寄
• 開漏模式時,讀輸入數(shù)據(jù)寄存器時可得到 IO 口狀態(tài)
• 在推挽模式時,讀輸出數(shù)據(jù)寄存器時可得到后一次寫的值