STM32GPIO
一.介绍
1.1GPIO特点
1,不同型号,IO口数量可能不一样,可通过选型手册快速查询
2,快速翻转,每次翻转最快只需要两个时钟周期(F1最高速度可以到50Mhz)
3,每个IO口都可以做中断
4,支持8种工作模式
1.2GPIO电气特性
1.STM32工作电压:2 V ≤ VDD ≤ 3.6
2.GPIO识别电压范围:COMS端口:-0.3V ≤ VIL ≤ 1.164V 逻辑0
1.833V ≤ VIH ≤ 3.6V 逻辑1
TTL端口:支持5v和3.3v,手册中标为FT
3.GPIO的输出电流:单个IO,最大25mA
1.3GPIO引脚分布
引脚类型:电源引脚、晶振引脚、复位引脚、下载引脚、BOOT引脚、GPIO引脚
电源引脚 |
VDD,VSS等V开头的引脚 |
晶振引脚 |
PC 14-0,PC 15_0,PD 0-OS,PD1-OS等 |
复位引脚 |
NRST |
下载引脚 |
|
BOOT引脚 |
BOOT T0 |
GPIO引脚 |
除此之外所有引脚 |
二.GPIO基础
2.1IO端口基本结构
f1系列:
f4系列
结构 |
F1系列 |
F4系列 |
上下拉电阻 |
输入可选,输出定值 |
输入,输出都可选 |
输入寄存器存储引脚电平,可以进行读取
输出高电平的时候,P-MOS导通,输出低电平的时候,N-MOS导通
输出控制器可以选择读取片外外设
保护二极管作为钳位作用,控制电压在承受范围内
2.2施密特触发器
作用:施密特触发器就是一种整形电路,可以将非标准方波,整形成方波
特点:
当输入电压高于正向阈值电压,输出为高;
当输入电压低于负向阈值电压,输出为低;
当输入在正负向阈值电压之间,输出不改变
2.3P-MOS和N-MOS
作用:MOS管是压控型元件,通过控制栅源电压( Vgs )来实现导通或关闭。
G:栅极 S:源极 D:漏极
P:Vgs<0,导通
N:Vgs>0,导通
三.GPIO的工作
3.1GPIO的八种工作模式
GPIO八种模式 |
特点及应用 |
输入浮空 |
输入用,完全浮空,状态不定 |
输入上拉 |
输入用,用内部上拉,默认是高电平 |
输入下拉 |
输入用,用内部下拉,默认是低电平 |
模拟功能 |
ADC、DAC |
开漏输出 |
软件IIC的SDA、SCL等 |
推挽输出 |
驱动能力强,25mA(max),通用输出 |
开漏式复用功能 |
片上外设功能(硬件IIC 的SDA、SCL引脚等) |
推挽式复用功能 |
片上外设功能(SPI 的SCK、MISO、MOSI引脚等) |
3.1.1输入浮空
①上拉电阻关闭
②下拉电阻关闭
③施密特触发器打开
④双MOS管不导通
特点:空闲时,IO状态不确定,由外部环境决定
3.1.2输入上拉
①上拉电阻打开
②下拉电阻关闭
③施密特触发器打开
④双MOS管不导通
特点:空闲时,IO呈现高电平
3.1.3输入下拉
①上拉电阻关闭
②下拉电阻打开
③施密特触发器打开
④双MOS管不导通
特点:空闲时,IO呈现低电平
3.1.4模拟功能
①上拉电阻关闭
②下拉电阻关闭
③施密特触发器关闭
④双MOS管不导通
特点:专门用于模拟信号输入或输出,如:ADC和DAC
3.1.5开漏输出
①上拉电阻关闭
②下拉电阻关闭
③施密特触发器打开
④ P-MOS管始终不导通
⑤往ODR对应位写0, N-MOS管导通, 写1则N-MOS管不导通
特点:
特点:不能输出高电平, 必须有外部(或内部) 上拉才能输出高电平
3.1.6推挽输出
①上拉电阻关闭
②下拉电阻关闭
③施密特触发器打开
④往ODR对应位写0, N-MOS管导通, 写1则P-MOS管导通
特点:可输出高低电平, 驱动能力强
3.1.7开漏式复用功能
①上拉电阻关闭
②下拉电阻关闭
③施密特触发器打开
④ P-MOS管始终不导通
特点:
1、不能输出高电平, 必须有外部(或内部) 上拉才能输出高电平
2、由其他外设控制输出
3.1.8推挽式复用功能
①上拉电阻关闭
②下拉电阻关闭
③施密特触发器打开
特点:
1、可输出高低电平, 驱动能力强
2、由其他外设控制输出
3.2GPIO寄存器
F1系列:
(F1系列)GPIO通用寄存器GPIOX_yyy |
|||||
CRL,CRH |
IDR |
ODR |
BSRR |
BRR |
LCKR |
配置工作模式,输出速度 |
输入数据 |
输出数据 |
设置ODR寄存器的值 |
F4之后没有这个寄存器,考虑代码兼容性的话不建议使用 |
配置锁定,用得不多 |
F4系列:
(F4/F7/H7系列)GPIO通用寄存器GPIOX_yyy | |||||||
MODER |
OTYPER |
OSPEEDR |
PUPDR |
IDR |
ODR |
BSRR |
LCKR |
设置模式 |
设置输出类型 |
设置输出速度 |
设置上下拉电阻 |
输入数据 |
输出数据 |
设置ODR寄存器值 |
配置锁定,用得不多 |
四.GPIO的配置
4.1初始化
时钟设置、参数设置、IO设置、中断设置(开中断、设NVIC)(可选)
使能时钟 __HAL_RCC_GPIOx_CLK_ENABLE()
设置工作模式 HAL_GPIO_Init()
设置输出状态(可选)HAL_GPIO_WritePin() HAL_GPIO_TogglePin()
读取输入状态(可选)HAL_GPIO_ReadPin()
HAL库驱动函数 |
主要寄存器 |
功能 |
__HAL_RCC_GPIOx_CLK_ENABLE() |
F1:RCC_APB2ENRF4:RCC_AHB1ENRF7:RCC_AHB1ENRH7:RCC_AHB4ENR |
开启GPIO时钟 |
HAL_GPIO_Init(...) |
F1:CRL、CRH、ODRF4/F7/H7:MODER、OTYPER、 OSPEEDR、PUPDR |
初始化GPIO |
HAL_GPIO_WritePin(...) |
BSRR |
控制IO输出高/低电平 |
HAL_GPIO_TogglePin(...) |
BSRR |
每次调用IO输出电平翻转一次 |
HAL_GPIO_ReadPin(...) |
IDR |
读取IO电平 |
4.2读函数(可选)
从外设读取数据(可选)
4.3写函数(可选)
往外设写入数据(可选)文章来源:https://www.toymoban.com/news/detail-795673.html
4.4中断服务函数(可选)
根据中断标志,处理外设各种中断事务(可选)文章来源地址https://www.toymoban.com/news/detail-795673.html
到了这里,关于STM32_GPIO的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!