GPIO外设的使用方法详解

【硬件外设使用】——GPIO用法

  • GPIO基本概念
  • GPIO应用
  • pyb与micropython
  • 什么是pyb
  • 什么是micropython
  • pyb与micropython关系
  • GPIO在micropython中的用法
  • 什么是pyb库
  • pyb库中的GPIO用法
  • micropython下的GPIO用法
  • 经过与硬件群的小伙伴商量,决定直接找个板子讲实战了- -。

    本部分内容为视频内容补充。外设基本使用方法+pyb(STM32)+machine(micropython通用。)


    GPIO基本概念

    GPIO是General Purpose Input/Output的缩写,意思是通用输入/输出。它是一种可以通过软件控制的电子接口,可实现与其他硬件设备的连接和交互。

    在树莓派、Arduino等单板电脑中,GPIO常被用于连接各种传感器、执行器、LED灯等外部设备,使得这些设备可以和计算机进行通讯和交互。

    通过编写程序,可以实现对GPIO的读写操作,实现各种功能。

    GPIO应用

    GPIO可以应用在很多方面,例如:

    1. 控制LED灯:通过将GPIO引脚设置为输出模式,并对其进行控制,可以实现对连接在GPIO上的LED灯的开关。

    2. 连接传感器:树莓派和Arduino等单板电脑常常用GPIO来读取温度、湿度、气压等传感器的数据。

    3. 控制电机:电机通常需要连接到GPIO引脚上使用单片机或芯片内部PWM输出的信号来控制转速、方向等参数。

    4. 控制舵机:舵机可以通过PWM信号控制角度,因此也可以将GPIO引脚设置为PWM输出,并连接到舵机控制线上进行控制。

    5. 控制继电器:GPIO引脚还可以控制继电器,用于控制家电、电机等高电流负载的开关操作。

    GPIO的应用范围很广,可以用于控制各种外接设备,是单片机和嵌入式系统中不可缺少的一个模块。下面是一个GPIO基本结构图。

    pyb与micropython

    总有小伙伴分不清pyb和micropython,这里简单说一下啊

    什么是pyb

    Pyboard(pyb)是一个MicroPython的开发板,它提供了一个基于Python的快速原型设计平台,使得使用Python语言来开发嵌入式系统更加容易。

    Pyboard基于ARM® Cortex®-M4处理器,具有高速存储器和实时时钟,同时内置有各种外设(例如LED、USB、UART、SPI、I2C等),可以快速构建各种具有交互性的嵌入式系统。
    Pyboard还支持通过wifi进行网络通信,使得连接其他设备变得更加容易。

    什么是micropython

    MicroPython是一种适用于微控制器的Python3解释器,它支持在资源受限的嵌入式设备上运行

    Python代码。MicroPython由德国裔澳洲人Damien George发起开发,旨在为硬件爱好者、物联网应用开发人员、科研工作者、教育界等提供一个简单易用的嵌入式开发平台。
    除了标准的Python语法和库外,MicroPython还提供了一些针对嵌入式设备的专用库和功能,例如控制GPIO、I2C、SPI、ADC等硬件接口。
    并且,由于使用的是Python语言,使得从桌面应用程序的开发跨越到嵌入式设备的开发更加容易。与其他嵌入式开发平台相比,MicroPython在开发效率和代码可读性方面拥有明显的优势。

    pyb与micropython关系

    Pyboard(pyb)是MicroPython的一种开发板,它提供了一个硬件平台,可以在上面运行MicroPython解释器,并使用Python语言进行嵌入式开发。

    Pyboard为MicroPython提供了高性能的ARM Cortex-M4处理器,以及与嵌入式开发相关的硬件接口,例如GPIO、UART、SPI、I2C等。使用Pyboard可以轻松地利用MicroPython解释器和硬件接口快速开发各种嵌入式应用程序。
    同时,在Pyboard上运行的MicroPython解释器也可以在其他支持MicroPython的嵌入式设备上运行,使得MicroPython成为一个通用的嵌入式系统开发工具。因此,可以说Pyboard是MicroPython的一种实现方式,提供了一个方便的开发硬件平台,来支持使用Python语言进行嵌入式开发。

    GPIO在micropython中的用法

    这里主要是pyb库,和machine库。两种方式都列举一下。买板子的时候注意板子支持哪一个。

    什么是pyb库

    Pyb库是MicroPython中的一个标准库,是为了更方便地访问Pyboard硬件而开发的。Pyboard是MicroPython官方推出的开发板,而Pyb库则提供了一系列针对该开发板的API函数,可以简化对各种硬件模块(如GPIO、I2C、SPI、串口等)的操作。

    Pyb库的主要特点包括:

    1. 简单易用:Pyb库提供了简单易用的API函数,使用户能够轻松地访问Pyboard硬件。

    2. 全面支持Pyboard:Pyb库支持大部分Pyboard硬件资源,包括GPIO、ADC、DAC、I2C、SPI、PWM、定时器、U(S)ART等。

    3. 可扩展性:Pyb库允许用户编写自定义的驱动程序来扩展其功能,从而满足更多的应用需求。

    使用Pyb库能够很方便地在MicroPython中控制外设硬件,并且代码能够在Pyboard上直接运行。这样既节省了开发时间,又提高了代码的可读性和可维护性。

    关系图如下:

    pyb库中的GPIO用法

    详细用法 咸鱼Micropython—GPIO 可以不看,本篇内容仅了解概念即可。还得看实战。

    pyb.Pin()是MicroPython中的一个模块,用于控制单片机的引脚,与machine.Pin()类似。但pyb.Pin()主要用于控制嵌入式板载设备上与Pyboard硬件相关的引脚。

    该函数的语法如下:

    pyb.Pin(id, mode=-1, pull=None, *, drive=None)
    

    其中,

    1. 参数id表示引脚编号,可以是数字或字符串类型;
    2. 参数mode表示设置引脚工作模式,可选值有pyb.Pin.IN(输入模式)、pyb.Pin.OUT_PP(推挽输出模式)、pyb.Pin.OUT_OD(开漏输出模式)等;
    3. 参数pull表示设置引脚上拉或下拉电阻,可选值有pyb.Pin.PULL_UP(上拉电阻)、pyb.Pin.PULL_DOWN(下拉电阻)和None(不使用上下拉电阻);参数drive表示设置引脚驱动能力(即能够输出的最大电流),可选值有pyb.Pin.LOW_POWERpyb.Pin.MED_POWERpyb.Pin.HIGH_POWER

    例如,以下代码将与Pyboard硬件相关的LED引脚(即绿色LED)设置为输出模式,同时将引脚电平设置为低电平:

    import pyb
    
    led = pyb.Pin('LED_GREEN', pyb.Pin.OUT_PP)  # 将绿色LED引脚设置为推挽输出模式
    
    led.low()  # 将绿色LED引脚电平设置为低电平
    

    这样操作后,绿色LED将被关闭。如果需要将引脚设置为高电平,可以使用以下代码:

    import pyb
    
    led = pyb.Pin('LED_GREEN', pyb.Pin.OUT_PP)  # 将绿色LED引脚设置为推挽输出模式
    
    led.high()  # 将绿色LED引脚电平设置为高电平
    

    micropython下的GPIO用法

    machine.Pin()是MicroPython中的一个模块,用于控制单片机的引脚,包括输入输出模式、设置引脚电平等。

    该函数的语法如下:

    machine.Pin(id, mode=-1, pull=None, *, value)
    

    其中,

    1. 参数id表示引脚编号,可以是数字或字符串类型;参数mode表示设置引脚工作模式,可选值有machine.Pin.IN(输入模式)、machine.Pin.OUT(输出模式)、machine.Pin.OPEN_DRAIN(开漏模式)等;
    2. 参数pull表示设置引脚上拉或下拉电阻,可选值有machine.Pin.PULL_UP(上拉电阻)、machine.Pin.PULL_DOWN(下拉电阻)和None(不使用上下拉电阻);
    3. 参数value表示设置引脚电平,仅在mode为输出模式时有效,可选值有0(低电平)和1(高电平)。

    例如,以下代码将D1引脚设置为输出模式,同时将引脚电平设置为高电平:

    import machine
    
    pin = machine.Pin(5, machine.Pin.OUT, value=1)  # 将D1引脚设置为输出模式,初始电平为高电平
    

    这样操作后,D1引脚将输出高电平。如果需要将引脚设置为低电平,可以使用以下代码:

    import machine
    
    # 将D1引脚设置为输出模式,初始电平为高电平
    pin = machine.Pin(5, machine.Pin.OUT, value=1)
    
    # 将引脚电平设置为低电平
    pin.value(0)
    

    提醒:买开发时注意支不支持pyb。

    物联沃分享整理
    物联沃-IOTWORD物联网 » GPIO外设的使用方法详解

    发表评论