1.什么是GPIO?
General Purpose Input Output,即通用输入输出端口,简称GPIO 作用:负责采集外部器件的信息或者控制外部器件工作,即输入输出。
2.GPIO引脚分布
STM32引脚类型: 电源引脚、晶振引脚、复位引脚、 下载引脚、BOOT引脚、GPIO引脚
3.IO端口基本结构介绍
F1的IO结构图
F4/F7/H7的IO结构图
F1系列IO端口基本结构
① 保护二极管 ② 内部上拉、下拉电阻 ③ 施密特触发器 ④ P-MOS & N-MOS管
施密特触发器简介:施密特触发器就是一种整形电路,可以将非标准方波,整形成方波。
特点: 当输入电压高于正向阈值电压,输出为高; 当输入电压低于负向阈值电压,输出为低; 当输入在正负向阈值电压之间,输出不改变。
作用:整形!如正弦波转方波
P-MOS & N-MOS管简介
MOS管是压控型元件,通过控制栅源电压( Vgs )来实现导通或关闭。
G:栅极 S:源极 D:漏极 P:Vgs<0,导通 N:Vgs>0,导通
4.GPIO的八种模式分析
一、GPIO工作模式:输入浮空
①上拉电阻关闭 ②下拉电阻关闭 ③施密特触发器打开 ④双MOS管不导通
特点:空闲时,IO状态不确定,由外部环境决定
二、GPIO工作模式:输入上拉
①上拉电阻打开 ②下拉电阻关闭 ③施密特触发器打开 ④双MOS管不导通
特点:空闲时,IO呈现高电平
三、GPIO工作模式:输入下拉
①上拉电阻关闭 ②下拉电阻打开 ③施密特触发器打开 ④双MOS管不导通
特点:空闲时,IO呈现低电平
四、GPIO工作模式:模拟功能
①上拉电阻关闭 ②下拉电阻关闭 ③施密特触发器关闭 ④双MOS管不导通
特点:专门用于模拟信号输入或输出,如:ADC和DAC
五、GPIO工作模式:开漏输出
①上拉电阻关闭 ②下拉电阻关闭 ③施密特触发器打开 ④ P-MOS管始终不导通 ⑤往ODR对应位写0,N-MOS管导通,写1则N-MOS管不导通
特点:不能输出高电平,必须有外部(或内部)上拉才能输出高电平
六、GPIO工作模式:开漏式复用功能
①上拉电阻关闭 ②下拉电阻关闭 ③施密特触发器打开 ④ P-MOS管始终不导通
特点: 1、不能输出高电平,必须有外部(或内部)上拉才能输出高电平
2、由其他外设控制输出
七、GPIO工作模式:推挽输出
①上拉电阻关闭 ②下拉电阻关闭 ③施密特触发器打开 ④往ODR对应位写0,N-MOS管导通,写1则P-MOS管导通
特点:可输出高低电平,驱动能力强
八、GPIO工作模式:推挽式复用功能
①上拉电阻关闭 ②下拉电阻关闭 ③施密特触发器打开
特点: 1、可输出高低电平,驱动能力强 2、由其他外设控制输出
F4/F7/H7系列和F1系列的GPIO差异点:
1,F1在输出模式,禁止使用内部上下拉F4/F7/H7在输出模式,可以使用内部上下拉
2,不同系列IO翻转速度可能不同
5.GPIO寄存器介绍
端口配置低寄存器(CRL)- F1
设置工作模式、输出速度
端口配置高寄存器(CRH)- F1
设置工作模式、输出速度
工作模式配置补充 – F1
输入上拉/下拉电阻通过ODR寄存器来设置
端口输入数据寄存器(IDR)– F1
用于判断IO引脚的电平
端口输出数据寄存器(ODR)– F1
用于设置IO引脚输出的电平
端口位设置/清除寄存器(BSRR)– F1
用于设置ODR寄存器
6.通用外设驱动模型(四步法)
时钟设置、参数设置、IO设置、中断设置(开中断、设NVIC)(可选)
从外设读取数据(可选)
往外设写入数据(可选)
![](https://img-blog.csdnimg.cn/direct/2b447848f7ad4203814a7609e0745c0a.png)
根据中断标志,处理外设各种中断事务(可选)
7.GPIO配置步骤
__HAL_RCC_GPIOx_CLK_ENABLE()
HAL_GPIO_Init()
HAL_GPIO_WritePin()
HAL_GPIO_TogglePin()
HAL_GPIO_ReadPin()
相关HAL库函数简介