9.1 基本配置

GPIO可通过下列寄存器进行功能配置:

  • 功率:总是使能;

  • 引脚:请参考“引脚功能选择寄存器值”来查看相关的GPIO引脚和模式;

  • 唤醒:如有需要,GPIO端口0和端口2可用于唤醒操作,见“从低功耗模式唤醒”章节;

  • 中断:GPIO中断可在IO0/2IntEnR(表9.15)或IO0/2IntEnF(表9.16)中使能。使用对应的中断置位使能寄存器即可在NVIC中使能中断。具体的编程示例可以参考I O口中断实验

9.2 特性

9.2.1 数字I/O端口

  • 加速GPIO功能:

  • GPIO寄存器被转移到外设AHB总线,以实现高速的I/O时序;

  • 屏蔽寄存器允许将某些端口位作为一组进行操作,而其它位不变;

  • 所有GPIO寄存器都可以字节、半字和字寻址;

  • 整个端口值可用一条指令写入;

  • GPIO寄存器可由GP DMA进行访问;

  • 需要一些实际应用经验?看看这个I O端口的典型应用及经验分享吧!

  • 位电平置位和清零寄存器允许用一条指令置位清零一个端口的任意位;

  • 所有GPIO寄存器支持Cortex-M3位带操作;

  • GPIO寄存器可由GPDMA控制器进行访问,允许对GPIO进行DMA数据操作,使之与DMA请求同步;

  • 单个端口的方向可控制;

  • 所有I/O口在复位后默认为上拉输入。

9.2.2 可产生中断的数字端口

  • PORT0和PORT2端口的每个引脚都可以提供中断功能;

  • 每个端口上的中断可被编程为上升沿、下降沿或边沿产生中断;

  • 边沿检测是异步的,因此可以在没有时钟的情况下(例如掉电模式)操作。使用这种特性,就无需电平触发中断;

  • 可掉电唤醒;

  • 寄存器为软件提供挂起的上升沿中断、挂起的下降沿中断和整个挂起的GPIO中断;

  • GPIO0和GPIO2中断与外部中断3事件共用相同的NVIC通道。若需要更详细的配置方法,可以参考STM32CUBE配置GPIO中断以及中断回调函数编写

9.3 应用

  • 通用I/O;

  • 驱动LED或其它的指示器;

  • 控制片外器件;

  • 检测数字输入信号及边沿信号;

  • 可掉电唤醒器件。你是否需要更多关于掉电唤醒的编程实例?这里有个不错的资源:I O口中断换醒睡眠模式的编程实例