Little LED Daemon for RT-Thread
littled 是一个基于链表的非常简单易用的 LED 控制软件包。
名字看起来有点奇怪,是 Little LED Daemon 的缩写,意思是小巧的 LED 驱动服务线程。用于帮助处理来自应用线程对 LED 亮、灭、闪烁等控制需求。
- 采用单例模式实现服务
- 异步操作
- 接口简单
- 控制任务线程化
- 线程安全
- 支持中断调用
更多 >> https://blog.csdn.net/lu_embedded/article/details/104565786
名称 | 说明 |
---|---|
examples | 示例目录 |
inc | 头文件目录 |
src | 源代码目录 |
littled 软件包遵循 Apache license v2.0 许可,详见 LICENSE
文件。
- RT-Thread 3.0+
- 动态内存管理模块
使用 littled package 需要在 RT-Thread 的包管理器中选择它,具体路径如下:
RT-Thread online packages --->
peripheral libraries and drivers --->
[*] littled: Little LED Daemon for LED driver --->
然后让 RT-Thread 的包管理器自动更新,或者使用 pkgs --update
命令更新包到 BSP 中。
版本 | 说明 |
---|---|
v0.2.0 | 初始版本,实现预期功能 |
latest | 进一步优化 |
目前处于公测阶段,建议开发者使用 latest 版本。
- 周期时间:
PKG_USING_LITTLED_PERIOD
- 脉冲宽度(高电平持续时间):
PKG_USING_LITTLED_PULSE
- 闪烁持续时间:
PKG_USING_LITTLED_BELL_TIME
- 闪烁次数:
PKG_USING_LITTLED_BEEP_COUNT
时间的单位为毫秒(ms)
使用 littled 服务线程的唯一要求是注册 LED,注册接口如下:
int led_register(rt_base_t pin, rt_base_t active_logic);
调用这个函数时,会从动态堆内存中分配一个 gp2y10_device_t 句柄,并按给定参数初始化。
参数 | 描述 |
---|---|
pin | LED 引脚 |
active_logic | 有效电平逻辑值(PIN_HIGH/PIN_LOW) |
返回 | —— |
LED 描述符 | 注册成功,返回一个大于等于 0 的 LED 描述符 |
< 0 | 注册失败,返回错误代码 |
如果您不再需要控制某个 LED 了,可以调用如下接口取消注册,取消注册后再调用控制接口将无效。
void led_unregister(int ld);
参数 | 描述 |
---|---|
ld | LED 描述符 |
返回 | —— |
无 |
注册成功后,即可调用 led_mode 函数控制 LED 工作。
int led_mode(int ld, rt_uint32_t period, rt_uint32_t pulse, rt_uint32_t time, rt_uint32_t count);
参数 | 描述 |
---|---|
ld | LED 描述符 |
period | 周期时间,单位 ms |
pulse | 脉冲宽度(高电平持续时间),单位 ms |
time | 闪烁持续时间,单位 ms |
count | 闪烁次数 |
返回 | —— |
RT_EOK | 由于采用异步操作,返回 RT_EOK 并不代表完成 LED 控制,因此可不关注返回值 |
为方便操作,定义了一些常用控制模式,建议直接使用。
-
LED 亮
#define LED_ON(ld)
-
LED 灭
#define LED_OFF(ld)
-
LED 翻转
#define LED_TOGGLE(ld)
-
LED 提示
#define LED_BEEP(ld)
-
LED 响铃
#define LED_BELL(ld)
-
LED 持续闪烁
#define LED_BLINK(ld)
-
LED 持续快闪
#define LED_BLINK_FAST(ld)
-
LED 持续慢闪
#define LED_BLINK_SLOW(ld)
默认闪烁周期时间为 1 秒,占空比 50%,您可以通过 scons --menuconfig
修改 littled 软件包的相关默认配置。
- pulse 不能大于 period。
- 新的控制模式会覆盖旧的控制模式,并在下一次修改控制模式前一直保持。
见 docs 目录。