首页 > 其他分享 >【STM32】GPIO!

【STM32】GPIO!

时间:2022-10-22 12:32:07浏览次数:76  
标签:输出 HAL 引脚 低电平 STM32 GPIO

GPIO

GPIO:General Purpose Input & Output 是通用输入输出端口的简称,简单来说就是软件可控制的引脚, STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能

在这里插入图片描述

GPIO功能描述

STM32芯片最拥有GPIOA、GPIOB..GPIOG等7组端口,每组端口最多拥有Pin0、Pin1...Pin15共16个引脚。 STM32的每个I/O端口都可以自由编程,但I/O端口寄存器必须按32位字被访问。 STM32的每个I/O端口都由7个寄存器来控制 STM32的I/O端口可以由软件配置成8种模式:

  • 推挽输出
  • 模拟输入(AD转换的模拟信号)
  • 开漏输出
  • 浮空输入
  • 推挽式复用功能
  • 下拉输入
  • 开漏式复用功能
  • 上拉输入

上/下拉电阻

  • 开启上拉时,引脚默认电压为高电平
  • 开启下拉时,引脚默认电压为低电平
  • 上拉和下拉不开启时,这种状态我们称为浮空模式

在这里插入图片描述

开启上拉电阻或下拉电阻的作用

STM32内部的上拉其实是一个弱上拉,也就是说通过此上拉电阻输出的电流很小,如果想要输出一个大电流。那么就需要外接上拉电阻了,其实就是增加导线的输出电流。

下拉电阻情况相反,让STM32的CPU引脚输出低电平,结果由于后续电路影响输出的低电平达不到GND。所以接个下拉电阻,其实就是为了降低导线的输出电流。

另外当上下拉电阻都不开启,此时是浮空模式,引脚的电压是不确定的,此模式下的管脚电压会时不时改变。

所以为了防止引脚悬空,产生积累电荷、静电荷,造成电路不稳定。一般情况下,我们都会给引脚设置成上拉或者下拉模式,使它有一个确定的默认电平状态。

以上拉电阻举例,在STM32刚上电的时候,芯片引脚电平是不确定的。特别引脚是接按键的时候,必须给他个确定的电平。下拉电阻的作用就是,强制让电平保持在低电平。

推挽输出

GPIO引脚线路经过两个保护二极管后,向上流向“输入模式”结构,向下流向“输出模式”结构。先看输出模式部分,线路经过一个由P-MOS和N-MOS管组成的单元电路。

在这里插入图片描述 所谓的推挽输出模式,是根据这两个MOS管的工作方式来命名的。在该结构中输入高电平时,经过反向后,上方的P-MOS导通,下方的N-MOS关闭,对外输出高电平;而在该结构中输入低电平时,经过反向后,N-MOS管导通,P-MOS关闭,对外输出低电平。当引脚高低电平切换时,两个管子轮流导通,P管负责灌电流,N管负责拉电流,使其负载能力和开关速度都比普通的方式有很大的提高。推挽输出的低电平为0伏,高电平为3.3伏。

2个GPIO输出的HAL库函数

GPIO电平输出HAL库函数

void HAL _GPIO_ WritePin(GPIO_ _TypeDef* GPIOx, uint16_ t GPIO_ Pin, GPIO_ _PinState PinState);

三个参数:

  • 1- GPIOx: 目标引脚的端口号
  • 2- GPIO_ Pin:目标引脚的引脚号
  • 3- PinState:高电平---GPIO_PIN SET;低电平----GPIO_ PIN_ RESET

例:向PB8引脚输出高电平

HAL_ GPIO WritePin(GPIOB, GPIO_ PIN 8, GPIO_ PIN SET);

GPIO电平翻转HAL库函数

void HAL_ _GPIO_ _TogglePin(GPIO_ TypeDef* GPIOx, uint16_ _t GPIO_ _Pin);

例:将PA3引脚输出电平翻转。

HAL_ GPIO_ TogglePin(GPIOA, GPIO_ PIN 3);

GPIO的重要数据结构和HAL库函数

重要数据结构: 在这里插入图片描述HAL库函数: 在这里插入图片描述

GPIO初始化函数的源码结构

在这里插入图片描述

基于STM32CubeMX的跑马灯

利用STM32CubeMX对STM32芯片的LED控制引脚进行配置 并快速生产项目,在Keil5中进行代码编写,实现跑马灯

具体步骤见:STM32学习笔记1的后半部分

若将逻辑代码改为:

HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
HAL_Delay(500);
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);
HAL_Delay(500);

即实现了跑马灯的效果: 在这里插入图片描述 在这里插入图片描述

标签:输出,HAL,引脚,低电平,STM32,GPIO
From: https://blog.51cto.com/u_15623229/5785774

相关文章

  • 【STM32】按键开发!
    按键开发基础按键扫描的基本原理按键信号的识别:一般来说,按键的两个引脚的一端通过电阻上拉到高电平,另一端则接地在没有按键按下的时候,输入引脚为高电平当有按键按下,输......
  • 基于STM32跑步路径记录
    基于STM32跑步路径记录  随着科技不断进步,电子化设备不断进入涌入我们的日常生活。生活水平的提高,各项健身运动应运而生,然后,健身运动不能盲目进行,科学的健身方式才能有效......
  • 基于STM32简易计算器
    基于STM32简易计算器1.硬件平台CPU:STM32F103ZE屏幕:LCD屏幕接口(NT35310)触摸屏:XPT2046(SPI接口)外扩内存:IS62WV51216(FSMC驱动)2.功能实现​1.完成LCD驱动、触摸屏驱动,SPIF......
  • STM32之贪吃蛇游戏
    STM32之贪吃蛇游戏1.硬件平台STM32开发板0.96寸OLED屏(SPI接口)2.效果展示3.软件设计3.1OLED画点函数staticu8oled_gram[8][128];//屏幕缓冲区voidOLED_DrawPoint(u8x,u8......
  • QEMU 仿真模拟 STM32 最小开发板 STM32F103
    软件介绍QEMU是一款开源虚拟机,可以用来模拟各种系统开发板,当然也可以用来模拟stm32的开发板QEMU官方说明文档在此https://www.qemu.org/docs/master/system/ar......
  • STM32的优先级的理解及其使用
     有组0~4。同时对每一个中断设置一个抢占优先级和一个响应优先级值。分组配置是在寄存器SCB->AIRCR中配置:SCB->AIRCR为111,就是0位抢占,4位响应中断优先级表格  NVI......
  • 怎么在uboot下使用通用GPIO接口
    一:在uboot下的defconfig打开如下配置CONFIG_DM=yCONFIG_DM_GPIO=yCONFIG_DWAPB_GPIO=yCONFIG_CMD_GPIO=y二:重新编译u-boot后会生成cmd:gpio在板端执行"gpiostat......
  • ARM 笔记(1019)-- STM32部分--15 通用定时器的输出比较
    12.7通用定时器的输出比较我们不用滴答时钟,不用延时法,能不能实现呼吸灯?在工业控制中,很多场合需要产生PWM信号,那PWM信号如何产生?我们可以用定时器的输出比较功能实现上述......
  • 08. STM32按键检测
    ......
  • STM32 Note
    目录ST-LINK/V2手册STM3F103C8T6最小系统版的参数stm32cubeide一些BUG编译出错1坑:盗版STM32ST-LINK/V2手册手册可以从此处下载:[LINK]下面是一些摘要:......