侧边栏壁纸
博主头像
thinkTV博主等级

喜爱动漫的二刺螈一枚,摩托车云爱好者(快要有车了)。 懂一点技术的在读生物医学工程研究生( •̀ ω •́ )✧,多多指教。

  • 累计撰写 127 篇文章
  • 累计创建 17 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

STM32外设-GPIO

thinkTV
2023-06-21 / 0 评论 / 0 点赞 / 138 阅读 / 1,357 字 / 正在检测是否收录...

参考视频:【正点原子】手把手教你学STM32 HAL库开发全集

1. GPIO简介

  • General Purpose Input Output,即通用输入输出端口,简称GPIO
  • 作用:负责采集外部器件的信息或者控制外部器件工作,即输入输出

图片-1687335869337

2. STM32 GPIO简介

2.1 GPIO特点

  1. 不同型号,IO口数量可能不一样,需要通过选型手册快速查询
  2. 快速翻转,每次翻转最快只需要两个时钟周期(F1最高速度可以到50Mhz)
  3. 每个IO口都可以做中断
  4. 支持8种工作模式

2.2 GPIO电器特性

  1. STM32工作电压范围:2 V ≤ VDD ≤ 3.6 V
  2. GPIO识别电压范围:COMS端口:-0.3V ≤ VIL ≤ 1.164V; 1.833V ≤ VIH ≤ 3.6V
  3. GPIO输出电流:单个IO,最大25mA

2.3 GPIO引脚分布

STM32引脚类型:

电源引脚、晶振引脚、复位引脚、下载引脚、BOOT引脚、GPIO引脚

图片-1687336296366

IO引脚分布特点:按组存在、组数视芯片而定、每组最多16个IO引脚

3. IO端口基本结构介绍

F1的IO结构图:

图片-1687338221325

F4/F7/H7的IO结构图:

图片-1687338247608

下面以F1型号为例具体讲解:

图片-1687338301082

3.1 施密特触发器

施密特触发器就是一种整形电路,可以将非标准方波,整形成方波

特点:

  • 当输入电压高于正向阈值电压,输出为高;
  • 当输入电压低于负向阈值电压,输出为低;
  • 当输入在正负向阈值电压之间,输出不改变

图片-1687338379397

3.2 P-MOS & N-MOS管

MOS管是压控型元件,通过控制栅源电压( Vgs )来实现导通或关闭

图片-1687338476874

4. GPIO的八种模式(重要)

图片-1687338520270

4.1 输入浮空

图片-1687338573779

  • 上拉电阻关闭
  • 下拉电阻关闭
  • 施密特触发器打开
  • 双MOS管不导通

特点: 空闲时,IO状态不确定,由外部环境决定

4.2 输入上拉

图片-1687457606691

  • 上拉电阻打开
  • 下拉电阻关闭
  • 施密特触发器打开
  • 双MOS管不导通

特点: 空闲时,IO呈现高电平

4.3 输入下拉

图片-1687457698854

  • 上拉电阻关闭
  • 下拉电阻打开
  • 施密特触发器打开
  • 双MOS管不导通

特点: 空闲时,IO呈现低电平

4.4 模拟功能

图片-1687458363662

  • 上拉电阻关闭
  • 下拉电阻关闭
  • 施密特触发器关闭
  • 双MOS管不导通

特点: 专门用于模拟信号输入或输出,如:ADC和DAC

4.5 开漏输出

图片-1687458440508

  • 上拉电阻关闭
  • 下拉电阻关闭
  • 施密特触发器打开
  • P-MOS管始终不导通
  • 往ODR对应位写0,N-MOS管导通,写1则N-MOS管不导通

特点: 不能输出高电平,必须有外部(或内部)上拉才能输出高电平

4.6 开漏式复用功能

图片-1687458545303

  • 上拉电阻关闭
  • 下拉电阻关闭
  • 施密特触发器打开
  • P-MOS管始终不导通

特点:

1、不能输出高电平,必须有外部(或内部)上拉才能输出高电平
2、由其他外设控制输出

4.7 推挽输出

图片-1687458688785

  • 上拉电阻关闭
  • 下拉电阻关闭
  • 施密特触发器打开
  • 往ODR对应位写0,N-MOS管导通,写1则P-MOS管导通

特点: 可输出高低电平,驱动能力强

4.8 推挽式复用功能

  • 上拉电阻关闭
  • 下拉电阻关闭
  • 施密特触发器打开

特点:

1、可输出高低电平,驱动能力强
2、由其他外设控制输出

4.9 F4/F7/H7系列和F1系列的GPIO差异点

  1. F1在输出模式,禁止使用内部上下拉F4/F7/H7在输出模式,可以使用内部上下拉
  2. 不同系列IO翻转速度可能不同

5. GPIO寄存器介绍

图片-1687458996455

图片-1687458971958

5.1 端口配置低寄存器(CRL)- F1

设置工作模式、输出速度

图片-1687459050675

5.2 端口配置高寄存器(CRH)- F1

图片-1687459080797

5.3 工作模式配置补充 – F1

图片-1687459101454

输入上拉/下拉电阻通过ODR寄存器来设置

5.4 端口输入数据寄存器(IDR)– F1

图片-1687459176593

用于判断IO引脚的电平

5.5 端口输出数据寄存器(ODR)– F1

图片-1687459665662

用于设置IO引脚输出的电平

5.6 端口位设置/清除寄存器(BSRR)– F1

图片-1687459696392

用于设置ODR寄存器

6. 通用外设驱动模型(四步法)

  1. 初始化 :时钟设置、参数设置、IO设置、中断设置(开中断、设NVIC)
  2. 读函数(可选):从外设读取数据(可选)
  3. 写函数(可选):往外设写入数据(可选)
  4. 中断服务函数(可选):根据中断标志,处理外设各种中断事务(可选)

7. GPIO配置步骤

  1. 使能时钟 :__HAL_RCC_GPIOx_CLK_ENABLE()
  2. 设置工作模式:HAL_GPIO_Init()
  3. 设置输出状态(可选): HAL_GPIO_WritePin() 、HAL_GPIO_TogglePin()
  4. 读取输入状态(可选): HAL_GPIO_ReadPin()

相关HAL库函数简介

图片-1687460087505

0

评论区