GPIO寄存器
一、GPIO簡介
每個通用 I/O 端口包括 4 個 32 位配置寄存器(GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR 和 GPIOx_PUPDR)、2 個 32 位數(shù)據(jù)寄存器(GPIOx_IDR 和GPIOx_ODR)、1 個 32 位置位/復位寄存器 (GPIOx_BSRR)、1 個 32 位鎖定寄存器(GPIOx_LCKR) 和 2 個 32 位復用功能選擇寄存器(GPIOx_AFRH 和 GPIOx_AFRL)。
二、GPIO主要特性
●受控 I/O 多達 16 個
● 輸出狀態(tài):推挽或開漏 + 上拉/下拉
● 從輸出數(shù)據(jù)寄存器 (GPIOx_ODR) 或外設(復用功能輸出)輸出數(shù)據(jù)
● 可為每個 I/O 選擇不同的速度
● 輸入狀態(tài):浮空、上拉/下拉、模擬
● 將數(shù)據(jù)輸入到輸入數(shù)據(jù)寄存器 (GPIOx_IDR) 或外設(復用功能輸入)
● 置位和復位寄存器 (GPIOx_BSRR),對 GPIOx_ODR 具有按位寫權限
● 鎖定機制 (GPIOx_LCKR),可凍結(jié) I/O 配置
● 模擬功能
● 復用功能輸入/輸出選擇寄存器(一個 I/O 最多可具有 16 個復用功能)
● 快速翻轉(zhuǎn),每次翻轉(zhuǎn)最快只需要兩個時鐘周期
● 引腳復用非常靈活,允許將 I/O 引腳用作 GPIO 或多種外設功能中的一種
三、GPIO 8種功能模式
● 輸入浮空?
● 輸入上拉?
● 輸入下拉?
● 模擬功能
● 具有上拉或下拉功能的開漏輸出?
● 具有上拉或下拉功能的推挽輸出
● 具有上拉或下拉功能的復用功能推挽?
● 具有上拉或下拉功能的復用功能開漏
四、GPIO寄存器
配置寄存器
GPIOx_MODER 寄存器用于選擇 I/O 方向(輸入、輸出、AF、模擬)
GPIOx_OTYPER 選擇輸出類型(推挽或開漏)
GPIOx_OSPEEDR 選擇速度 (無論采用哪種 I/O 方向,都會直接將 I/O 速度引 腳連接到相應的 GPIOx_OSPEEDR 寄存器位)
GPIOx_PUPDR 無論采用哪種 I/O 方向,GPIOx_PUPDR都用于選擇上拉/下拉。
數(shù)據(jù)寄存器
GPIOx_ODR 用于存儲待輸出數(shù)據(jù),可對其進行讀/寫訪問。
GPIOx_IDR 通過 I/O 輸入的數(shù)據(jù)存儲到輸入數(shù)據(jù)寄存器GPIOx_IDR中,它是一個只讀寄存器。
數(shù)據(jù)位操作
GPIOx_BSRR 32 位寄存器,允許應用程序在輸出數(shù)據(jù)寄存器(GPIOx_ODR) 中對各個單獨的數(shù)據(jù)位執(zhí)行置位和復位操作。
在 GPIOx_BSRR 中向任何位寫入 0 都不會對 GPIOx_ODR 中的對應位產(chǎn)生任何影響。如果在 GPIOx_BSRR 中同時嘗試對某個位執(zhí)行置位和清零操作,則置位操作優(yōu)先。
當對GPIOx_BSRR低16位置1時相應的ODR置1當對高16位置1時清零相應的ODR位
鎖定寄存器
GPIOx_LCKR GPIOx_LCKR 寄存器,可以凍結(jié) GPIO 控制寄存器。凍結(jié)的寄存器包括 GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR、GPIOx_PUPDR、GPIOx_AFRL 和 GPIOx_AFRH。
復用寄存器
GPIOx_AFRL 和 GPIOx_AFRH 復用功能寄存器在每個 GPIO 上復用多個可用的外設功能。這樣一來,應用程序可為每個 I/O 選擇任何一個可用功能。由于 AF 選擇信號由復用功能輸入和復用功能輸出共用,所以只需為每個 I/O 的復用功能輸入/輸出選擇一個通道即可。

版權聲明:文章來源于網(wǎng)絡,版權歸原作者所有,如有侵權,請聯(lián)系刪除。