您现在的位置是:首页 >技术杂谈 >【五一创作】《嵌入式系统》知识总结7:GPIO寄存器网站首页技术杂谈

【五一创作】《嵌入式系统》知识总结7:GPIO寄存器

Lv547 2024-06-17 10:13:33
简介【五一创作】《嵌入式系统》知识总结7:GPIO寄存器

总述

每组端口具有7个寄存器

• 实现对GPIO端口初始化配置和数据输入输出控制

1. 配置寄存器:GPIOx_CRL、GPIOx_CRH 用来选择引脚功能,例如输入或输出

2. 数据寄存器:GPIOx_IDR、GPIOx_ODR 用来保存引脚输入电平或输出电平

3. 位控寄存器:GPIOx_BSRR、GPIOx_BRR 用来控制某引脚为1或0

4. 锁定寄存器:GPIOx_LCKR 用来锁定引脚配置(不允许修改)

 每个寄存器只能以32位(字)进行访问

• 不允许16位(半字)或8位(字节)访问

GPIO的引脚配置

两个32位(一个64位)配置寄存器

每4位对应一个引脚(64位对应16个引脚)

• 低2位设置其工作模式(MODE)

• 高2位设置其配置(CNF:Configuration)

共有4种输入功能、4种输出功能

1. GPIO的配置寄存器

每组端口有两个32位配置寄存器

• 配置寄存器低(Low)字GPIOx_CRL

• 配置寄存器高(High)字GPIOx_CRH (x是A~G)

配置寄存器低字CRL低8位对应配置

低8位引脚引脚Px0、Px1、 ……Px7

配置寄存器高字CRH对应配置

高8位引脚Px8、Px9、 ……Px15

2. GPIO的数据寄存器

每组端口有两个32位数据寄存器

• 一个是输入数据寄存器IDR

• 一个是输出数据寄存器ODR

• 都只使用其低16位、依次对应每组16个GPIO引脚

当设置GPIO引脚为输入模式时

• 从输入数据寄存器GPIOx_IDR的相应位读出输入值

• 读到1表示该I/O引脚为高电平、读到0表示该引脚为低电平

当配置GPIO引脚为输出模式时

• 向输出数据寄存器GPIOx_ODR相应位写入1或0

• 写入1控制该I/O引脚为高、写入0控制该引脚为低电平

3. GPIO的位控寄存器

每个端口有两个位控寄存器

• 只能写入、不能读出

• 某位写入1实现I/O引脚复位或置位

• 写入0对I/O引脚无影响(作用)

一个是位置位/复位寄存器BSRR

• 高16位控制引脚为低电平(复位BR:Bit Reset)

• 低16位控制引脚为高电平(置位BS:Bit Set)

一个是位复位寄存器BRR

• 低16位控制引脚为低电平(复位BR:Bit Reset)

4. GPIO的锁定寄存器(x=A..E)

端口配置锁定寄存器GPIOx_LCKR(32位)

• 用于冻结配置寄存器对I/O引脚功能的设定

当对端口执行了写入锁定序列后

• 被锁定引脚配置的工作模式不能再改变

• 直到下次复位后才被解锁

锁定功能可以防止程序随意改变GPIO配置

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。