0%

STM32的GPIO使用

基本原理

GPIOF->BSRR = 0x00000001;

通用输入输出端口,就相当于一大堆导线,只不过可以通过代码对这些导线做到开关控制。每根导线相当于一条导线。对于输入也是看每条导线上的电压,电压高就是1,电压低就是0,这样就可以表示任何可以数字化的信息。

输入输出模式

绝大多数引脚都可以做IO口,通过复用可以做其他功能。有8种工作模式(4种输入,4种输出)

输入模式可以选择不同的上下拉,这样相当于节省了电路,避免在外面再接电阻了。

  • 推挽输出,强高低电平,适合数字器件
  • 开漏输出,强低电平,高电平需要外部上拉。适合电流型驱动,吸收电流能力强(啥叫吸收电流能力强)

输入模式没有开漏和推挽的区别,也就是输入端没有CMOS。

  • 浮空
  • 上拉
  • 下拉
  • 模拟

IO口有4种速度模式可选

寄存器

对应设置的寄存器

STM32F7 每组通用 I/O 端口包括 4 个 32 位配置寄存器(MODER、OTYPER、OSPEEDR 和 PUPDR)、2 个 32 位数据寄存器(IDR 和 ODR)、1 个 32 位置位/复位寄存器 (BSRR)、 1 个 32 位锁定寄存器 (LCKR) 和 2 个 32 位复用功能选择寄存器(AFRH 和 AFRL)等

IO要看好高电平有效,还是低电平有效

输出,低电平有效,外部可能是上拉到电源;高电平有效,外部接到地

输入,外部是低电平有效,内部就要上拉,如果0,表示来输入了;

软件部分

寄存器

​ 直接写二进制代码

HAL库

​ 利用API的方式,设置相关寄存器。设置了很多宏,就不用写二进制数字,更符合人的习惯。

​ 只是更好理解,工作量还是一样

IO复用

IO扩展

每个IO口都可作为中断

参考信息查询

选型手册

datasheet

参考手册

施密特触发器是什么?