在嵌入式开发的世界里,即使只是一颗小小的LED灯,也能成为无尽创意的舞台。当你的开发板上仅有一颗LED时,如何让它呈现出丰富多彩的闪烁效果?接下来,让我们通过对RL78/G15的编程实践,为这颗简单的LED注入灵动的“生命力”。
LED工作机制:从“亮”与“灭”说起
LED(发光二极管) 是一种半导体光源,当有电流通过时就会发光。在本次使用的开发板上,我们可以通过控制GPIO引脚的高低电平来实现这一过程:
- 高电平(HIGH) :LED熄灭
- 低电平(LOW) :LED点亮
LED的工作模式看似简单,但当我们巧妙地融入“时间”这个维度,在程序中控制亮灭的节奏、频率和规律,一颗LED就能呈现出丰富多彩的变化。
快闪与慢闪——节奏的艺术
1. 慢闪模式:沉稳的心跳
慢闪模式是LED最基础的闪烁模式,如同平静而沉稳的心跳,传递着稳定、可靠的信号。它非常适合用作状态指示灯,向用户传达“系统正常运行”的信息。
2. 快闪模式:紧急的警报
当闪烁频率加快,LED瞬间变得“急促”起来,常用于警告、报警或提醒场景。
相同的硬件,不同的节奏,却能传递出截然不同的信息。在程序开发中,我们可以通过调整延时函数的参数来控制LED的闪烁节奏,轻松切换它的“情绪”。
摩斯码——让LED“开口说话”
如果说闪烁频率帮助LED传达“情绪”,那么摩斯码则是赋予LED“语言”的能力。
摩斯码原理
- 短闪(点):点亮0.2秒
- 长闪(划):点亮0.6秒
- 间隔:熄灭0.2秒(字符内)/0.6秒(字符间)
通过长短闪烁的巧妙组合,LED能够“说出”字母、数字甚至完整的单词。例如,字母“S”由三个短闪(···)组成,字母“O”由三个长闪(---)组成,当它们连在一起,就成了国际通用的求救信号“SOS”(···---···)。
呼吸灯——赋予LED“生命”
如果说前面的模式是“数字化”的开关控制,那么呼吸灯则是“模拟化”的艺术呈现。
1. 什么是呼吸灯?
LED从熄灭状态逐渐转换到最高亮度,再从最高亮度逐渐熄灭,循环往复,如同生物呼吸般自然流畅。
2. 技术实现:PWM(脉宽调制)
通过快速开关LED并调整“亮”的时间占比(占空比),人眼会产生亮度变化的错觉:
- 占空比10%:低亮度
- 占空比50%:中等亮度
- 占空比90%:最高亮度
呼吸灯常见于高端电子产品的待机指示,它传递的不仅是状态信息,更是一种细腻而优雅的用户体验。
相信各位对LED的不同模式的设置原理有了基本的了解,那么如何在开发板上实现这些模式呢?下面让我们一同探索。
开发环境与硬件准备
1. 所用微控制器
RL78/G15
https://www.renesas.cn/zh/products/rl78-g15?queryID=41e2d7a40d04b1f445157d80d24daf7f
2. 开发板
RL78/G15 Fast Prototyping Board
https://www.renesas.cn/zh/design-resources/boards-kits/rtk5rlg150c00000bj
3. 集成开发环境
e²studio v2025-07(瑞萨电子开发)
https://www.renesas.cn/zh/software-tool/e2-studio?queryID=45393453489528bf724cdf10406bf5ad
RL Smart Configurator V1.14.0
https://www.renesas.cn/zh/software-tool/smart-configurator?queryID=17de87a50c6c621cc3cd60ffaf3161f7
Renesas CC-RL v1.15.01
https://www.renesas.cn/zh/software-tool/c-compiler-package-rl78-family-cc-rl
4. 硬件连接注意事项:

如上图所示,开发板上的J10、J11和J12跳线帽均需要连接2-3,这样才能使用E2 Lite进行调试。
相关外围功能和用途
在开发板上有两个LED:LED1和LED2。选取LED1作为控制对象,通过查看原理图可知,LED1对应的RL78/G15输出引脚为P20。LED1正极接VDD,负极接P20,因此,只要控制P20引脚电平高低,就可以控制LED1的亮灭。

此外,控制LED的快闪慢闪、摩斯码模式、呼吸灯模式需要引入Interval Timer模块和PWM模块。各模块的功能和用途见下表:
| 外围功能 |
用途 |
| Interval Timer模块 |
产生定时中断 |
| PWM模块 |
生成脉宽调制信号 |
在Smart Configurator中对这两个模块做如下设置:
- 设置IT模块Interval value为100ms

- 设置PWM模块Cycle value为2ms,选取Channel 3作为slave,占空比设置为90%

- 在引脚配置页面,将TIO03对应引脚配置为P20

软件流程
实现LED不同模式的代码流程如下图所示。首先定义参数“LED_MODE”,通过设置“LED_MODE”的值,程序会调用不同的函数,从而实现LED不同模式的控制。
- “LED_MODE=0”时,调用LED_FAST_FLASH(),LED进入快闪模式
- “LED_MODE=1”时,调用LED_SLOW_FLASH(),LED进入慢闪模式
- “LED_MODE=2”时,调用LED_Morse_SOS(),LED显示“SOS”摩斯码
- “LED_MODE=3”时,调用LED_Breathing(),LED进入呼吸灯模式

下面两个流程图分别对应LED的快闪模式和慢闪模式。在这两个模式下,只需要利用Interval Timer模块,调整LED延时时间即可实现。


下方是LED摩斯码和LED呼吸灯的流程图。LED显示摩斯码通过调整延时时间实现,而LED的呼吸灯模式则是通过调整PWM中的占空比实现。


工程示例
按照上述流程,实现LED不同模式的示例工程所使用的主要函数如下表所示:
| 函数名称 |
功能 |
| R_Config_IT_Start() |
启动IT模块 |
| R_Config_TAU0_0_Start() |
启动PWM模块 |
| EI() |
使能中断 |
| r_Config_IT_interrupt(void) |
IT中断服务函数 |
| wait_ms(uint16_t wait_time) |
延时函数 |
| r_Config_TAU0_0_channel3_interrupt(void) |
PWM中断服务函数 |
| LED_FAST_FLASH (void) |
LED快闪模式 |
| LED_SLOW_FLASH (void) |
LED慢闪模式 |
| LED_Morse_SOS (void) |
LED闪烁SOS摩斯码 |
| LED_Breathing (void) |
LED呼吸灯模式 |
结尾
从基础的快慢闪烁,到能“说话”的摩斯码,再到充满生命感的呼吸灯,每一种模式都是逻辑思维与创意表达的结晶。通过这次对RL78/G15微控制器的实践,我们深入了解了GPIO控制、定时器中断以及PWM调制等核心的嵌入式开发概念。希望你也能从中获得启发,点亮更多创意的“灯泡”。如果你对底层硬件控制或C/C++编程有更多兴趣,欢迎在技术社区进行深入探讨。