0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是GPIO操作

汽车电子技术 来源:玩转单片机 作者:Julian 2023-02-10 14:41 次阅读

1、GPIO 工作模式

(1)输入模式(模拟、上拉、下拉、浮空)

输入模式可以配置为模拟、上拉、下拉以及浮空模式。上拉和下拉输入很好理解,默认的电平由上拉或者下拉决定。浮空输入的电平是不确定的,完全由外部的输入决定,一般接按键的时候可以使用这个模式。模拟输入则用于 ADC 采集。

(2)输出模式(推挽/开漏)

在输出模式中,推挽模式时双 MOS 管以推挽方式工作,输出数据寄存器GPIOx_ODR 可控制 I/O 输出高低电平。开漏模式时,只有 N-MOS 管工作,输出数 据 寄 存 器 可 控 制 I/O 输 出 高 阻 态 或 低 电 平 。

(3)复用功能(推挽/开漏)

复用功能模式中,输出使能,输出速度可配置,可工作在开漏及推挽模式,但是输出信号源于其它外设,输出数据寄存器 GPIOx_ODR 无效;输入可用,通过输入数据寄存器可获取 I/O 实际状态,但一般直接用外设的寄存器来获取该数据信号。

(4)模拟输入输出(上下拉无影响)

模拟输入输出模式中,双 MOS 管结构被关闭,施密特触发器停用,上/下拉也被禁止。其它外设通过模拟通道进行输入输出。

pYYBAGPl5uqAPSqXAAXlSC3EjnE337.png

2、GPIO驱动源码

#include "stm32f10x.h"

void LED_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;        //定义结构体变量
  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//开启时钟
  
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;        //选择你要设置的IO口
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;     //设置推挽输出模式
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;      //设置传输速率
  GPIO_Init(GPIOC,&GPIO_InitStructure);            //初始化GPIO
  
  GPIO_SetBits(GPIOC,GPIO_Pin_0);             //将LED端口拉高,熄灭所有LED
}

void KEY_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;         //定义结构体变量  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//开启时钟
  
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;           //选择你要设置的IO口
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;      //下拉输入  
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;  //设置传输速率
  GPIO_Init(GPIOA,&GPIO_InitStructure);          //初始化GPIO
}

int main( void )
{
  LED_Init();
  KEY_Init();
  while(1)
  {
    //如果按键按下(不进行消抖,因为只是测试GPIOA_0是否拉低)
    if( GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) )
    {
      GPIO_ResetBits(GPIOC,GPIO_Pin_0);
    }
    else
    {
      GPIO_SetBits(GPIOC,GPIO_Pin_0);
    }
  }
}

--END--

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • adc
    adc
    +关注

    关注

    95

    文章

    5652

    浏览量

    539489
  • 模拟
    +关注

    关注

    7

    文章

    1413

    浏览量

    83655
  • 电平
    +关注

    关注

    5

    文章

    338

    浏览量

    39565
收藏 人收藏

    评论

    相关推荐

    浅谈GPIO操作

    本帖最后由 芯灵思FAE 于 2016-7-31 12:48 编辑 浅谈GPIO操作很久很久以前,我们如果在Linux系统下操作GPIO是这样的......
    发表于 07-31 12:47

    GPIO操作步骤

    前提1.该笔记为本人学习时做的一些笔记,仅为个人学习只用,可能存在错误或缺陷2.本人是在 正点原子平台学习,具有大量视频,讲解清楚一、GPIO操作步骤1) 使能 IO 口时钟。调用函数为
    发表于 08-02 10:25

    STM32 GPIO使用操作步骤

    STM32 GPIO使用超强总结STM32GPIO使用操作步骤:1. 使能GPIO对应的外设时钟例如://使能GPIOA、GPIOB、GPIOC对应的外设时钟RCC_APB2Perip
    发表于 08-12 07:31

    基于STM32的GPIO操作

    1.基于STM32的GPIO操作理解,使用的是STM32CubeMx生成软件,目的实现2个灯的流水,使用的是STM32G473这个芯片。硬件原理图如下:LED1对应的PA1,LED2对应的PA0
    发表于 08-16 08:24

    嵌入式linux驱动对gpio的基本操作

    文章目录代码驱动层代码应用层代码 测试驱动Makefile这里记录的是嵌入式linux驱动对gpio的基本操作。实现的内容是:gpio驱动编写>&
    发表于 11-05 07:59

    使用华大单片机时对GPIO操作

    在使用华大单片机时对GPIO操作是最基础的操作,即使这种操作如果不注意还是会掉到坑里去。例如:使用同一组GPIO端口中的两个引脚(PA00和
    发表于 12-09 06:19

    GPIO操作方式

    2020年,都全面奔小康了,Linux驱动也终于NiMa不用像2008年那么恶心了,大部分产品的研发可以直接使用厂家提供的内核,通过修改设备树完成。特殊情况下,还是要摸一下驱动的,本文只介绍GPIO
    发表于 12-24 07:09

    基于HAL库的GPIO操作该怎样去实现呢

    HAL库包含几个IO操作函数呢?基于HAL的GPIO操作该怎样去实现呢?
    发表于 01-18 07:33

    STM32基本GPIO操作步骤

    STM32基本GPIO操作:按键输入(扫描+外部中断)本文章向大家介绍STM32基本GPIO操作:按键输入(扫描+外部中断),主要包括STM32基本
    发表于 02-23 07:37

    can使能上拉gpio_RK3288的GPIO怎么操作

    can使能上拉gpio_RK3288的GPIO怎么操作
    发表于 03-02 09:26

    英创信息技术工控主板快速GPIO操作介绍

    GPIO管脚所呈现的电平均为高电平。面对丰富的GPIO资源,许多客户希望将GPIO利用起来做一下其他的应用,比如模拟SPI接口,I2C接口,以及一些总线时序等,下面就来看看GPIO
    的头像 发表于 01-17 09:56 2261次阅读
    英创信息技术工控主板快速<b class='flag-5'>GPIO</b><b class='flag-5'>操作</b>介绍

    STM32的GPIO操作例程免费下载

    本文档的主要内容详细介绍的是KEIL官方STM32的GPIO操作例程免费下载。
    发表于 01-23 08:00 0次下载

    Linux内核GPIO操作函数的详解分析

    本文档的主要内容详细介绍的是Linux内核GPIO操作函数的详解分析免费下载。
    发表于 01-22 16:58 28次下载

    stm32单片机基于hal库对对GPIO操作

    32单片机对GPIO操作和51单片机对io口的操作是一样的,常用的有三个,输出,io口至高至低,输入,检查测io口的高低电平,取反,用于闪烁处理。/*读取io口电平
    发表于 11-26 20:06 1次下载
    stm32单片机基于hal库对对<b class='flag-5'>GPIO</b>的<b class='flag-5'>操作</b>

    STM32基本GPIO操作:按键输入(扫描+外部中断)

    STM32基本GPIO操作:按键输入(扫描+外部中断)本文章向大家介绍STM32基本GPIO操作:按键输入(扫描+外部中断),主要包括STM32基本
    发表于 12-29 19:27 13次下载
    STM32基本<b class='flag-5'>GPIO</b><b class='flag-5'>操作</b>:按键输入(扫描+外部中断)