stm32学习笔记——GPIO组及相关寄存器

在stm32f103zet6中有7个GPIO组(GPIOA,GPIOB......GPIOG)

每组包含16位IO口(以A为例,GPIOA[0..15])

以组为单位,每组有7个寄存器,分别是:

2个32位端口配置寄存器(GPIOx_CRL和GPIOx_CRH)

每1位IO口需要4位寄存器控制

2位控制输入输出模式

(00)输入模式        (01)最大10Mhz输出        (10)最大2Mhz输出        (11)最大50Mhz输出

2位控制8种工作方式(输入模式下四种,输出模式下四种)

00011011
输入模拟输入浮空输入上拉/下拉输入保留
输出通用推挽输出通用开漏输出复用推挽输出复用开漏输出
则一组GPIO 16位需要16*4=64位端口配置寄存器,故CRL控制0~7位,CRH控制8~15位 

1个32位端口输入数据寄存器(GPIOx_IDR)

低16位对应该GPIO组IO端口的读取数据(即输入模式下的结果,当然输出模式下也可以直接从IDR读取输出的结果),高16位保留始终为0。该寄存器是只读的。

 1个32位端口输出数据寄存器(GPIOx_ODR)

低16位控制对应GPIO组的16个IO端口的输出数据,该16位可读可写,且只能以字(16位)操作。高16位保留始终读取为0。用法举例:上拉/下拉输入模式下ODR0/1对应下拉/上拉;通用推挽/开漏输出模式下ODR0/1对应输出0/1。

 1个32位端口置位/复位寄存器(GPIOx_BSRR)

低16位控制置1,高16位控制清0,当某一位为1时执行功能,为0时不改变ODR的值,某一位同时被置1和清0时,置位优先级高于复位。低16位和高16位都只能写入且只能通过字(16位)进行操作。

 1个16位复位寄存器(GPIOx_BRR)

该寄存器作用较小,在F1中的作用和BSRR的高位一致。

1个32位锁存寄存器(GPIOx_LCKR) 

不是很懂,好像不太常用,略过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值