HCM111Z QuecOpen(SDK) 通用 API 开发指南
简介
Quectel HCM111Z 模块支持 QuecOpen® 解决方案。QuecOpen® 是基于 RTOS 系统的嵌入式开发平台。它旨在简化物联网应用的开发和设计。
本文档适用于基于 SDK 构建环境的 QuecOpen® 解决方案。本文档概述了 Quectel HCM111Z 模块 SDK 中提供的 flash API、watchdog API、timer API、RTC API 和其他通用系统 API,以及 QuecOpen® 解决方案中的开发过程。
Flash
Flash API
头文件
ql_flash.h,flash API 的头文件,在 components/quectel_api/ql_include 目录中。除非另有说明,本文档中提到的所有头文件都在此目录中。
API 概述
| 函数 | 描述 |
|---|---|
ql_flash_set_security() |
设置 flash 保护类型。 |
ql_flash_write() |
向 flash 写入数据。 |
ql_flash_read() |
从 flash 读取数据。 |
ql_flash_erase() |
从 flash 擦除数据。 |
API 描述
ql_flash_set_security
此函数设置 flash 保护类型。在写入或删除数据之前需要启用 flash 保护。
原型:
ql_errcode_flash_e ql_flash_set_security(ql_flash_protect_type_e type)
参数:
type: [In] Flash 保护类型。有关详细信息,请参见 ql_flash_protect_type_e。
返回值:
函数执行结果码,请参见 ql_errcode_flash_e。
ql_flash_protect_type_e
flash 保护类型的枚举:
typedef enum {
QL_FLASH_PROTECT_NONE = 0,
QL_FLASH_PROTECT_ALL,
} ql_flash_protect_type_e;
| 成员 | 描述 |
|---|---|
| QL_FLASH_PROTECT_NONE | 无保护 |
| QL_FLASH_PROTECT_ALL | 保护整个 flash |
ql_errcode_flash_e
结果代码的枚举:
typedef enum {
QL_FLASH_SUCCESS = 0,
QL_FLASH_EXECUTE_ERR,
QL_FLASH_PARAM_ERR,
} ql_errcode_flash_e;
| 成员 | 描述 |
|---|---|
| QL_FLASH_SUCCESS | 执行成功 |
| QL_FLASH_EXECUTE_ERR | 执行失败 |
| QL_FLASH_PARAM_ERR | 参数无效 |
ql_flash_write
此函数向 flash 写入数据。
原型:
ql_errcode_flash_e ql_flash_write(uint8_t *data, uint32_t addr, uint32_t len)
参数:
data: [In] 要写入的数据。addr: [In] 要写入数据的地址。len: [In] 要写入数据的长度。单位:字节。
返回值:
函数执行结果码,请参见 ql_errcode_flash_e。
ql_flash_read
此函数从 flash 读取数据。
原型:
ql_errcode_flash_e ql_flash_read(uint8_t *data, uint32_t addr, uint32_t len)
参数:
data: [Out] 用于存储读取数据的缓冲区。addr: [In] 要读取数据的地址。len: [In] 要读取数据的长度。单位:字节。
返回值:
函数执行结果码,请参见 ql_errcode_flash_e。
ql_flash_erase
此函数从 flash 擦除数据。每次至少擦除一个扇区(4 KB),每次擦除的数据大小是扇区大小的整数倍。
原型:
ql_errcode_flash_e ql_flash_erase(uint32_t addr, uint32_t len)
参数:
addr: [In] 要擦除数据的地址。len: [In] 要擦除数据的长度。单位:字节。
返回值:
函数执行结果码,请参见 ql_errcode_flash_e。
开发过程
本章描述如何在应用程序中使用 flash API 以及如何调试基本功能。
操作过程
模块 SDK 中提供了操作 flash 的示例。演示在 quectel_demo/ql_flash_demo/code 目录下的 ql_flash_demo.c 中。相关函数的描述如下:
demo_flash():任务执行函数,向 flash 写入数据,从 flash 读取和擦除数据。
void demo_flash(void)
{
uint32_t id;
ql_debug("flash demo\r\n");
ql_flash_set_security(QL_FLASH_PROTECT_NONE);
ql_flash_erase(USER_FLASH_BASE_ADDR, FLASH_PAGE_SIZE);
uint32_t idx = 0;
for(idx=0; idx<FLASH_PAGE_SIZE; idx++)
buf[idx] = idx;
ql_flash_write(buf,USER_FLASH_BASE_ADDR, FLASH_PAGE_SIZE );
for(idx=0; idx<FLASH_PAGE_SIZE; idx++)
buf[idx] = 0xff;
ql_flash_read(buf,USER_FLASH_BASE_ADDR, FLASH_PAGE_SIZE);
ql_debug("read reg:\r\n");
show_reg(buf,5,1);
show_reg(buf+4091,5,1);
flash_erase(USER_FLASH_BASE_ADDR, FLASH_PAGE_SIZE);
for(idx=0; idx<FLASH_PAGE_SIZE; idx++)
buf[idx] = idx+1;
flash_write(USER_FLASH_BASE_ADDR, FLASH_PAGE_SIZE, buf);
for(idx=0; idx<FLASH_PAGE_SIZE; idx++)
buf[idx] = 0xfe;
flash_read(USER_FLASH_BASE_ADDR, FLASH_PAGE_SIZE, buf);
ql_debug("read reg:\r\n");
show_reg(buf,5,1);
show_reg(buf+4091,5,1);
ql_flash_erase(USER_FLASH_MAX_PAGE_ADDR, FLASH_PAGE_SIZE);
for(idx=0; idx<FLASH_PAGE_SIZE; idx++)
buf[idx] = idx+2;
ql_flash_write(buf,USER_FLASH_MAX_PAGE_ADDR, FLASH_PAGE_SIZE);
for(idx=0; idx<FLASH_PAGE_SIZE; idx++)
buf[idx] = 0xfd;
ql_flash_read(buf,USER_FLASH_MAX_PAGE_ADDR, FLASH_PAGE_SIZE );
ql_debug("read reg:\r\n");
show_reg(buf,5,1);
show_reg(buf+4091,5,1);
ql_flash_erase(USER_FLASH_MAX_PAGE_ADDR, FLASH_PAGE_SIZE);
for(idx=0; idx<FLASH_PAGE_SIZE; idx++)
buf[idx] = idx+3;
ql_flash_write(buf,USER_FLASH_MAX_PAGE_ADDR, FLASH_PAGE_SIZE);
for(idx=0; idx<FLASH_PAGE_SIZE; idx++)
buf[idx] = 0xfc;
ql_flash_read(buf,USER_FLASH_MAX_PAGE_ADDR, FLASH_PAGE_SIZE);
ql_debug("read reg:\r\n");
show_reg(buf,5,1);
show_reg(buf+4091,5,1);
ql_flash_erase(USER_FLASH_MAX_PAGE_ADDR, FLASH_PAGE_SIZE);
for(idx=0; idx<FLASH_PAGE_SIZE; idx++)
buf[idx] = 0x00;
ql_flash_read(buf,USER_FLASH_MAX_PAGE_ADDR, FLASH_PAGE_SIZE);
ql_debug("read reg:\r\n");
show_reg(buf,5,1);
show_reg(buf+4091,5,1);
函数调试
要调试 flash 函数,使用安装了模块的评估板(例如,HCM111Z TE-B),并按照以下步骤操作:
- 运行 操作过程 中描述的 flash 演示。
- 重新编译固件版本,并将其烧录到模块。
- 重启模块。
- 打开 UART 1 端口以获取日志信息。

上述图中的日志数据显示,向 flash 写入数据、从 flash 读取数据以及从 flash 擦除数据都成功。
看门狗
Watchdog API
头文件
ql_watchdog.h,watchdog API 的头文件,在 components/quectel_api/ql_include 目录中。除非另有说明,本文档中提到的所有头文件都在此目录中。
API 概述
| 函数 | 描述 |
|---|---|
ql_wdg_init() |
初始化 watchdog。 |
ql_wdg_reload() |
喂watchdog。 |
ql_wdg_finalize() |
关闭 watchdog。 |
API 描述
ql_wdg_init
此函数初始化 watchdog。
原型:
ql_wdg_errcode_e ql_wdg_init(uint32_t timeout)
参数:
timeout: [In] Watchdog 重置周期。单位:秒。
返回值:
函数执行结果码,请参见 ql_wdg_errcode_e。
ql_wdg_errcode_e
结果代码的枚举:
typedef enum {
QL_WDG_SUCCESS = 0,
QL_WDG_EXECUTE_ERR,
QL_WDG_INVALID_PARAM_ERR,
} ql_wdg_errcode_e;
| 成员 | 描述 |
|---|---|
| QL_WDG_SUCCESS | 执行成功 |
| QL_WDG_EXECUTE_ERR | 执行失败 |
| QL_WDG_INVALID_PARAM_ERR | 参数无效 |
ql_wdg_reload
此函数喂狗。
原型:
ql_wdg_errcode_e ql_wdg_reload(void)
参数:
无
返回值:
函数执行结果码,请参见 ql_wdg_errcode_e。
ql_wdg_finalize
此函数关闭 watchdog。
原型:
ql_wdg_errcode_e ql_wdg_finalize(void)
参数:
无
返回值:
函数执行结果码,请参见 ql_wdg_errcode_e。
开发过程
本章描述如何在应用程序中使用 watchdog API。
操作过程
模块 SDK 中提供了操作 watchdog API 的示例。演示在 quectel_demo/ql_wdt_demo/code 目录下的 ql_wdt_demo.c 文件中。相关函数的描述如下:
demo_wdt():此函数创建 watchdog 任务,需要调用以运行演示。
void demo_wdt(void)
{
ql_debug("watchdog demo\r\n");
ql_wdg_init(4);
while(1)
{
#if 0 //Exceeding the maximum time set by the watchdog
co_delay_100us(50000);
#else
co_delay_100us(30000);
ql_debug("wdg reload\r\n");
ql_wdg_reload();
#endif
}
}
当程序正常运行时,每 3 秒程序自动执行一次 ql_wdg_reload(),此时程序不会触发看门狗复位。当将上述代码中的 #if 0 改为 #if 1,且编译固件版本并将新固件版本重新烧录至模块中,若程序超过 4 秒没有自动执行 ql_wdg_reload(),将触发看门狗复位。
定时器
Timer API
头文件
ql_timer.h,timer API 的头文件,在 components/quectel_api/ql_include 目录中。除非另有说明,本文档中提到的所有头文件都在此目录中。
API 概述
| 函数 | 描述 |
|---|---|
ql_timer_init() |
初始化定时器。 |
ql_timer_start() |
启动定时器。 |
ql_timer_stop() |
停止定时器。 |
ql_timer_get_cnt() |
获取定时器计数值。 |
API 描述
ql_timer_init
此函数初始化定时器。
原型:
ql_timer_errcode_e ql_timer_init(ql_timer_number_e timer_id, uint32_t timer_us, ql_timer_mode_e mode, ql_timer_callback timer_cb)
参数:
timer_id: [In] 定时器 ID。有关详细信息,请参见 ql_timer_number_e。timer_us: [In] 定时器持续时间。单位:微秒。范围:1~349000。mode: [In] 定时器工作模式。有关详细信息,请参见 ql_timer_mode_e。timer_cb: [In] 定时器中断的回调函数。有关详细信息,请参见 ql_timer_callback。
返回值:
函数执行结果码,请参见 ql_timer_errcode_e。
ql_timer_number_e
定时器 ID 的枚举:
typedef enum {
QL_TIMER_0 = 0,
QL_TIMER_1,
} ql_timer_number_e;
| 成员 | 描述 |
|---|---|
| QL_TIMER_0 | 定时器 0 |
| QL_TIMER_1 | 定时器 1 |
ql_timer_mode_e
定时器工作模式的枚举:
typedef enum {
QL_TIMER_SINGLE = 0,
QL_TIMER_PERIODIC,
} ql_timer_mode_e;
| 成员 | 描述 |
|---|---|
| QL_TIMER_SINGLE | 单次(预留值,暂不支持) |
| QL_TIMER_PERIODIC | 周期 |
ql_timer_callback
此函数是定时器中断的回调函数。
typedef void (*ql_timer_callback)(uint8_t arg)
arg: [In] 输入的参数。
ql_timer_errcode_e
结果代码的枚举:
typedef enum {
QL_TIMER_SUCCESS = 0,
QL_TIMER_EXECUTE_ERR,
QL_TIMER_INVALID_PARAM_ERR,
QL_TIMER_NOT_OPEN_ERR,
} ql_timer_errcode_e;
| 成员 | 描述 |
|---|---|
| QL_TIMER_SUCCESS | 执行成功 |
| QL_TIMER_EXECUTE_ERR | 执行失败 |
| QL_TIMER_INVALID_PARAM_ERR | 参数无效 |
| QL_TIMER_NOT_OPEN_ERR | 定时器未启用 |
ql_timer_start
此函数启动定时器。
原型:
ql_timer_errcode_e ql_timer_start(ql_timer_number_e timer_id)
参数:
timer_id: [In] 定时器 ID。有关详细信息,请参见 ql_timer_number_e。
返回值:
函数执行结果码,请参见 ql_timer_errcode_e。
ql_timer_stop
此函数停止定时器。
原型:
ql_timer_errcode_e ql_timer_stop(ql_timer_number_e timer_id)
参数:
timer_id: [In] 定时器 ID。有关详细信息,请参见 ql_timer_number_e。
返回值:
函数执行结果码,请参见 ql_timer_errcode_e。
ql_timer_get_cnt
此函数获取定时器计数值。
原型:
ql_timer_errcode_e ql_timer_get_cnt(ql_timer_number_e timer_id, uint32_t *count)
参数:
timer_id: [In] 定时器 ID。有关详细信息,请参见 ql_timer_number_e。count: [In] 计数值的指针。
返回值:
函数执行结果码,请参见 ql_timer_errcode_e。
开发过程
本章描述如何在应用程序中使用 timer API 以及如何调试基本功能。
操作过程
模块 SDK 中提供了操作定时器的示例。演示在 quectel_demo/ql_timer_demo/code 目录下的 ql_timer_demo.c 中。相关函数的描述如下:
demo_timer():此函数用于初始化定时器和启用定时器。ql_timer0_cb_test():定时器 0 中断的回调函数。ql_timer1_cb_test():定时器 1 中断的回调函数。
void demo_timer(void)
{
uint8_t ret;
ql_debug("hardware timer demo\r\n");
ret = ql_timer_init(QL_TIMER_0,500,QL_TIMER_PERIODIC,ql_timer0_cb_test);
if(ret != QL_TIMER_SUCCRSS)
{
ql_debug("timer0 init fail\r\n");
}
ql_timer_start(QL_TIMER_0);
ret = ql_timer_init(QL_TIMER_1,20000,QL_TIMER_PERIODIC,ql_timer1_cb_test);
if(ret != QL_TIMER_SUCCRSS)
{
ql_debug("timer1 init fail\r\n");
}
ql_timer_start(QL_TIMER_1);
}
void ql_timer0_cb_test(uint8_t arg)
{
static uint32_t cnt = 0;
uint32_t num = 0;
cnt++;
if(cnt >= 2000){ //1s
ql_timer_stop(QL_TIMER_0);
ql_timer_get_cnt(QL_TIMER_0,&num);
ql_debug("timer0 num = %d\r\n",num);
}
}
void ql_timer1_cb_test(uint8_t arg)
{
static uint32_t cnt = 0;
uint32_t num = 0;
cnt++;
if(cnt >= 100){ //2s
cnt = 0;
ql_timer_get_cnt(QL_TIMER_1,&num);
ql_debug("timer1 num = %d\r\n",num);
}
}
函数调试
要调试定时器函数,使用安装了模块的开发板(例如 HCM111Z TE-B),并按照以下步骤操作:
- 运行 操作过程 中描述的定时器演示。
- 重新编译固件版本,并将其烧录到模块。
- 重启模块。
- 打开 UART 1 端口以获取日志信息。

上述图中的日志数据显示,定时器已启动,定时器中断回调函数已成功调用。
RTC
RTC API
头文件
ql_rtc.h,RTC API 的头文件,在 components/quectel_api/ql_include 目录中。除非另有说明,本文档中提到的所有头文件都在此目录中。
API 概述
| 函数 | 描述 |
|---|---|
ql_rtc_init() |
初始化 RTC。 |
ql_rtc_start() |
启用 RTC。 |
API 描述
ql_rtc_init
此函数初始化 RTC。
原型:
ql_rtc_errcode_e ql_rtc_init(ql_rtc_port_e port, ql_rtc_callback callback)
参数:
port: [In] RTC 编号。有关详细信息,请参见 ql_rtc_port_e。callback: [In] RTC 中断的回调函数。有关详细信息,请参见 ql_rtc_callback。
返回值:
函数执行结果码,请参见 ql_rtc_errcode_e。
ql_rtc_port_e
RTC 编号的枚举:
typedef enum {
QL_RTC_PORT0 = 0,
QL_RTC_PORT1,
} ql_rtc_port_e;
| 成员 | 描述 |
|---|---|
| QL_RTC_PORT0 | RTC 0 |
| QL_RTC_PORT1 | RTC 1 |
ql_rtc_callback
此函数是 RTC 中断的回调函数。
typedef void (*ql_rtc_callback)(void)
无参数和返回值。
ql_rtc_errcode_e
结果代码的枚举:
typedef enum {
QL_RTC_SUCCESS = 0,
QL_RTC_EXECUTE_ERR,
QL_RTC_INVAILD_PARAM_ERR,
} ql_rtc_errcode_e;
| 成员 | 描述 |
|---|---|
| QL_RTC_SUCCESS | 执行成功 |
| QL_RTC_EXECUTE_ERR | 执行失败 |
| QL_RTC_INVAILD_PARAM_ERR | 参数无效 |
ql_rtc_start
此函数启用 RTC。
原型:
ql_rtc_errcode_e ql_rtc_start(ql_rtc_port_e port, uint32_t ms)
参数:
port: [In] RTC 编号。有关详细信息,请参见 ql_rtc_port_e。ms: [In] 定时时间。单位:毫秒。
返回值:
函数执行结果码,请参见 ql_rtc_errcode_e。
开发过程
本章描述如何在应用程序中使用 RTC API 以及如何调试基本功能。
操作过程
模块 SDK 中提供了操作 RTC API 的示例。演示在 quectel_demo/ql_rtc_demo/code 目录下的 ql_rtc_demo.c 文件中。相关函数的描述如下:
demo_rtc():此函数用于初始化 RTC 和配置 RTC 中断的回调函数。ql_rtc0_cb_test():RTC 0 中断的回调函数。ql_rtc1_cb_test():RTC 1 中断的回调函数。
void demo_rtc(void)
{
ql_debug("rtc demo\r\n");
ql_rtc_init(QL_RTC_PORT0,ql_rtc0_cb_test);
ql_rtc_init(QL_RTC_PORT1,ql_rtc1_cb_test);
ql_rtc_start(QL_RTC_PORT0,10);
ql_rtc_start(QL_RTC_PORT1,1000);
ql_sys_sleep_enable();
}
void ql_rtc0_cb_test(void)
{
ql_debug("rtc0 %d\r\n",ql_sys_get_run_time());
}
void ql_rtc1_cb_test(void)
{
ql_debug("rtc1 %d\r\n",ql_sys_get_run_time());
ql_rtc_start(QL_RTC_PORT1,1000);
}
函数调试
要调试 RTC 函数,使用安装了模块的开发板(例如,HCM111Z TE-B),并按照以下步骤操作:
- 运行 操作过程 中描述的 RTC 演示。
- 重新编译固件版本,并将其烧录到模块。
- 重启模块。
- 打开 UART 1 端口以获取日志信息。

上述图中的日志数据显示,RTC 已成功初始化和启用。
其他通用 API
通用系统 API
头文件
ql_sys.h,通用系统 API 的头文件,在 components/quectel_api/ql_include 目录中。除非另有说明,本文档中提到的所有头文件都在此目录中。
API 概述
| 函数 | 描述 |
|---|---|
ql_sys_sleep_enable() |
使模块进入睡眠模式。 |
ql_sys_sleep_disable() |
禁止模块进入睡眠模式。 |
ql_sys_reset() |
复位模块。 |
ql_sys_delay_100us() |
在程序中增加延时时间。 |
ql_sys_set_pclk() |
设置系统主频。 |
ql_sys_set_tx_power() |
设置射频发射功率。 |
ql_sys_get_run_time() |
获取程序运行时间。 |
ql_sys_irq_enable() |
中断系统。 |
API 描述
ql_sys_sleep_enable
此函数使模块进入睡眠模式。
原型:
ql_sys_errcode_e ql_sys_sleep_enable(void)
参数:
无
返回值:
函数执行结果码,请参见 ql_sys_errcode_e。
ql_sys_errcode_e
结果代码的枚举:
typedef enum {
QL_SYS_SUCCESS = 0,
QL_SYS_EXECUTE_ERR,
QL_SYS_INVALID_PARAM_ERR,
} ql_sys_errcode_e;
| 成员 | 描述 |
|---|---|
| QL_SYS_SUCCESS | 执行成功 |
| QL_SYS_EXECUTE_ERR | 执行失败 |
| QL_SYS_INVALID_PARAM_ERR | 参数无效 |
ql_sys_sleep_disable
此函数禁止模块进入睡眠模式。
原型:
ql_sys_errcode_e ql_sys_sleep_disable(void)
参数:
无
返回值:
函数执行结果码,请参见 ql_sys_errcode_e。
ql_sys_reset
此函数复位模块。
原型:
ql_sys_errcode_e ql_sys_reset(void)
参数:
无
返回值:
函数执行结果码,请参见 ql_sys_errcode_e。
ql_sys_delay_100us
此函数在程序中增加延时时间。
原型:
ql_sys_errcode_e ql_sys_delay_100us(uint32_t num)
参数:
num: [In] 延时时间。单位:100 微秒。
返回值:
函数执行结果码,请参见 ql_sys_errcode_e。
ql_sys_set_pclk
此函数设置系统主频。
原型:
ql_sys_errcode_e ql_sys_set_pclk(ql_sys_clk_e clk)
参数:
clk: [In] 系统主频。有关详细信息,请参见 ql_sys_clk_e。
返回值:
函数执行结果码,请参见 ql_sys_errcode_e。
ql_sys_clk_e
系统主频的枚举:
typedef enum {
QL_SYS_CLK_6M,
QL_SYS_CLK_12M,
QL_SYS_CLK_24M,
QL_SYS_CLK_48M,
} ql_sys_clk_e;
| 成员 | 描述 |
|---|---|
| QL_SYS_CLK_6M | 设置系统主频为 6 MHz |
| QL_SYS_CLK_12M | 设置系统主频为 12 MHz |
| QL_SYS_CLK_24M | 设置系统主频为 24 MHz |
| QL_SYS_CLK_48M | 设置系统主频为 48 MHz |
ql_sys_set_tx_power
此函数设置射频发射功率。
原型:
ql_sys_errcode_e ql_sys_set_tx_power(ql_sys_tx_power_e power)
参数:
power: [In] 射频发射功率。有关详细信息,请参见 ql_sys_tx_power_e。
返回值:
函数执行结果码,请参见 ql_sys_errcode_e。
ql_sys_tx_power_e
射频发射功率的枚举:
typedef enum {
QL_TX_POWER_NEG_16dBm,
QL_TX_POWER_NEG_10dBm,
QL_TX_POWER_NEG_7dBm,
QL_TX_POWER_NEG_5dBm,
QL_TX_POWER_NEG_3dBm,
QL_TX_POWER_NEG_2dBm,
QL_TX_POWER_NEG_1dBm,
QL_TX_POWER_0dBm,
QL_TX_POWER_POS_1dBm,
QL_TX_POWER_POS_2dBm,
QL_TX_POWER_POS_3dBm,
QL_TX_POWER_POS_4dBm,
QL_TX_POWER_POS_5dBm,
QL_TX_POWER_POS_6dBm,
QL_TX_POWER_POS_7dBm,
QL_TX_POWER_POS_8dBm,
QL_TX_POWER_POS_9dBm,
QL_TX_POWER_POS_10dBm,
} ql_sys_tx_power_e;
| 成员 | 描述 |
|---|---|
| QL_TX_POWER_NEG_16dBm | 设置发射功率为 -16 dBm |
| QL_TX_POWER_NEG_10dBm | 设置发射功率为 -10 dBm |
| QL_TX_POWER_NEG_7dBm | 设置发射功率为 -7 dBm |
| QL_TX_POWER_NEG_5dBm | 设置发射功率为 -5 dBm |
| QL_TX_POWER_NEG_3dBm | 设置发射功率为 -3 dBm |
| QL_TX_POWER_NEG_2dBm | 设置发射功率为 -2 dBm |
| QL_TX_POWER_NEG_1dBm | 设置发射功率为 -1 dBm |
| QL_TX_POWER_NEG_0dBm | 设置发射功率为 0 dBm |
| QL_TX_POWER_POS_1dBm | 设置发射功率为 1 dBm |
| QL_TX_POWER_POS_2dBm | 设置发射功率为 2 dBm |
| QL_TX_POWER_POS_3dBm | 设置发射功率为 3 dBm |
| QL_TX_POWER_POS_4dBm | 设置发射功率为 4 dBm |
| QL_TX_POWER_POS_5dBm | 设置发射功率为 5 dBm |
| QL_TX_POWER_POS_6dBm | 设置发射功率为 6 dBm |
| QL_TX_POWER_POS_7dBm | 设置发射功率为 7 dBm |
| QL_TX_POWER_POS_8dBm | 设置发射功率为 8 dBm |
| QL_TX_POWER_POS_9dBm | 设置发射功率为 9 dBm |
| QL_TX_POWER_POS_10dBm | 设置发射功率为 10 dBm |
ql_sys_get_run_time
此函数获取程序运行时间。当运行时间达到 83886079 毫秒(0x4FFFFFF)之后会重新计时。
原型:
uint32_t ql_sys_get_run_time(void)
参数:
无
返回值:
程序运行时间;单位:毫秒。
ql_sys_irq_enable
此函数用于中断系统。
原型:
ql_sys_errcode_e ql_sys_irq_enable(void)
参数:
无
返回值:
函数执行结果码,请参见 ql_sys_errcode_e。
术语缩写
| 缩略语 | 描述 |
|---|---|
| API | 应用程序编程接口 |
| EVB | 评估板 |
| ID | 标识符 |
| IoT | 物联网 |
| RTC | 实时时钟 |
| SDK | 软件开发工具包 |