从零玩转CanMV-K230(5)- GPIO例程


前言

本章介绍基于MicroPython的外设开发案例,在开始之前请确认使用的MicroPython镜像,可以参考 从零玩转CanMV-K230(2)- 环境搭建

K230管脚分布图
在这里插入图片描述

K230内部包含64个GPIO Pin,每个Pin可配置为输入或输出,可配置上下拉,可配置驱动能力。

在介绍IO之前需要先了解FPIOA,FPIOA的主要作用是进行引脚复用的设置,IOMUX主要配置物理PAD(管脚)的功能,由于soc功能多管脚(pads)少,多个功能共享同一个I/O管脚(pads),但是一个pads同一时间只能使用其中一个功能,所以需要IOMUX进行功能选择。IOMUX也叫FPIOA,Pin multiplexing,管脚功能选择等。
在这里插入图片描述

一、API介绍

本文档主要介绍machine模块下的Pin类API。
pin = Pin(index, mode, pull=Pin.PULL_NONE, drive=7)

**【参数】**

index: 引脚号,取值:[0,63]

mode: 输入或输出模式

pull: 上下拉配置,可选参数,默认PULL_NONE

drive: 驱动能力配置,可选参数,默认7

Pin.init(mode, pull=Pin.PULL_NONE, drive=7)

配置引脚模式,上下拉,驱动能力

【参数】

mode: 输入或输出模式

pull: 上下拉配置,可选参数,默认PULL_NONE

drive: 驱动能力配置,可选参数,默认7

【返回值】

无

Pin.value([value])

获取引脚输入或设置引脚输出

【参数】

value: 输出值,可选参数,如果不传参数则返回输入值

【返回值】

返回空或当前引脚输入值

Pin.mode([mode])

获取或设置引脚输入输出模式

【参数】

mode: 输入输出模式,可选参数,如果不传参数则返回当前输入输出模式

【返回值】

返回空或当前引脚输入输出模式

Pin.pull([pull])

获取或设置引脚上下拉配置

【参数】

pull: 上下拉配置,可选参数,如果不传参数则返回当前上下拉配置

【返回值】

返回空或当前引脚上下拉配置

Pin.drive([drive])

获取或设置引脚驱动能力

【参数】

drive: 驱动能力,可选参数,如果不传参数则返回当前驱动能力

【返回值】

返回空或当前引脚驱动能力

Pin.on()

设置输出高

【参数】

无

【返回值】

无

Pin.off()

设置输出低

【参数】

无

【返回值】

无

Pin.high()

设置输出高

【参数】

无

【返回值】

无

Pin.low()

设置输出低

【参数】

无

【返回值】

无

二、示例代码

因为我这块CanMV上没有可以控制的led灯,这里使用按键进行测试;
在这里插入图片描述
在这里插入图片描述
这里我们使用Key0做测试,可以看到他对应的IO是52,示例代码如下:

from machine import Pin
from machine import FPIOA
import time
#将GPIO52配置为普通GPIO模式
fpioa = FPIOA()
fpioa.set_function(52,FPIOA.GPIO52)
KEY=Pin(52,Pin.IN,Pin.PULL_UP) #构建KEY对象

while True:
    if KEY.value()==0: #按键被按下
        time.sleep_ms(10) #消除抖动
        if KEY.value()==0: #确认按键被按下
            print('KEY down')
    while not KEY.value(): #检测按键是否松开
        pass

在这里插入图片描述


总结

本章节介绍了GPIO例程的使用方法,GPIO很常用,可以结合K210相关教程进行学习。

### S32K144 微控制器配置 GPIO 方法 对于S32K144微控制器而言,配置通用输入/输出端口(GPIO)涉及几个关键步骤。这些操作通常通过初始化外设模块来完成,具体来说是设置相应的寄存器以定义引脚的功能和行为。 #### 初始化库与头文件引入 为了简化开发过程并提高代码可读性和移植性,在编写程序之前应当先包含必要的SDK头文件[^1]: ```c #include "fsl_gpio.h" #include "pin_mux.h" /* Pin Mux Configuration */ ``` #### 配置时钟源与时钟门控 确保目标外设有足够的工作频率支持其正常运作非常重要。这一步骤主要是开启对应于所使用的GPIO模块的时钟信号路径[^2]: ```c CLOCK_EnableClock(kCLOCK_PortA); // Enable PORTA clock. // 如果使用其他PORT, 则替换为对应的宏定义 ``` #### 设置引脚属性 接下来就是针对具体的物理引脚设定它们的工作模式以及电气特性参数。这里可以通过调用`PORT_SetPinMux()`函数实现,它接受四个参数分别代表端口号、针脚编号、复用功能选项以及其他特殊标志位[^3]: ```c /* Initialize the switch board */ BOARD_InitBootPins(); BOARD_InitBootClocks(); /* Set PTB18 to be used as GPIO */ PORT_SetPinMux(PORTB, 18U, kPORT_MuxAsGpio); ``` #### 定义方向及初始状态 最后要做的就是在实际应用层面上指定该IO线作为输入还是输出用途,并给定默认电平值。此部分可通过如下方式达成目的[^4]: ```c gpio_pin_config_t ledConfig = { .direction = kGPIO_DigitalOutput, .outputLogic = 0U, }; GPIO_PinInit(GPIOB, 18U, &ledConfig); ``` 上述流程展示了如何基于恩智浦官方提供的软件包对S32K系列MCU上的单个GPIO进行基本配置的过程。值得注意的是不同版本之间可能存在细微差异因此建议参照最新发布的文档资料获取最准确的信息[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶与花语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值