首页 > 其他分享 >【CUBEide】01 GPIO输入/输出

【CUBEide】01 GPIO输入/输出

时间:2024-08-13 15:58:10浏览次数:16  
标签:输出 01 HAL PIN 引脚 低电平 CUBEide GPIO

一、GPIO功能概述

1、八种工作模式

(1)输入浮空:作为GPIO输入引脚,不使用上拉或下拉电阻;

(2)输入上拉:作为输入引脚,使用内部上拉电阻,引脚外部无输入时读取的电平为高电平;

(3)输入下拉:输入引脚,使用内部下拉电阻,引脚外部无输入时读取的引脚输入电平为低电平

(4)模拟:作为GPIO模拟引脚,用于ADC输入引脚或DAC输出引脚;

(5)具有上拉或下拉的开漏输出:如果不使用上拉或下拉电阻,开漏输出1时引脚是高阻态,输出0时引脚是低电平,这种模式可以用于公用总线的信号。

(6)具有上拉或下拉的推挽输出:如果不使用上拉或下拉电阻,推挽输出1时引脚是高电平,输出0时引脚是低电平。若需要增强引脚输出驱动能力,就可以使用上拉,例如,需要GPIO输出高电平点亮LED;

(7)具有上拉或下拉的开复用推挽输出;

(8)具有上拉或下拉的开复用开漏输出

2、GPIO的HAL驱动程序

1、初始化函数HAL_GPIO_Init()

函数HAL_GPIO_Init()用于对一个端口的一个或多个相同功能的引脚进行初始化设置,包括输入/输出模式、上拉或下拉等。

void HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init)
例: HAL_GPIO_Init(GPIOB,&GPIO_InitStruct)

2、设置引脚输出的函数HAL_GPIO_WritePin()

使用此函数向一个或多个引脚输出高电平或低电平。

例如:要使PF9和PF10输出低电平
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9|GPIO_PIN_10,GPIO_PIN_RESET);
若要输出高电平
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9|GPIO_PIN_10,GPIO_PIN_SET);

3、读取引脚输入的函数HAL_GPIO_ReadPin();

用于读取GPIO引脚电平状态的函数。

HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)

函数的返回值是枚举类型GPIO_PinState,GPIO_PIN_RESET表示输入为0(低电平),GPIO_PIN_SET表示输入为1(高电平)
 

/* 读取GPIOA的第0个引脚状态 */
        if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_SET)
        {
            /* 如果引脚为高电平,则点亮LED灯 */
            HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET);
        }
        else
        {
            /* 如果引脚为低电平,则熄灭LED灯 */
            HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);
        }


4、翻转引脚输出的函数HAL_GPIO_TogglePin()

函数用于翻转引脚的输出状态,例如当前引脚输出为高电平,执行后引脚输出变为低电平。

HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_6);

3、GPIO使用示例

1、CubeMX配置

LED电路是由外接3.3V电源驱动的,当GPIO引脚输出为0时,LED点亮;输出为1时,LED熄灭;配置为推挽输出。

对于按键电路,外端接地,按键按下时,输入低电平,所以使用输入上拉。

RCC

SYS

时钟树

最后生成代码。

2、代码分享

通过百度网盘分享的文件:00.zip
链接:https://pan.baidu.com/s/1lNWt3g8CxxxR6kCn8aC9Cg
提取码:eeju

标签:输出,01,HAL,PIN,引脚,低电平,CUBEide,GPIO
From: https://blog.csdn.net/m0_56050300/article/details/141162110

相关文章

  • VF01/VF02/VF03屏幕增强及BAPI增强字段处理
    1.在销售发票抬头表中增加增强字段2.创建处理程序主程序SAPMV60A中的所有包含文件都是以MV60AF打头的,所以我们创建一个独立的程序SE38(ZSDU0001) 来存放所有的处理代码 创建屏幕9001,确保屏幕类型为子屏幕 屏幕字段可从VBRK表中获取*&---------------------------......
  • P4155 [SCOI2015] 计划
    [SCOI2015]计划-洛谷核心思路注意到,可推出, 表示战士 走  步到达战士位置。若可以走到且r<终点则答案+ 然后再加上自己这个哨兵,和走回自己的一个哨兵即可。AC代码#include<bits/stdc++.h>usingnamespacestd;constintN=2e6+9;intgo[N][22]......
  • 新坑:信息学奥赛一本通题解(3001~3005)
    前言Hello,大家好我是文宇,开个新坑,是关于信息学奥赛一本通的坑,就是信奥赛题解.(这里指编程启蒙的题库)因为作者的洛谷还在写,只是信奥赛的题写的比较多,所以先做信奥赛的.信奥赛的网址是信息学奥赛一本通-编程启蒙(C++版)在线评测系统(挖坑:作者以后可能还会有信奥赛本体......
  • P3964 [TJOI2013] 松鼠聚会
    题意给定\(n\)个点,求出一个点使得每个点到这个点的切比雪夫距离之和最小。思路首先,我们可以把题目中的切比雪夫距离转化为曼哈顿距离,因为我们知道形如\((x,y)\)点之间的曼哈顿距离等于\((x+y,x-y)\)点之间的切比雪夫距离,\((x,y)\)点之间的切比雪夫距离等于\(\le......
  • 01 常用工具类
    工具类IOUtils.copy()IOUtils.toString():可以将输入流转为StringFiles.readAllBytes(Paths.get(fileUri))从本地读取文件到内存。/FileUtils.readFileToByteArray(newFile(path))FileUtils.writeByteArrayToFile(file,bytes);把内存中的数据写到文件ByteArrayInputStr......
  • 英语二【00015】精选单词练习第六天
    英语二【00015】4000+单词精选提炼单词历史学习记录:英语二【00015】精选单词练习历史英语二4500单词表下载第六天练习boring[ˈbɔ:rɪŋ]adj.无聊的,无趣的contribute[kənˈtribjut]vt.&vi.贡献出remove[riˈmu:v]vt.开除;去除manage[ˈmænɪdʒ]vt.......
  • Windows Server 2019 搭建FTP站点制作服务器证书
    制作服务器证书1.在“服务器管理器”中,选择“仪表板>工具>InternetInformationServices(IIS)管理器”。2.在左侧列表单击服务器,然后在服务器主页“IIS”区域,双击“服务器证书”,进入“服务器证书”页面。3.单击“创建自签名证书”  4.输入证书的名称......
  • C10-01-HTML示例
    简单HTML示例<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><metaname="Descripti......
  • [WC2019] 数树纯组合线性做法
    NaCly_Fish的博客激发了继续思考的欲望。我是多项式白痴,所以让我们来思考组合意义做法!本题本质上是需要让我们求\(\sum_{E_1\text{是树}}\sum_{E_2\text{是树}}y^{-|E1\cupE2|}\)的值。我们容斥一下交集,发现考虑上容斥系数就是将\(y\leftarrow\frac{1}{y}-1\)。剩下......
  • Contest5401 - 网络流-2
    Contest笔记非常好文章:二分图与网络流学习笔记一些定义匹配:没有公共点的边集边覆盖:满足任意顶点都至少是一条边的端点的边集点覆盖:满足任意边都至少有一个端点在集合内的点集独立集:任意两点互不相连的点集团:完全子图图\(G=(V,E)\)的补图:建出\(K_{|V|}\)后删掉所......