在上一篇文章 【开发环境搭建 点灯】 中已经成功运行了 Blink_LED 示例程序控制单个 LED3 闪烁。本篇文章将在此基础上探索如何控制开发板上的三颗 LED实现更丰富的灯光效果。一、LED 硬件资源开发板上共有3 颗用户 LED从左到右依次排列颜色分别为红色、绿色、蓝色。查看开发板信息在 RT-Thread Studio 的项目资源管理器中双击Board Information可以查看开发板的详细信息和相关查看 LED 原理图在开发板信息面板的底部可以找到Base_Schematic底板原理图下载链接下载后查看 LED 部分的引脚定义从原理图可以确认三颗 LED 对应的 MCU 引脚为LED引脚颜色LED1P16_7红LED2P16_6绿LED3P16_5蓝在代码中使用 RT-Thread 提供的GET_PIN(port, pin)宏来定义引脚#define LED_PIN_R GET_PIN(16, 7) /* 红色 LED1 */ #define LED_PIN_G GET_PIN(16, 6) /* 绿色 LED2 */ #define LED_PIN_B GET_PIN(16, 5) /* 蓝色 LED3 */​二、三灯同闪效果修改思路默认的 Blink_LED 代码仅控制 LED3蓝色闪烁。要实现三颗 LED 同时闪烁需要在main.c中定义三个 LED 引脚将三个引脚都初始化为输出模式在循环中同时控制三个 LED 的电平状态代码修改在 Blink_LED 示例工程的主程序main.c中修改代码如下#include rtthread.h #include rtdevice.h #include board.h #define LED_PIN_R GET_PIN(16, 7) #define LED_PIN_G GET_PIN(16, 6) #define LED_PIN_B GET_PIN(16, 5) int main(void) { rt_kprintf(Hello RT-Thread\r\n); rt_kprintf(This core is cortex-m33\r\n); /* 将三个 LED 引脚设置为输出模式 */ rt_pin_mode(LED_PIN_R, PIN_MODE_OUTPUT); rt_pin_mode(LED_PIN_G, PIN_MODE_OUTPUT); rt_pin_mode(LED_PIN_B, PIN_MODE_OUTPUT); rt_uint8_t i 0; while (1) { /* i 为 0 时点亮三个 LED否则熄灭 */ rt_pin_write(LED_PIN_R, (i 0) ? PIN_HIGH : PIN_LOW); rt_pin_write(LED_PIN_G, (i 0) ? PIN_HIGH : PIN_LOW); rt_pin_write(LED_PIN_B, (i 0) ? PIN_HIGH : PIN_LOW); rt_thread_mdelay(500); /* 延时 500ms */ i; if (i 1) { i 0; } } return RT_EOK; }​代码修改后的 IDE 界面如下编译与烧录点击工具栏的编译按钮编译修改后的工程。编译成功后点击下载按钮烧录固件。运行效果烧录完成后三颗不同颜色的 LED 将会同时点亮和熄灭三、跑马灯效果修改思路在三灯同闪的基础上通过改变控制逻辑让红、绿、蓝三颗 LED 依次循环点亮形成跑马灯流水灯效果。具体逻辑为i 0点亮红灯熄灭绿灯和蓝灯i 1点亮绿灯熄灭红灯和蓝灯i 2点亮蓝灯熄灭红灯和绿灯代码修改将主循环修改为rt_uint8_t i 0; while (1) { /* 根据 i 的值依次点亮红、绿、蓝 */ rt_pin_write(LED_PIN_R, (i 0) ? PIN_HIGH : PIN_LOW); rt_pin_write(LED_PIN_G, (i 1) ? PIN_HIGH : PIN_LOW); rt_pin_write(LED_PIN_B, (i 2) ? PIN_HIGH : PIN_LOW); rt_thread_mdelay(500); /* 延时 500ms */ i; if (i 3) { i 0; } }​代码修改后的 IDE 界面如下编译与烧录修改代码后重新编译。编译成功后烧录固件。运行效果烧录完成后三颗 LED 会按红 → 绿 → 蓝的顺序依次循环点亮形成跑马灯效果红灯亮绿灯亮蓝灯亮四、总结通过本章节的实践掌握了以下技能从开发板信息面板和原理图中获取 GPIO 引脚定义使用GET_PIN()宏映射 MCU 引脚使用rt_pin_mode()和rt_pin_write()控制 GPIO 输出通过调整逻辑实现多 LED 同步控制和依次循环点亮效果三颗 LED 的引脚定义是后续所有 GPIO 相关实验的基础LED宏定义引脚颜色LED1GET_PIN(16, 7)P16_7红LED2GET_PIN(16, 6)P16_6绿LED3GET_PIN(16, 5)P16_5蓝。---------------------作者HonestQiao链接https://bbs.21ic.com/icview-3515187-1-1.html来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。