项目简介
IOOUT 是一个 GPIO 输出口控制扩展模块,可依据用户所需的周期、占空比和总时间,更便捷地管理多个 IO 口时序。它提供启动、暂停、设置和停止等接口,且支持内存管理的选用。
项目的主要特性和功能
- 多 IO 口管理:支持对多个 IO 口的时序进行管理。
- 丰富接口:提供启动、暂停、设置和停止接口,方便控制 IO 口输出。
- 内存管理可选:用户可根据需求选择是否使用内存管理,并配置相应接口函数。
- RTT 驱动支持:支持 RTT 驱动,配置后可将端口注册到 RTT 的设备列表,使用 rt_devcie 的通用函数调用该设备。
安装使用步骤
移植
- 定时调用:设置 IOOUT_BASE_TIME,初始化一个定时器,定时周期和 IOOUT_BASE_TIME 保持一致。在定时器中断中,调用接口函数
ioout_loop()
。示例: ```c
define IOOUT_BASE_TIME 10
// 定时器中断中
ioout_loop();
2. 配置内存管理:选择是否使用内存管理,并配置内存管理接口函数。示例:
c
define IOOUT_USE_MEM
ifdef IOOUT_USE_MEM
void ioout_malloc(uint32_t nbytes) { //add malloc } void ioout_free (void ptr) { //add free }
endif
3. 配置 RTT 驱动:选择是否使用 RTT 驱动,配置 RTT 驱动必须打开 IOOUT_USE_MEM。示例:
c
define IOOUT_USE_RT_DEVICE
```
API 使用
- 端口函数初始化:查找空闲端口并初始化,根据是否使用内存管理有不同的调用方式。
- 使用内存管理:
c int ioout_init(ioout_t *handle, void(*ioout_cb)(uint8_t));
- 不使用内存管理:
c int ioout_init(ioout_t handle, void(*ioout_cb)(uint8_t));
- 使用内存管理:
- 删除:将端口删除。
- 使用内存管理:
c int ioout_kill(ioout_t *handle);
- 不使用内存管理:
c int ioout_kill(ioout_t handle);
- 使用内存管理:
- 时间参数设置:设置端口时间并启动,时间参数以 ms 为单位,参数必须是 IOOUT_BASE_TIME 时间的整数倍。
c int ioout_set(ioout_t handle, ioout_setvalue_t setvalue);
- 停止端口输出:停止端口输出并复位端口参数。
c int ioout_stop(ioout_t handle);
- 暂停端口输出:停止端口输出,端口参数不复位。
c int ioout_pause(ioout_t handle);
- 启动端口输出:启动端口输出,端口参数不复位。
c int ioout_start(ioout_t handle);
RTT 设备驱动使用
使用端口注册函数将端口注册到 RTT 的设备列表,然后使用 rt_devcie 的通用函数调用该设备。使用 ioout_rtt 驱动需要打开 IOOUT_USE_MEM 和 IOOUT_USE_RT_DEVICE 两个定义。
c
rt_err_t rt_hw_ioout_device_init(const char *device_name, void(*ioout_cb)(uint8_t));
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】