資料介紹
今日分享 GPIO 結合寄存器以及硬件電路,再來舉例子分析輸入輸出。
寄存器介紹:
通過寄存器的位標注 rw,我們可知這個寄存器的某個位是可讀(r)并且可寫 的(w),我們也可以通過讀寄存器里面的值得到引腳的配置信息,如果寄存器的 位標注只有 r 或者 w,那么就代表這個寄存器的這個位只能進行讀(r)或者寫(w)
復位后 IO 口寄存器的值每一位可能不都是一樣的,也就是說復位后 IO 口的 狀態、工作模式等不完全相同,一定要注意

模式配置寄存器 GPIOx_MODER,右上角用藍色圓圈標識的地方告訴我們 IO 口的復位值,可以看到復位后對于 A 組 IO 口來說初始值 0XA8000000,對于 B 組 IO 口初始值為 0x00000280,其他組 IO 口都是 0。該寄存器共 32 位,每 2 個位 控制 1 個 IO
如圖中左下角劃藍線的為第 0 位和第 1 位。通過往第 0 位寫 0,第 1 位寫 0 配置成 Input Mode(輸入模式),通過往第 0 位寫 0,第 1 位寫 1 配置成 General purpose output Mode(普通輸出模式),通過往第 0 位寫 1,第 1 位寫 0 配置 成 Alternate function Mode(復用功能模式),通過往第 0 位寫 1,第 1 位寫 1 配置成 Analog Mode(模擬模式)
例如我們要把這個寄存器第 0 位寫 1,其他都寫 0,表示如下:
GPIOA->MODER |= 0x00000001;
這就相當于把 A 組的 PA0 口配置成了普通輸出模式,其他 IO 口配置成了輸入模 式

GPIOx_OTYPER 寄存器用于控制 IO 的輸出類型,僅用于輸出模式,在輸 入模式下不起作用。該寄存器低 16 位(第 0 位-第 15 位)有效,每一個位控制 一個 IO 口,根據往不同的位寫 1(開漏輸出)/寫 0(推挽輸出)來配置成不同的 輸出模式。復位后,該寄存器值均為 0,即默認為推挽輸出
例如我們往 A 組 IO 口的第 0 位寫 1 那就將 PA0 成開漏輸出模式:
GPIOA->OTYPER |= 0x00000001;

GPIOx_OSPEEDR 寄存器用于控制 IO 的輸出速度,僅用于輸出模式,在輸 入模式下不起作用。該寄存器每 2 個位控制一個 IO 口,根據往不同的位寫 1/ 清 0 不同的位來配置成不同的模式。復位后對于 A 口來說初始值為 0X0C000000, 對于 B 口初始值 0x000000C0,其他口都是 0
例如我們往 A 組 IO 口的第 0 位和第 1 位寫 1 那就將 PA0 成高速輸出模式: GPIOA->OSPEEDR |= 0x00000003;
GPIOx_PUPDR 寄存器用于控制 IO 的上拉/下拉,該寄存器每 2 個位控制 一個 IO 口, 用于設置上下拉,根據往不同的位寫 1/清 0 不同的位來配置成不 同的模式。復位后對于 A 口來說初始值為 0X64000000,對于 B 口初始值 0x00000100,其他口都 0x0C000000
例如我們往 A 組 IO 口的第 0 位寫 1 那就將 PA0 下拉模式: GPIOA->PUPDR |= 0x00000001;
GPIOx_ODR 寄存器是 IO 口的輸出數據寄存器,寄存器低 16 位(第 0 位- 第 15 位)有效,寄存器每 1 個位控制一個 IO 口, 也就是這個里面位的狀態 代表了單片機輸出的狀態,根據往不同的位寫 1/清 0 不同的位來配置成不同的 模式。復位后都是 0
例如我們往 A 組 IO 口的第 0 位寫 1 那 PA0 就輸出高: GPIOA->0DR |= 0x00000001;
對于一些其他的寄存器大家可以去參考數據手冊,按照上面講述的方法去配 置
硬件設計:

圖示LED燈部分我們用到了B組的2PIN(腳的簡稱)和4PIN, C組的15PIN, D 組的 8PIN, E 組的 8PIN 和 9PIN
LED 燈硬件的設計決定了 LED 燈的驅動方法,LED 燈相當于一個發光二 極管,如果單片機引腳輸出高,則二極管的左邊和右邊電壓相同,不亮,反之單 片機輸出低,右邊電壓大于左邊電壓通過單片機內部電路形成回路點亮二極管, 那麼通過控制引腳輸出的高低就控制了 LED 燈的亮滅
完整版技術文檔請點擊文章開頭普通下載
- 單片機學習之GPIO
- STM32學習筆記---GPIO
- 【STM32】標準庫與HAL庫對照學習教程特別篇--GPIO詳講
- 00_STM32F4學習_HAL庫_GPIO函數
- STM32MP157系列教程連載-Cortex-M4開發篇2:STM32MP1微控制器之GPIO編程
- STM32學習筆記1——軟硬件基礎之keil5編程與GPIO開發
- STM32H7學習之路繼續(stm32H7系列3) GPIO
- 2、【STM32F0系列學習】之—通用輸入輸出端口(GPIO)
- STM32F407標準庫學習筆記-GPIO
- STM32-GPIO篇
- STM32單片機GPIO學習
- MCU學習筆記_GPIO工作原理
- DSP之gpio_loopback教程 14次下載
- DSP之Gpio教程 8次下載
- STM32深入淺出之新手篇 128次下載
- STM32 GPIO的八種工作模式 1278次閱讀
- STM32之紅外遙控信號自學習實現 3556次閱讀
- STM32的GPIO在實際開發設計的使用配置和技巧 1018次閱讀
- i.MX6ULL學習筆記:GPIO按鍵輸入捕獲 1350次閱讀
- STM32的GPIO工作方式與基本結構 1871次閱讀
- STM32的GPIO使用 4596次閱讀
- STM32的八種GPIO工作方式詳解 9215次閱讀
- 如何將STM32單片機的JTAG口作為GPIO使用 4883次閱讀
- 基于STM32單片機流水燈控制中的GPIO_Init()函數解析 7381次閱讀
- 基于單片機STM32 GPIO 基本簡單操作函數教程 3383次閱讀
- 嵌入式學習之GPIO接口詳解 6617次閱讀
- 基于stm32f103zet6之NRF905無線模塊的學習 1w次閱讀
- STM32的GPIO輸出編程實例之點亮三色LED 2.8w次閱讀
- STM32之的GPIO推挽輸出與開漏輸出的區別 1.5w次閱讀
- 《振南電子STM32視頻教程》第七講:STM32的GPIO和AFIO的配置和應用 1373次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論