锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

STM32学习--GPIO(寄存器)

时间:2023-11-13 14:07:02 mp1201二极管

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、GPIO是什么?
  • 二、引脚
  • GPIO的输入
    • 输入框图
    • 输入模式
    • 作用
  • GPIO的输入
    • 输入框图
    • 输入模式
    • 作用
  • GPIO特性
  • GPIO寄存器
    • GPIO 端口模式寄存器 (GPIOx_MODER) (x = A..I)
    • GPIO 端口输出类型寄存器 (GPIOx_OTYPER) (x = A..I)
    • GPIO 端口输出速度寄存器 (GPIOx_OSPEEDR) (x = A..I/)
    • GPIO 端口上拉/下拉寄存器 (GPIOx_PUPDR) (x = A..I/)
    • GPIO 端口输入数据寄存器 (GPIOx_IDR) (x = A..I)
    • GPIO 端口输出数据寄存器 (GPIOx_ODR) (x = A..I)
    • GPIO 端口位置/复位寄存器 (GPIOx_BSRR) (x = A..I)
  • 总结


一、GPIO是什么?

GPIO(General Purpose I/O Ports)意思是一般输入/输出端口,一般来说是一些引脚,可以输出高低电平或读入引脚状态——高电平或低电平。
GPIO口腔是一个更重要的概念,用户可以通过GPIO数据交互(如口与硬件)UART),控制硬件工作(如LED、
蜂鸣器等。),读取硬件工作状态信号(如中断信号)等。GPIO口腔被广泛使用。

二、引脚

GPIO引脚由端口号划分,端口号:GPIOA,GPIOB,GPIOC----,GPIOG;每个端口号最多有16个引脚。
例如:GPIOA0号引脚标记为PA0
STM32F407

GPIO的输入

输入框图

输入模式

1、浮空输入
IO电压值由外设决定
2、输入上拉
此时,外设没有发送数据IO默认电压为高电平;
外设发送数据1,IO为高;
外设发送数据0,IO为低;
3、输入下拉
此时,外设没有发送数据IO默认电压为低电平;
外设发送数据1,IO为高;
外设发送数据0,IO为低;
4、模拟输入
ADC

作用

1.将数据输入寄存器
2.向ADC输入(模拟输入)
3.重用于其他外设输入:USART、SPI、IIC之类的外设

GPIO的输入

输入框图


P-MOS:输出高电平
N-MOS:输出低电平
同时只有一个MOS管导通。
三极管模拟mos管:
输出控制器输出高电平 推过程 P导通 输出高电平
输出控制器输出低电平 挽过程 N导通 输出低电平 例如,图中二极管产生压差导通

输入模式

1.具有上拉或下拉功能的泄漏输出
2.具有上拉或下拉功能的推拉输出
3.具有上拉或下拉功能的复用功能推拉
4.具有上拉或下拉功能的复用功能泄漏

作用

1.开漏输出只能输出低电平/或由上拉电阻决定
2.推拉输出高可输出低电平
3.复用仍然是复用USART、SPI、IIC之类的外设

GPIO特性

● 受控 I/O 多达 16 个
● 输出状态:推拉或泄漏 上拉/下拉
● 从输出数据寄存器 (GPIOx_ODR) 或外设(复用功能输出)输出数据
● 可为每个 I/O 选择不同的速度
● 输入状态:浮空、上拉/下拉、模拟
● 数据输入输入数据寄存器 (GPIOx_IDR) 或外设(复用功能输入)
● 位置和复位寄存器 (GPIOx_BSRR),对 GPIOx_ODR 有按位写的权限
定机制 (GPIOx_LCKR),可冻结 I/O 配置
●模拟功能
复用功能输入/输出选择寄存器(一个 I/O 最多可具有 16 复用功能)
快速翻转只需要两个只需要两个时钟
引脚复用非常灵活,允许 I/O 引脚用作 GPIO 或多种外设功能中的一种

每个 I/O 端口可以自由编程,但是 I/O 必须按下端口寄存器 32 访问位字、半字或字节。 GPIOx_BSRR 寄存器旨在实现正确 GPIO ODR 原子读取/修改访问的寄存器可以保证 读取和修改访问之间的中断请求没有问题。
字:4个字节
半字:两个字节
字节:一个字节

GPIO寄存器

每个通用 I/O 端口包括 4 个 32 配置寄存器(GPIOx_MODER、GPIOx_OTYPER、 GPIOx_OSPEEDR 和 GPIOx_PUPDR)、2 个 32 位数据寄存器(GPIOx_IDR 和 GPIOx_ODR)、1 个 32 位置位置/复位寄存器 (GPIOx_BSRR)、1 个 32 位置锁定寄存器 (GPIOx_LCKR) 和 2 个 32 位复用功能选择寄存器(GPIOx_AFRH 和 GPIOx_AFRL)。

GPIO 端口模式寄存器 (GPIOx_MODER) (x = A…I)


一般来说,选择端口的工作模式是用于相应的位置写入值
例如:给GPIOA8号引脚配置为输出模式
找到 GPIOA的MODER寄存器(GPIOA->MODER),端口A的默认值为0xA800 0000(10101000 00000000 00000000 01写在17、16位(GPIOA->MODER|=(1<<16))得到0xA8010000(10101000 00000001 00000000 00000000) 这样就给GPIOA配置为输出模式
注:区分手册上的地址和值

GPIO 端口输出类型寄存器 (GPIOx_OTYPER) (x = A…I)


一般来说,用于配置输出模式
输出模式只有两种,所以一个可以操作,所以16到31保留,写入操作和模式寄存器相同,一个寄存器占据四字节,所以偏移4

GPIO 端口输出速度寄存器 (GPIOx_OSPEEDR) (x = A…I/)

用于配置输出速度
偏移地址:0x08
● 0x0000 00C0(端口 B)
● 0x0000 (其他端口)
00:2 MHz(低速)
01:25 MHz(中速)
10:50 MHz(快速)
11:30 pF 时为 100 MHz(高速)(15 pF 时为 80 MHz 输出(最大速度)

GPIO 端口上拉/下拉寄存器 (GPIOx_PUPDR) (x = A…I/)


用于配置端口上拉下拉
00:无上拉或下拉
01:上拉
10:下拉
11:保留

GPIO 端口输入数据寄存器 (GPIOx_IDR) (x = A…I)


用来存放I/O口电平状态

GPIO 端口输出数据寄存器 (GPIOx_ODR) (x = A…I)


用于存储输出I/O口电平状态

GPIO 端口位置/复位寄存器 (GPIOx_BSRR) (x = A…I)

对端口电平进行置位复位操作(0或1)类似于ODR

总结

文章介绍了GPIO的输入输出原理,和寄存器配置操作

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章