System部分的API接口和RTOS常用的API接口类似。
BC26 OpenCPU SDK:https://github.com/sanjaywu/BC26-OpenCpu

1、重启系统

void Ql_Reset(u8 resetType);
  • 入口参数:
    resetType: 必须为0。

2、挂起当前任务直到时间超时

void Ql_Sleep(u32 msec);
  • 入口参数:

    msec:任务挂起的时间,单位:ms。

  • 注意事项:任务挂起时间不能太长,否则任务会接收到很多消息而无法处理,导致系统自动重启。

3、获取SDK版本

 s32  Ql_GetSDKVer(u8* ptrVer, u32 len);
  • 入口参数:

    ptrVer:保存SDK版本信息缓存区,要求至少20字节大小。
    len:缓存区长度。

  • 返回参数:

    获取成功:返回SDK版本信息长度。
    获取失败:则返回错误码。

4、从当前消息队列获取消息,如果当前消息队列没有消息,则会处于等待状态

s32 Ql_OS_GetMessage(ST_MSG* msg);
  • 入口参数:

    ST_MSG:ST_MSG指针:

typedef struct {u32  message;u32  param1;u32  param2;u32  srcTaskId;
} ST_MSG;
  • 返回参数:一直返回 QL_RET_OK。

5、在ISR中发送消息到其它任务(psm-eint回调除外)

s32 Ql_OS_SendMessageFromISR(s32 destTaskId, u32 msgId, u32 param1, u32 param2);
  • 入口参数:

    destTaskId: 发送消息到目的地任务的ID。
    msgId: 消息ID,必须大于0xFF。
    param1、param2: 发送给其它任务的参数

  • 返回参数:

    OS_SUCCESS:发送成功。
    OS_INVALID_ID:ID无效。
    OS_MEMORY_NOT_VALID:内存不足。
    OS_Q_FULL:消息队列已满。

6、在任务间发送消息。

s32 Ql_OS_SendMessage(s32 destTaskId, u32 msgId, u32 param1, u32 param2);
  • 入口参数:

    destTaskId: 发送消息到目的地任务的ID。
    msgId: 消息ID,必须大于0xFF.
    param1、param2: 发送给其它任务的参数

  • 返回参数:

    OS_SUCCESS:发送成功。
    OS_INVALID_ID:ID无效。
    OS_MEMORY_NOT_VALID:内存不足。
    OS_Q_FULL:消息队列已满。

7、创建互斥量

u32 Ql_OS_CreateMutex(void);
  • 返回参数:

    创建成功:互斥量句柄,Mutex Id。
    创建失败:0。

8、获取互斥量

void Ql_OS_TakeMutex(u32 mutexId,u32 block_time);
  • 入口参数:

    mutexId:互斥量句柄。
    block_time:阻塞等待互斥量时间,单位:ms。

9、释放互斥量

void Ql_OS_GiveMutex(u32 mutexId);
  • 入口参数:

    mutexId:互斥量句柄。

10、创建计数型信号量

u32 Ql_OS_CreateSemaphore(u32 maxCount,u32 InitialCount);
  • 入口参数:

    maxCount:可以达到的最大计数值。当信号量达到这个值时,就不能再“给定”。
    InitialCount:创建时分配的信号量值。

  • 返回参数:

    创建成功:信号量句柄。
    创建失败:0。

11、获取计数型信号量

u32 Ql_OS_TakeSemaphore(u32 semId, u32 block_time);
  • 入口参数:

    semId:要获取的信号量句柄。
    block_time:阻塞等待信号量时间,单位:ms。

  • 返回参数:

    TRUE:在等待时间内获取信号量成功。
    FALSE:在等待时间内获取信号量失败。

12、释放计数型信号量

void Ql_OS_GiveSemaphore(u32 semId);
  • 入口参数:

    semId:要释放的信号量句柄。

13、创建事件集,一个事件集有多个事件标志组成,每个事件集能包含10个事件标志

u32 Ql_OS_CreateEvent(void);
  • 返回参数:

    返回一个独一无二的事件集句柄。

14、等待事件

s32 Ql_OS_WaitEvent(u32 evtId, u32 evtFlag,u32 block_time);
  • 入口参数:

    evtId:要等待的事件集句柄。
    evtFlag:获取到的事件标志值。
    block_time:等待阻塞时间。

  • 返回参数:

    获取事件成功:返回0。
    获取事件失败:返回一个非0值。

15、发送事件标志

s32 Ql_OS_SetEvent(u32 evtId, u32 evtFlag);
  • 入口参数:

    evtId:要发送的事件集句柄。
    evtFlag:要发送的事件标志值。

  • 返回参数:

    发送事件成功:返回0。
    发送事件失败:返回一个非0值。

16、设置错误码

s32 Ql_SetLastErrorCode(s32 errCode);
  • 入口参数:

    errCode:要设置的错误码。

  • 返回参数:

    QL_RET_OK:执行成功。
    QL_RET_ERR_FATAL:设置错误码失败。

17、获取错误码

s32 Ql_GetLastErrorCode(void);
  • 返回参数:调用任务的最后一个错误代码。

18、获取当前任务优先级

u32 Ql_OS_GetCurrentTaskPriority(void);
  • 返回参数:任务的优先级大小,范围在200~255。

19、获取当前任务堆栈中剩余的字节数

u32 Ql_OS_GetCurrenTaskLeftStackSize(void);
  • 返回参数:堆栈大小,范围在1024~10*1024

20、将数据保存到NVRAM里面,掉电不丢失

s32 Ql_SecureData_Store(u8 index , u8* pData, u32 len);
  • 入口参数:

    index:NVRAM块索引,1或2。
    pData:要保存的数据,最多只能保存50字节。
    len:要保存的数据大小。

  • 返回参数:

    QL_RET_OK: 保存成功。
    QL_RET_ERR_PARAM: 保存失败,参数无效。

21、从NVRAM里面读取数据

s32 Ql_SecureData_Read(u8 index, u8* pBuffer, u32 len);
  • 入口参数:

    index:要读取的NVRAM块索引,1或2。
    pBuffer:保存读取到数据指针。
    len:读取到的数据大小,最大50字节。

  • 返回参数:

    QL_RET_OK: 读取成功。
    QL_RET_ERR_PARAM: 读取失败,参数无效。

注意事项:OpenCPU设计了2块系统存储空间来备份关键用户数据。开发者可以指定第一个参数索引[1-2]来指定不同的存储块,每个存储块可以存储50字节的数据。

BC26 OpenCPU System API接口相关推荐

  1. BC26 OpenCPU Time API接口

    BC26 OpenCPU 提供了时间相关的API接口,可以设置.获取本地时间,也可以将转换日历为秒或将秒转换为日历时间. BC26 OpenCPU SDK:https://github.com/san ...

  2. 整合swagger2生成Restful Api接口文档

    整合swagger2生成Restful Api接口文档 swagger Restful文档生成工具 2017-9-30 官方地址:https://swagger.io/docs/specificati ...

  3. 不使用jQuery对Web API接口POST,PUT,DELETE数据

    前些天,Insus.NET有演示Web API接口的操作: <怎样操作WebAPI接口(显示数据)>http://www.cnblogs.com/insus/p/5670401.html ...

  4. 简单API接口签名验证

    前言 后端在写对外的API接口时,一般会对参数进行签名来保证接口的安全性,在设计签名算法的时候,主要考虑的是这几个问题: 1. 请求的来源是否合法 2. 请求参数是否被篡改 3. 请求的唯一性 我们的 ...

  5. api接口返回动态的json格式?我太难了,尝试一下 linq to json

    一:背景 1. 讲故事 前段时间和一家公司联调api接口的时候,发现一个奇葩的问题,它的api返回的json会动态改变,简化如下: {"Code":101,"Items& ...

  6. .NET Core使用swagger进行API接口文档管理

    一.问题背景 随着技术的发展,现在的开发模式已经更多的转向了前后端分离的模式,在前后端开发的过程中,联系的方式也变成了API接口,但是目前项目中对于API的管理很多时候还是通过手工编写文档,每次的需求 ...

  7. api接口怎么用_API接口的使用我这里用java和python都写出来了

    实现调用API接口-阿里云大学​edu.aliyun.com python import urllib, sys import urllib.request import sslhost = 'htt ...

  8. java 新浪短网址生成器,新浪短链接接口被限制?最新新浪短网址api接口

    背景 新浪短网址api是sina平台官对外公开的短网址生成接口,可以将长链接通过接口生成t.cn样式的短链接,可以说是非常好用的.但近期新浪官方开始对已经公布的接口做出了多重限制,很多之前能用的功能现 ...

  9. java获取api接口新浪数据,新浪短网址API接口的获取以及API接口的调用文档分享...

    我们可能会收到类似于这样的短信,发现其中的链接并不是常规的网址链接,而是个短小精悍的短链接,产品中经常需要这样的需求,如果在给用户下发的短信中是一个很长的连接,用户体验肯定很差,因此我们需要实现长链接 ...

  10. java 百度api接口开发_百度熊掌号使用Java工具类对接API推送接口进行文章推送实例详解...

    对于java程序员来说,自己运维的百度熊掌号当然得使用java的方式去每天推送文章了.目前,百度推出了百度熊掌号服务.旨在更好的为站长服务.那么百度熊掌号如何通过推送API接口实现自动文章推送呢? 第 ...

最新文章

  1. linux运行炉石传说,使用Lutris在Linux上玩炉石传说
  2. 8种相似度度量方式的原理及实现【笔记自用】【1】
  3. Designing GANs:又一个GAN生产车间
  4. aspx是什么语言_什么是网页
  5. 课时106.边框练习(理解)
  6. 这篇纯数据分析文章被拒8次,发到行业顶刊
  7. 学习ActiveMQ(一):安装与启动
  8. 信息学奥赛一本通——1000:入门测试题目
  9. 10.众里寻他千百度- Find命令和文件后缀
  10. 解决 MyEclipse 的耗内存卡死的办法
  11. 常用CSS优化总结——网络性能与语法性能建议
  12. 读Windows核心编程-1-错误处理
  13. 易语言锐浪报表连接mysql_学习锐浪报表之MySQL连接字符串的实际操作步骤汇总...
  14. 哈理工OJ1219——结构体
  15. 将linux的系统时间EDT改为CST
  16. asciidoc_如何使用AsciiDoc创建博客
  17. 深度解读扫地机器人的导航原理
  18. Python获取二维数组的行列数
  19. WebGL技术,让你可以在浏览器编辑模型
  20. 数值计算方法(Numerical Methods)MATLAB实现(1)---Gauss消元法、Doolittle分解

热门文章

  1. 建模与仿真matlab论文,基于MATLAB的无线信道建模与仿真.doc
  2. Nginx 使用的 epoll 模型详解
  3. Windows 下使用苹果鼠标、键盘
  4. IDEA如何导入项目
  5. 斗鱼直播实时数据爬取
  6. Selenium自动化中无头浏览器的应用
  7. Java面经背诵版(一)
  8. 蓝牙耳机续航比较好的推荐,音质最好的耳机盘点
  9. Fiji/ImageJ调整图像的对比度;Fiji/Image查看图像的像素直方图分布
  10. 局部图像运动复原matlab,运动模糊图像复原算法实现及应用.docx