STM32F4 每组通用 I/O 端口包括 4 个 32 位配置寄存器(MODER、 OTYPER、 OSPEEDR和 PUPDR)、 2 个 32 位数据寄存器(IDR 和 ODR)、 1 个 32 位置位/复位寄存器 (BSRR)、
1 个 32 位锁定寄存器 (LCKR) 和 2 个 32 位复用功能选择寄存器(AFRH 和 AFRL)等。
这样, STM32F4 每组 IO 有 10 个 32 位寄存器控制,其中常用的有 4 个配置寄存器+2 个数据寄存器+2 个复用功能选择寄存器, 共 8 个,如果在使用的时候,每次都直接操作寄存器配置
IO,代码会比较多,也不容易记住,所以 ALIENTEK 提供 GPIO_Set 和 GPIO_AF_Set 两个函数,用于 IO 配置和复用功能设置。
同 STM32F1 一样, STM32F4 的 IO 可以由软件配置成如下 8 种模式中的任何一种:
1、 输入浮空
2、 输入上拉
3、 输入下拉
4、 模拟输入
5、 开漏输出
6、 推挽输出
7、 推挽式复用功能
8、 开漏式复用功能
首先看 MODER 寄存器,该寄存器是 GPIO 端口模式控制寄存器,用于控制 GPIOx(STM32F4 最多有 9 组 IO,分别用大写字母表示,即 x=A/B/C/D/E/F/G/H/I,下同) 的工作模
式,该寄存器各位描述如表 5.2.5.1 所示:
该寄存器各位在复位后,一般都是 0(个别不是 0,比如 JTAG 占用的几个 IO 口),也就是默认条件下一般是输入状态的。每组 IO 下有 16 个 IO 口,该寄存器共 32 位,每 2 个位控制