STM32学习(五)
GPIO
General Purpose Input Output,通用输入输出端口,简称GPIO。
作用:
- 采集外部器件的信息(输入)
- 控制外部器件的工作(输出)
GPIO特点
1,不同型号,IO口数量可能不一样,可通过选型手册快速查询
2,快速翻转,每次翻转最快只需要两个时钟周期(F1最高速度可以到50Mhz)其实F103系统时钟72MHz,I/O口每次翻转最快达到36MHz,考虑超频到100MHz,F1最高速度就可以达到50MHz。
3,每个IO口都可以做中断(传统51单片机只有INT0,INT1两个中断)
4,支持8种工作模式
GPIO电气特性
开发板实际接3.3V
GPIO引脚类型:
-
电源引脚:以V字母开头的引脚
-
晶振引脚:外部低速晶振(32.768MHz)和外部高速晶振
-
复位引脚:NRST
-
下载引脚:串口下载引脚,SWD引脚,JTAG引脚
-
BOOT引脚:BOOT0,BOOT1(引脚复用PB2)
-
GPIO引脚:以P字母开头
不同芯片引脚分布情况
GPIOA有0~15个IO口
IO引脚分布特点:按组存在、组数视芯片而定、每组最多16个IO引脚
IO端口基本结构介绍
① 保护二极管(要在之前加限流电阻,否则有可能被击穿)
② 内部上拉、下拉电阻
③ 施密特触发器
④ P-MOS & N-MOS管
差别:上下拉电阻
斯密特触发器
斯密特触发器就是一种整形电路,可以将非标准方波,整形成方波。
- 当输入电压高于正向阈值电压,输出为高电平。
- 当输入电压低于负向阈值电压,输出为低电平。
- 当输入在正负向阈值电压之间,输出不变。
作用:整形!如正弦波转方波
P-MOS & N-MOS管简介
MOS管是压控型元件,通过控制栅源电压( Vgs )来实现导通或关闭。
G:栅极
S:源极
D:漏极
P:Vgs<0,导通
N:Vgs>0,导通
GPIO的8种工作模式
GPIO工作模式:输入浮空
①上拉电阻关闭
②下拉电阻关闭
③施密特触发器打开
④双MOS管不导通
特点:空闲时(高阻态,外部没有接任何东西),IO状态不确定,由外部环境决定。
输入上拉
①上拉电阻打开
②下拉电阻关闭
③施密特触发器打开
④双MOS管不导通
特点:空闲时,IO呈现高电平
模拟功能
①上拉电阻关闭
②下拉电阻关闭
③施密特触发器关闭
④双MOS管不导通
特点:专门用于模拟信号输入或输出,如:ADC和DAC
开漏输出
①上拉电阻关闭(输出时严格禁止)
②下拉电阻关闭
③施密特触发器打开
④ P-MOS管始终不导通(所以要接高电平VDD)
⑤往ODR对应位写0,N-MOS管导通(外部输出0),写1则N-MOS管不导通(高阻态)
特点:不能输出高电平,必须有外部上拉才能输出高电平
开漏式复用功能
①上拉电阻关闭
②下拉电阻关闭
③施密特触发器打开
④ P-MOS管始终不导通
由片上外设控制
特点:1.不能输出高电平,必须有外部(或内部)上拉才能输出高电平。2.由其它外设控制输出
推挽输出
①上拉电阻关闭
②下拉电阻关闭
③施密特触发器打开
④往ODR对应位写0,N-MOS管导通,写1则P-MOS管导通
特点:可输出高低电平,驱动能力强。
推挽式复用功能
①上拉电阻关闭
②下拉电阻关闭
③施密特触发器打开
特点:可输出高低电平,驱动能力强,由其它外设控制输出
1,F1在输出模式,禁止使用内部上下拉
F4/F7/H7在输出模式,可以使用内部上下拉
2,不同系列IO翻转速度可能不同
GPIO寄存器
端口配置低寄存器(CRL)- F1
设置工作模式,输出速度。
CRL和CRH共64个位,一组GPIO有16个口,所以平均4个位控制一个IO口。
所以CRL控制Px0~Px7,8个IO口。
所以CRL控制Px8~Px15,8个IO口。
端口输出数据寄存器(ODR)-F1
对应16个IO口,每个IO口一个位。
输入上拉/下拉电阻通过ODR寄存器来设置
端口输入数据寄存器(IDR)– F1
用于设置IO引脚输出的电平
端口位设置/清除寄存器(BSRR)-F1
用于间接控制ODR寄存器
ODR和BSRR寄存器控制输出有什么区别?
ST官方给的答案:使用ODR,在读和修改访问之间产生中断时,可能会发生风险;BSRR则无风险。
所以最好用BSRR寄存器控制输出