#蓝桥杯嵌入式#通用GPIO学习

这篇的目的主要是介绍GPIO,以便后续相关编程好理解各种寄存器以及数值的意义
总目录:目录

GPIO功能描述

  • 每个GPI/O端口都有 7 个寄存器,包括两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR,GPIOX_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)
  • 通过软件,GPIO端口每个位可以配置成多种模式:
    • 输入浮空
    • 输入上拉
    • 输入下拉
    • 模拟输入
    • 开漏输出
    • 推挽式输出
    • 推挽式复用功能
    • 开漏式复用功能

推挽输出可以输出强高低电平,连接数字器件
开漏输出只能输出强低电平,高电平需外部上拉电阻,输出端相当于三极管集电极,适合于做电流型驱动

  • 每个I/O位可以自由编程,但必须按32位字被访问(不允许字节或半字),GPIOx_BSRR和GPIOx_BRR寄存器允许对任何GPIO的读/更改独立访问,这样在读和更改访问之间产生IRQ是不会发生危险

IRQ为 Interrupt ReQuest的缩写,中文可译为中断请求.
“紧急事件”须向处理器提出申请(发一个电脉冲信号),要求“中断”,即要求处理器先停下“自己手头的工作”先去处理“我的急件”,这一“申请”过程,称——中断请求。

GPIO寄存器描述

关于MODE和CNF,MODE配置输入/输出及其速度,CNF选择八种模式

端口配置低寄存器(GPIOx_CRL)

在这里插入图片描述

端口配置高寄存器(GPIOx_CRH)

在这里插入图片描述

端口输入数据寄存器(GPIOx_IDR)

在这里插入图片描述

端口输出数据寄存器(GPIOx_ODR)

在这里插入图片描述

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

在这里插入图片描述

端口复位寄存器(GPIOx_BRR)

在这里插入图片描述

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

在这里插入图片描述

GPIO点灯参考代码

#define LED_REG (*(volatile unsigned int *)(0x40011C00|0x10))//(基地址|偏移地址)具体数值看数据手册,0x10是BSRR寄存器

int main()
{
	while(1)
	{//这里11值得11引脚,可根据实际需要进行调换
		LED_REG |= 1<<11;//位或,将第11位置1
		//根据数据手册,位15:0为1时,设置对应ODRy位位1
		Delay(100);
		LED_REG &= ~(1<<11);//与或,~表示取反,将第11位置0,位15:0为0时,对对应ODRy位无影响
		//其实上句可以不要,置位之后硬件会自动设置BSRR清零
		LED_REG |= 1<<(11+16);//位11移16位,对应的是BRy,为1时,清楚对应ODRy位为0
		Delay(100);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值