1.GPIO是STM32可控制的引脚,STM32的GPIO被分成很多组,每组有16个引脚。每个GPIO端口包含:2个32位配置寄存器(CRL、CRH),2个32位数据寄存器(IDR、ODR),1个32位复位寄存器(BSRR),1个16位复位寄存器(BRR)和1个32位锁定寄存器。
2.GPIO端口的每个位可以配置成:模拟输入、浮空输入、上拉输入、下拉输入、开漏输出、推挽输出、复用开漏输出、复用推挽输出。
3.复位寄存器(BSRR、BRR)可以对任何GPIO寄存器的独立访问。配置寄存器(CRL和CRH)可以配置GPIO的工作模式和工作速度,每4位控制一个IO,CRL控制低8位,CRH控制高8位。其中MODE位配置速度,CNF位配置输入输出模式。
4.GPIO属于高速的外设,挂载到APB2总线上,基本功能是控制引脚输出高电平或低电平。GPIO有很多寄存器,每一个都有特定的功能。每个寄存器32位,占4个字节。
5.GPIO:一个GPIO端口至少需要两个寄存器,一个做控制用的“通用IO端口控制寄存器”,还有一个是存放数据的“通用I/O端口数据寄存器”。数据寄存器的每一位是和GPIO的硬件引脚对应的,而数据的传递方向是通过控制寄存器设置的,通过控制寄存器可以设置每一位引脚的数据流向。最基本的输出功能是由STM32控制引脚输出高、低电平,实现开关控制,如把GPIO引脚接入到LED灯,那就可以控制LED灯的亮灭,引脚接入到继电器或三极管,那就可以通过继电器或三极管控制外部大功率电路的通断。最基本的输入功能是检测外部输入电平,如把GPIO引脚连接到按键,通过电平高低区分按键是否被按下。
6.STM32 GPIO 配置之ODR, BSRR, BRR:ODR寄存器可读可写,既能控制管脚为高电平,也能控制管脚为低电平。管脚对于位写1 gpio 管脚为高电平,写 0 为低电平。BSRR 只写寄存器:既能控制管脚为高电平,也能控制管脚为低电平。对寄存器高 16bit 写1 对应管脚为低电平,对寄存器低16bit写1对应管脚为高电平。写 0 ,无动作。BRR 只写寄存器:只能改变管脚状态为低电平,对寄存器 管脚对于位写 1 相应管脚会为低电平。写 0 无动作。
7.位带操作:可以实现对某一GPIO口寄存器(或SRAM内存中)的某一bit位直接写0或1,达到控制GPIO口输出(或改变SRAM中这一bit位的值)。
8.GPIO工作模式
模拟输入:AD采集、低功耗下省电
浮空输入:外部按键输入
下拉输入:IO内部下拉电阻输入
上拉输入:IO内部上拉电阻输入
开漏输出:连接不同电平、总线电路
推挽输出:常用
复用开漏输出:片内外设功能:TX1、MOSI、MISO、SCK、SS
复用推挽输出:片内外设功能:I2C的SCL、SDA
9.一个字节是8位,汇编中,为了表示一个整数类型,占用两个字节,用二进制来表示,即总共16位。例如:3的二进制是11,用两个字节表示为0000 0000 0000 0011,前面的8位称为高8位,后边的8位称为低8位。
10.GPIO上拉和下拉:上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。下拉同理。也是将不确定的信号通过一个电阻钳位在低电平。不过从程序设计的角度讲,上拉就是如果没有输入信号则此时I/O状态为1,下拉相反。
关键字:STM32 GPIO 寄存器
引用地址:
STM32中的GPIO笔记
推荐阅读最新更新时间:2026-03-21 10:53
STM32 GPIO操作深度解析:HAL库中的GPIO初始化艺术——不仅仅是配置寄存器的故事
???? 前言 你是不是也曾经天真地以为,控制几个LED灯只需要随便写两行代码?是不是觉得GPIO初始化不过是设置几个寄存器的小把戏?当你的按键检测出现抖动、LED莫名闪烁、通信接口罢工时,你是否怀疑过自己根本没真正理解GPIO?今天,就让我们把STM32的GPIO外衣一层层剥开,看看这个看似简单的功能模块背后藏着多少工程师的智慧结晶! 1. GPIO——被低估的硬件桥梁 GPIO(General Purpose Input/Output)是MCU与外部世界交互的物理接口。在STM32中,每个GPIO引脚都包含7个寄存器控制其行为: 4个32位配置寄存器(MODER, OTYPER, OSPEEDR, PUPDR) 2个3
[单片机]
基于stm32的GPIO寄存器学习解析
GPIO即通用输入/输出 (General Purpose Input Output) 包括: 两个32位的配置寄存器 GPIOx- CRL,GPIOx- CRH 两个32位的数据寄存器 GPIOx- IDR,GPIOx- ODR 一个32位的 set/reset 寄存器 GPIOx- BSRR 一位16位的 reset 寄存器 GPIOx- BRR 一位32位的锁定寄存器 GPIOx- LCKR 端口的模式包括: 浮空输入(Input floating)—— 即没有上拉电阻和下拉电阻,电压呈不确定性,一般用来做ADC输入用,这样可以减少上下拉电阻对结果的影响 上拉输入(Input pull-up) 下拉输入(Input-pu
[单片机]
STM32单片机GPIO概述及相关寄存器
5.1 STM32单片机GPIO概述 STM32中每个IO口都有很多个作用,比如这次我们使用的STM32F103ZET6的PA0口,既可以作为IO口使用,还可以作为待机唤醒(WAKEUP),模拟输入(ADC功能)等。根据数据手册中列出的每个I/O端口的特定硬件特征,GPIO端口的每个位可以由软件分别配置成多种模式。 (1)输入浮空 (2)输入上拉 (3)输入下拉 (4)模拟输入 (5)开漏输出 (6)推挽式输出 (7)推挽式复用功能 (8)开漏复用功能 每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问)。GPIOx_BSRR和GPIOx_BRR寄存器允许对任何GPIO寄存器的读/
[单片机]
STM32学习笔记(三)------GPIO口寄存器的操作与使用
1、STM32 的每个 IO 端口都有 7 个寄存器来控制 (1)配置模式的 2 个 32 位的端口 配置寄存器 CRL 和 CRH (2)2 个 32 位的数据寄存器 IDR 和 ODR (3)1 个 32 位的置位/复位寄存器 BSRR (4)一个 16 位的复位寄存器 BRR (5)1 个 32 位的锁存寄存器 LCKR。 2、每个GPIO端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)分别控制每个端口的高八位和低八位,如果IO口是0-7号的话,则写CRL寄存器,如果IO口是8-15号的话,则写CRH寄存器,两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR)一个是只读作输入数据寄存器,一个
[单片机]
STM32 GPIO 寄存器配置
一.CRH和CRL的使用:fficeffice / CRH和CRL的使用基本相同,CRH用于控制GPIOX(X表示A---G)的高8位(Pin15---Pin8),而CRL用于控制GPIOX(X表示A---G)的低8位(Pin7----Pin0)。 二.ODR的使用: 1. RCC- APB2ENR|=1 2; //使能PORTA时钟 GPIOA- CRH&=0XFFFFFFF0;//清除该位原来的设置 GPIOA- CRH|=0X00000003;//PA8 推挽输出 GPIOA- ODR|=
[单片机]
STM32的GPIO寄存器概述
一 GPIO寄存器整体上分为三类:a.控制寄存器;b.数据寄存器;c.锁存寄存器 A.控制寄存器(GPIO_CRL或者GPIO_CRH(CRL对应低8,CRH对应高8位))。具体如下见手册106页 CNFx MODE XX00-----输入模式(一般不谈速率) XX01-----输出模式(10M速率) XX10----输出模式(2M速率) XX11----输出模式(50M速率) 在输出模式下(50M为例) 0011----通用推挽输出 0111----通用开漏输出 1011----复用推挽输出 1111----复用开漏输出 在输入模式下 0000---模拟输入(ADC用) 0100---浮空输入 1000---上拉/下拉输入(当
[单片机]
STM32使用BSRR和BRR寄存器快速操作GPIO端口
STM32的每个GPIO端口都有两个特别的寄存器,GPIOx_BSRR和GPIOx_BRR寄存器,通过这两个寄存器可以直接对对应的GPIOx端口置'1'或置'0'。 GPIOx_BSRR的高16位中每一位对应端口x的每个位,对高16位中的某位置'1'则端口x的对应位被清'0';寄存器中的位置'0',则对它对应的位不起作用。 GPIOx_BSRR的低16位中每一位也对应端口x的每个位,对低16位中的某位置'1'则它对应的端口位被置'1';寄存器中的位置'0',则对它对应的端口不起作用。
[单片机]
STM32单片机GPIO寄存器
每个GPIO端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)分别控制每个端口的高八位和低八位,如果IO口是0-7号的话,则写CRL寄存器,如果IO口是8-15号的话,则写CRH寄存器,两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR)一个是只读作输入数据寄存器,一个是只写作输出寄存器,一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。常用的IO端口寄存器只有四个:CRH,CRL,IDR,ODR。 数据手册中列出的每个I/O端口的特定硬件特征, GPIO端口的每个位可以由软件分别配置成多种模式。每个I/
[单片机]