一、寄存器介紹(詳見中文參考手冊7.4):
每組GPIO下面包含10個寄存器。也就是10個寄存器,一共可以控制一組GPIO的16個IO口。最多7組IO,也就是70個寄存器。
寄存器分別如下:
一個埠模式寄存器(GPIOx_MODER)
一個埠輸出類型寄存器(GPIOx_OTYPER)
一個埠輸出速度寄存器(GPIOx_OSPEEDR)
一個埠上拉下拉寄存器(GPIOx_PUPDR)
一個埠輸入數據寄存器(GPIOx_IDR)
一個埠輸出數據寄存器(GPIOx_ODR)
一個埠置位/復位寄存器(GPIOx_BSRR)
一個埠配置鎖存寄存器(GPIOx_LCKR)
兩個復用功能寄存器(低位GPIOx_AFRL& GPIOx_AFRH)
-----------------------------------------------------------------------------------------------------------------------------------------------------------
二、寄存器詳解
①埠模式寄存器(GPIOx_MODER)
②埠輸出類型寄存器(GPIOx_OTYPER)
③輸出速度寄存器(GPIOx_OSPEEDR)
④埠上拉下拉寄存器(GPIOx_PUPDR)
⑤埠輸出數據寄存器(GPIOx_ODR)
⑥埠輸入數據寄存器(GPIOx_IDR)
⑦埠置位/復位寄存器(GPIOx_BSRR)
----------------------------------------------------------------------------------------------------------------------------------
注意:如果在配置IO的寄存器前一定要先配置時鐘的寄存器,與庫函數版本一樣
各總線、外設基地址可參考STM32F4xx中文參考手冊2.3節的存儲器映射
推薦閱讀
首先介紹stm32的GPIO,這是入門的起點,也是最容易上手的部分。一、GPIO的綜合描述stm32每一個GPIO埠擁有2個32bits的configuration寄存器(GPIOx_CRL,GPIOx_CRH),2個32bits的數據寄存器(GPIOx_IDR,GPIOx_ODR),1個32bits的set/reset寄存器(GPIOx_BSRR),1個16bits的reset寄存器(GPIOx_BRR)和1個32bits的Lock寄存器(GPIOx_LCKR)。(一)每一個IO引腳都可以使用軟體配置為以下幾種模式: 1. 浮空輸入 2. 帶上拉輸入
發表於 2020-11-10
速度低於設計時速時,可以平穩地運行,如果超過設計時速就會顛簸,甚至翻車。 關鍵是: GPIO的引腳速度跟應用相匹配,速度配置越高,噪聲越大,功耗越大。 帶寬速度高的驅動器耗電大、噪聲也大,帶寬低的驅動器耗電小、噪聲也小。使用合適的驅動器可以降低功耗和噪聲。 GPIO的引腳速度跟應用匹配(推薦10倍以上)。比如: 1.1.1 對於串口,假如最大波特率只需115.2k,那麼用2M的GPIO的引腳速度就夠了,既省電也噪聲小。  
發表於 2020-11-09
1、介紹STM32F10x晶片的GPIO/AFIO配置主要包括以下幾方面知識:在時鐘控制模塊中配置好相應總線時鐘,並在總線上使能對應的GPIO口(AFIO口,需要的話)時鐘後:根據需求配置相應GPIO埠為對應的輸入/輸出模式,按需求更改/讀取埠的數據;埠功能重映射;若用外部中斷,則將中斷線與對應引腳連結起來。STM32F10x晶片的每個GPIO埠都有7個相關的寄存器:2個32位配置寄存器(GPIOx_CRL,GPIOx_CRH),兩個32位數據寄存器(GPIOx_IDR,GPIOx_ODR),一個32位置位/復位寄存器(GPIOx_BSRR),一個16位復位寄存器(GPIOx_BRR)和一個32位鎖定寄存器(GPIOx
發表於 2020-10-28
問題一:配置GPIO的步驟 現在做一個最簡單的GPIO控制LED的 GPIO初始化 (1)初始化結構體 GPIO_InitTypeDef GPIO_InitStructure; (2)使能相應的時鐘(程序最初應該有#define RCC_GPIO_LED GPIOB 或其他組埠) RCC_APB2PeriphClockCmd(RCC_GPIO_LED , ENABLE);  
發表於 2020-10-19
GPIO_Init函數是IO引腳的初始化函數,進行個個引腳的初始化配置,主要接受兩個參數,一個是配置引腳組(GPIO_TypeDef* GPIOx),一個是配置的參數( GPIO_InitTypeDef* GPIO_InitStruct),具體如下void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)/*其中第一個參數為那組引腳,每組擁有16個引腳,每組都具有不同的寄存器配置地址,第二個參數是一個數據結構,也就是將基本配置信息放在這個數據結構裡面,再將這個結構傳入函數進行配置*///其中數據機構可以表示為如下typedef struct
發表於 2020-10-19
1概述 埠I/O埠主要功能是用於內部單片機和外設進行通信的媒介。一個埠最多有8個引腳。引腳 每個引腳都是獨立的,也就是說當我們對其中一個引腳進行操作的時候不會影響到其他引腳。我們可以對引腳單獨設置為數字輸入或者數字輸出。其中有些引腳還可以用著模擬輸入和和外設中斷。同一時刻只有一個功能映射到同一個引腳。GPIO主要功能(我只列舉我比較陌生的)輸入兼容5v電壓I/O口工作電壓範圍為1.6V到VddiomaxI/O口的配置和使用IO口常用的寄存器有5個ODR IDR DDR CR1 CR2數據輸出寄存器ODR 輸入寄存器IDR  
發表於 2020-09-24