STM32F407 144引脚
一共有7组IO口 每组16个IO口 总共16*7=112个IO口
每组GPIOA0~GPIOA15(共16个引脚)简写为PA0~PA15
芯片手册中IO口若在 I/Ostructure 中写有FT说明,即其IO口支持5v容忍
同时大部分IO口可以复用为外设功能引脚,所有的IO口都可以作为中断输入
每组IO口下面含有10个寄存器,一共可以控制GPIO的16个IO口
GPIOx_MODER 端口模式寄存器
00:输入(复位状态)
01:通用输出模式
10:复用功能模式
11:模拟模式
GPIOx_OTYPER 端口输出类型寄存器
0:输出推挽(复位状态)
1:输出开漏
GPIOx_OSPEEDR 端口输出速度寄存器
//用于配置I/O输出速度
00:2MHZ(低速)
01:25MHZ(中速)
10:50MHZ(快速)
11:30pF时为100MHZ(高速) || 15pF时为80MHZ输出(最大速度)
GPIOx_PUPDR 端口上拉下拉寄存器
//上下拉在STM32F1时在芯片内部,而在STM32F4则在外部,可通过寄存器控制
00:无上拉或下拉
01:上拉
10:下拉
11:保留
GPIOx_IDR 端口输入数据寄存器 //高16位reserved,无用
只读形式,读取IO口输入值为1还是0,读1为1,读0为0
GPIOx_ODR 端口输出数据寄存器 //高16位reserved,无用
0:输出0
1:输出1
GPIOx_BSRR 置位/复位寄存器
//出现该寄存器主要是为了在设置单独IO口时拉高(第低)其中一个引脚的电平的同时,不影响其他引脚的工作模式
低16位15:0:
0:对相应的IO口不执行任何操作,保留原状态
1:对相应的IO口置1,即输出高电平
高16位31:16:
0:对相应的IO口置0,即输出低电平
1:对相应的IO口不执行任何操作,保留原状态
GPIOx_LCKR 端口配置锁存寄存器
GPIOx_AFRL & GPIOx_AFRH 两个复位功能寄存器
输入工作模式:
输入浮空模式
输入上拉模式
输入下拉模式
模拟输入模式
输出工作模式:(输出模式可通过GPIOx_MODER & GPIOx_OTYER & GPIOx_PUPDR 共同决定)
//通过CPU写相关寄存器,或直接操作输出数据寄存器,输出1,通过输出控制电路,向外输出
开漏输出:只可以输出强低电平,NMOS管会将电平强行拉低,高电平得靠外拉电阻拉高
开漏输出模式
开漏复用输出模式
推挽输出:可以输出强高低电平,连接数字器件,通过NMOS,PMOS管控制输出1、0
推挽输出模式
推挽复用输出模式
原文:https://www.cnblogs.com/sailorwithoutsea/p/12394991.html