【EG800Z-CN】GPIO驱动LED灯

【EG800Z-CN】GPIO驱动LED灯

本案例使用mk体育pico开发板和UniRTOS,通过调用GPIO相关功能函数,控制GPIO引脚对应的输出电平,使其每 1 秒翻转一次电平,从而让LED模块达到灯光闪烁的视觉效果。

  • GPIO应用

项目概述

本案例使用mk体育pico开发板和UniRTOS,通过调用GPIO相关功能函数,控制GPIO引脚对应的输出电平,使其每 1 秒翻转一次电平,从而让LED模块达到灯光闪烁的视觉效果。

功能特性

基于GPIO的精准LED控制
  • 硬件级引脚控制:直接操作通用输入输出(GPIO)引脚,实现对LED状态的精准控制。
  • 灵活闪烁模式:支持自定义LED闪烁频率与周期,可轻松实现快闪、慢闪视觉效果。
  • 超低资源占用:纯软件逻辑控制,无需额外硬件定时器或复杂外设,极大节省系统资源。

开发准备

就像"Hello World"是学习编程语言的第一步,点亮第一颗LED同样是嵌入式开发的第一步。按下面的步骤,用UniRTOS完成你的第一步。

硬件要求

  • pico开发板,点此购买开发板。

  • USB数据线(USB-A转USB-C),点此购买。

  • LED模块,点此获取。

软件要求

  • unirtos-toolchain.exe:编译工具链安装程序,点此获取
  • Python:用于运行unirtos-cli工具,需使用3.9及更高版本。安装步骤见快速启动-环境搭建章节。
  • Git:unirtos-cli使用该工具拉取SDK、依赖库等,需使用2.40及更高版本。安装步骤见快速启动-环境搭建章节。
  • unirtos-cli:UniRTOS的命令行工具,用于一键拉取SDK、快速创建工程。安装步骤见快速启动-环境搭建章节。
  • USB驱动:用于PC识别模块的USB枚举接口,点此获取
  • QFlash.exe:模块固件烧录程序,用于烧录UniRTOS编译生成的固件,点此获取
  • EPAT工具:芯片厂商提供的日志抓取工具,用于查看模块运行日志以分析应用程序执行情况,点此获取

快速上手

下载项目

示例代码位于UniRTOS官方创客仓库,点此访问下载。

开发环境搭建

参考?UNIRTOS 快速入门?文档,了解如何搭建开发环境并完成基本开发流程。

项目结构

led_gpio/
├── main
  ├── inc               # 存放项目头文件
    └── led_gpio.h      # Demo头文件
  └── src               # 存放项目源码
    └── led_gpio.c      # Demo源代码
├── media               # README所需媒体文件
├── menucongfig         # 项目配置的功能选项	
├── CMakeLists.txt      # Demo构建脚本
└── env_config.json     # UniRTOS工程环境配置

代码拉取

新开启一个PowerShell窗口,执行以下命令:

# 拉取示例仓库

unirtos-cli new -r unirtos-maker-examples

# 进入该项目

cd unirtos-maker-examples/led_gpio

构建项目

拉取编译环境

unirtos-cli env-setup

在PowerShell窗口执行固件编译命令(如使用模块型号非EG800ZCN_LA,请替换实际需要编译的型号):

unirtos-cli build -m EG800ZCN_LA -v EG800ZCNLAR01A01_OCPU_20260626

等待编译结束后,PowerShell 窗口末尾会提示固件编译结果:

SUCCESS: Unirtos project built successfully!

硬件连接

  1. LED模块连接开发板对应物理引脚,V->3V3 , R、G、B中选一脚(如 R)→ Pin19(19号引脚)。
  2. 使用USB数据线连接开发板和电脑。

日志展示

固件烧录后开机启动,可在日志中看到类似输出:

[led]LED GPIO initialized successfully, pin_num: 19, gpio_num: x, level: 1

[led]LED ON

[led]LED OFF

[led]LED ON

代码概览

主要功能接口

常量定义 :
  1. 定义线程栈大小为 1024 字节,即 1 KB。
  2. 定义线程优先级为一般优先级。
  3. 定义线程任务句柄,初始化为空。
  4. 定义需要初始化的引脚号,Demo中使用 19 号引脚,如需其他引脚,请自行修改。
  5. 定义一个pin_cfg,用于后续接收默认引脚配置,类型为qosa_pin_cfg_t

unir_led_init
主要功能是初始化引脚对应的GPIO功能:
  1. 使用qosa_memset先将pin_cfg中的成员初始化为0。
  2. 使用qosa_get_pin_default_cfg获取引脚的默认配置,拿到引脚对应GPIO号,GPIO功能配置。
  3. 使用qosa_pin_set_func设置当前引脚功能为GPIO功能,此处的GPIO功能配置值由上一步获取。
  4. 使用qosa_gpio_init初始化GPIO功能,配置为上拉输出模式,默认电平高电平。
unir_led_set
主要功能:改变引脚的GPIO输出电平,从而实现LED的亮灭。
unir_led_demo_process
主要功能:线程处理函数,主要实现LED的闪烁逻辑,每隔 1 s改变GPIO的输出电平。
unir_led_demo_init
主要功能:调用函数初始化配置GPIO,创建线程执行任务。

常见问题

1. LED没有任何反应?

检查以下几点:
  • 确认V接3V3、信号线接Pin19,且两端均可靠接触。

  • GPIO是否配置为输出模式?
  • 引脚功能是否配置为GPIO?

2. 是否可以使用其他引脚?

修改开头的宏定义LED_PIN_NUM即可更换为其他引脚。

沟通无界,服务无限

了解更多关于mksports公司、产品和技术支持的信息。