项目概述
本案例基于EG800Z-CN开发板和UniRTOS实现,通过调用GPIO相关功能函数,控制GPIO引脚对应的输出电平,使其每1 s 翻转一次电平,从而让LED模块达到灯光闪烁的视觉效果。
功能特性
基于GPIO的精准LED控制
- 硬件级引脚控制 :直接操作通用输入输出(GPIO)引脚,实现对LED状态的精准控制。
- 灵活闪烁模式 :支持自定义LED闪烁频率与周期,可轻松实现快闪、慢闪视觉效果。
开发准备
就像“hello world”是学习编程语言的第一步,“驱动GPIO”同样是嵌入式的第一步。下面跟着步骤走,一起使用UniRTOS实现驱动GPIO
硬件要求
- EG800Z-CN开发板,点此购买开发板
- USB数据线(TYPE-C),点此购买
- LED模块,点此获取
软件要求
快速上手
下载项目
示例代码位于UniRTOS 官方创客仓库,点此访问下载
添加项目到UniRTOS SDK
CSDK新增Demo,固件编译和烧录请参考UniRTOS板块的快速启动栏
硬件连接
- LED模块连接开发板对应物理引脚,V->3V3 , R/G/B->Pin19(19号引脚)
- 使用USB数据线连接开发板和电脑
代码概览
示例工作流程
主要功能接口
常量定义 :
- 定义线程栈大小为1024字节,即1 kb
- 定义线程优先级为一般优先级
- 定义线程任务句柄,初始化为空
- 定义需要初始化的引脚号,Demo中使用19号引脚,如需其他引脚,请自行修改
- 定义一个 pin_cfg,用于后续接收默认引脚配置,类型为qosa_pin_cfg_t
unir_led_init 函数
主要功能是初始化引脚对应的GPIO功能
- 使用qosa_memset现将pin_cfg中的成员初始化为0
- 使用qosa_get_pin_default_cfg获取引脚的默认配置,拿到引脚对应GPIO号,GPIO功能配置
- 使用qosa_set_func设置当前引脚功能为GPIO功能,此处的GPIO功能配置值由上一步获取
- 使用qosa_gpio_init初始化GPIO功能,配置为上拉输出模式,默认电平高电平
unir_led_set函数
主要功能:改变引脚的GPIO输出电平,从而实现LED的亮灭
unir_test_demo_process 函数
主要功能:线程处理函数,主要实现LED的闪烁逻辑,每隔1s改变GPIO的输出电平
unir_test_demo_init 函数
主要功能:调用函数初始化配置GPIO,创建线程执行任务
常见问题
1. LED没有任何反应?
检查连线是否正确,确认GPIO配置为输出模式,引脚配置为GPIO功能
2. 是否可以使用其他引脚?
修改开头的宏定义LED_PIN_NUM即可更换为其他引脚








