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-pull-down)
模拟输入(analog)
开漏输出(output open-drain)—— 输出逻辑0,则n-mos激活; 输出逻辑1,端口处于高阻(电阻非常大,但不是断路,此外,p-mos从未激活)
推挽输出(output push-pull)—— 输出逻辑0,则n-mos激活;输出逻辑1,p-mos激活
复用功能推挽输出(alternate function push-pull)——片内外设功能(i2c的scl,sda)
复用功能开漏输出(alternate function open-drain)——片内外设功能(usart的tx1,spi的mosi,miso,sck,ss)
复用开漏输出、复用推挽输出:可以理解为gpio口被用作第二功能时的配置情况(即并非作为通用io口使用)
注意:i / o端口寄存器被访问为32位字(半字或字节存取是不允许的)
其余具体的可以查看stm3210x 手册
gpiox->crl 低位(0-7)端口配置寄存器(x = a~ g,该寄存器偏移地址为:0x00):
gpiox->crh 高位(8-15)端口配置寄存器(x = a~ g,该寄存器偏移地址为:0x04):
gpiox->idr 端口数据输入寄存器(x = a~ g,该寄存器偏移地址为:0x08):只读,可以读取io口输入的值
gpiox->odr 端口数据输出寄存器(x = a~ g,该寄存器偏移地址为:0x0c):可写可读,可以设置io口输出的值
gpiox->bsrr 低位端口配置寄存器(x = a~ g,该寄存器偏移地址为:0x10):0-15位——为1时,可以使odrx相应的位置1,为0时,无变化 。15-31位——为1时,可以使odrx相应的位清零,为0时,无变化(注:当set和reset都设置了,则set优先级高)
gpiox->bsr 低位端口配置寄存器(x = a~ g,该寄存器偏移地址为:0x14): 0-15位——为1时,可以使odrx相应的位清零,为0时,无变化
注:用bsrr和brr去改变管脚状态的时候,没有被中断打断的风险,也就不需要关闭中断
gpiox->lckr 端口配置锁定寄存器(x = a~ g,该寄存器偏移地址为:0x18):用来锁定对应位的端口位配置,当端口被锁定时,不再有可能修改它的值,直到系统复位。每一个锁都冻结相应的4位控制寄存器(crl,crh)
例子:
/*根据高8位的输入电平来决定低8位的输出电平*/
gpioa->crl = 0x33333333; //gpioa.0-gpio0.7 output push-pull 50mhzgpioa->crh = 0x44444444; //gpioa.8-gpioa.15 input floating
while(1){if(gpioa->idr & 0xff00)gpioa->odr = (gpioa->idr >> 8) & 0xff;elsegpioa->odr = 0;}
2023年国内半导体产业展望(下)
小米推出“CC系列”主打女性市场?要“娘化”了?
你好上海!梅赛德斯-奔驰与您在CES Asia2018 展会不见不散
Micro LED将成为下一个自发光显示技术
Dbrain正在利用区块链给没有银行账户的人群提高生活标准的机会
基于stm32的GPIO寄存器学习解析
AMD与英特尔相比谁才是CPU界的大哥大
技术创新寻找印刷电路板组件(PCBAs)上的热点
浩鲸科技旗下WhaleTalk智能客服产品,与内蒙古电信合作正式拉开帷幕
雷射,雷射是什么意思
发电机励磁方式有哪些_三种发电机励磁方式
水晶光电车载光电团队斩获两大奖项!
5G的广泛应用将推动整个社会的智慧化进程
AVM全视监测系统方案介绍
电子电路维修之电阻器介绍
RFID标签的封装形式有哪些形式
西门子工控机的常见故障有哪些
TMC2130-TA步进电机驱动芯片
stm32舵机驱动程序分享
科技新宠区块链+物联网或将是一个新物种