https://github.com/luhuadong/rtt-littled
Little LED Daemon for RT-Thread
https://github.com/luhuadong/rtt-littled
mcu rt-thread rt-thread-rtos
Last synced: about 2 months ago
JSON representation
Little LED Daemon for RT-Thread
- Host: GitHub
- URL: https://github.com/luhuadong/rtt-littled
- Owner: luhuadong
- License: apache-2.0
- Created: 2020-02-23T12:26:48.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-04-13T14:42:10.000Z (about 2 years ago)
- Last Synced: 2025-01-10T07:50:44.734Z (3 months ago)
- Topics: mcu, rt-thread, rt-thread-rtos
- Language: C
- Homepage:
- Size: 45.9 KB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-rt-thread - littled - Littled LED Daemon for LED driver. (Packages / Peripherals)
README
# rtt-littled
Little LED Daemon for RT-Thread## 1、介绍
littled 是一个基于链表的非常简单易用的 LED 控制软件包。
名字看起来有点奇怪,是 Little LED Daemon 的缩写,意思是小巧的 LED 驱动服务线程。用于帮助处理来自应用线程对 LED 亮、灭、闪烁等控制需求。
### 1.1 特性
- 采用单例模式实现服务
- 异步操作
- 接口简单
- 控制任务线程化
- 线程安全
- 支持中断调用### 1.2 软件架构

更多 >>
### 1.3 目录结构
| 名称 | 说明 |
| -------- | ---------- |
| examples | 示例目录 |
| inc | 头文件目录 |
| src | 源代码目录 |### 1.4 许可证
littled 软件包遵循 Apache license v2.0 许可,详见 `LICENSE` 文件。
### 1.5 依赖
- RT-Thread 3.0+
- 动态内存管理模块## 2、获取 littled 软件包
使用 littled package 需要在 RT-Thread 的包管理器中选择它,具体路径如下:
```
RT-Thread online packages --->
peripheral libraries and drivers --->
[*] littled: Little LED Daemon for LED driver --->
```然后让 RT-Thread 的包管理器自动更新,或者使用 `pkgs --update` 命令更新包到 BSP 中。
## 3、使用 littled 软件包
### 3.1 版本说明
| 版本 | 说明 |
| ------ | ---------------------- |
| v0.2.0 | 初始版本,实现预期功能 |
| latest | 进一步优化 |目前处于公测阶段,建议开发者使用 latest 版本。
### 3.2 配置选项
- 周期时间:`PKG_USING_LITTLED_PERIOD`
- 脉冲宽度(高电平持续时间):`PKG_USING_LITTLED_PULSE`
- 闪烁持续时间:`PKG_USING_LITTLED_BELL_TIME`
- 闪烁次数:`PKG_USING_LITTLED_BEEP_COUNT`> 时间的单位为毫秒(ms)
## 4、API 说明
### 4.1 注册与取消注册
使用 littled 服务线程的唯一要求是注册 LED,注册接口如下:
```c
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 了,可以调用如下接口取消注册,取消注册后再调用控制接口将无效。
```c
void led_unregister(int ld);
```| **参数** | **描述** |
| -------- | ---------- |
| ld | LED 描述符 |
| **返回** | —— |
| 无 | |### 4.2 模式控制
注册成功后,即可调用 led_mode 函数控制 LED 工作。
```c
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 控制,因此可不关注返回值 |### 4.3 宏定义
为方便操作,定义了一些常用控制模式,建议直接使用。
- **LED 亮**
```c
#define LED_ON(ld)
```- **LED 灭**
```c
#define LED_OFF(ld)
```- **LED 翻转**
```c
#define LED_TOGGLE(ld)
```- **LED 提示**
```
#define LED_BEEP(ld)
```- **LED 响铃**
```c
#define LED_BELL(ld)
```- **LED 持续闪烁**
```c
#define LED_BLINK(ld)
```- **LED 持续快闪**
```c
#define LED_BLINK_FAST(ld)
```- **LED 持续慢闪**
```c
#define LED_BLINK_SLOW(ld)
```默认闪烁周期时间为 1 秒,占空比 50%,您可以通过 `scons --menuconfig` 修改 littled 软件包的相关默认配置。
## 5、注意事项
1. pulse 不能大于 period。
2. 新的控制模式会覆盖旧的控制模式,并在下一次修改控制模式前一直保持。## 6、相关文档
见 docs 目录。
## 7、联系方式
- 维护:[email protected]
- 主页: