样例简介
此样例将演示如何在Pegasus Wi-Fi IoT智能家居套件上使用cmsis 2.0 接口进行线程开发。
工程版本
- 系统版本/API版本:OpenHarmony 3.0 release
- IDE版本:DevEco Device Tool Release 3.0.0.401
快速上手
准备硬件环境
- 预装windows系统的PC机
- Hi3861V100开发板套件
准备开发环境
开发环境安装配置参照文档:[DevEco Device Tool 环境搭建]
准备工程
本用例采DevEco Device Tool工具进行开发,当配置完开发环境后,我们可以在IDE上进行工程的配置下载。
- 打开DevEco Device Tool,连接远程linux服务器:[DevEco Device Tool 环境搭建]
- 点击左下角DevEco插件图标,然后点击左边框出现的主页,弹出主页界面,主页中选择新建项目,如下图:
如上图所示,填写对应样例工程的名称,选择对应的样例组件和样例工程存放路径后,点击创建即可进行样例工程的下载。下载界面如下:
当三个进度条都为100%即下载完成。
准备工具链
- 在Projects中,点击Settings按钮,进入配置工程界面。
- 在toolchain页签中,DevEco Device Tool会自动检测依赖的编译工具链是否完备,如果提示部分工具缺失,可点击SetUp按钮,自动安装所需工具链。
- 如果出现安装pip组件失败,可参考修改Python源的方法进行修改,完成尝试重新安装。
工具链自动安装完成后如下图所示。
样例代码下载完成后,DevEco Device
Tool会重新要求连接远程服务器,输入密码连接后会进入对应的代码编辑界面,此时点击左下角DevEco插件图标,选择PROJECT
TASKS可以查看到对应的样例工程,点击build选项进行编译,并可在终端查看对应的编译结果。
固件生成在对应工程目录的out/hispark_taurus/electronic_board/目录下。
烧录/安装
编译完成后可以通过DevEco Device Tool进行烧录,在烧录前需要做一些烧录的配置:
配置准备
在配置烧录前需要先查看DevEco Device Tool是否可以正常识别串口。
-
点击左边栏"REMOTE DEVELOPMENT",找到 并点击” Local PC “ 选项。
-
查看 Local PC右边图标
如若图标为,则代表DevEco Device Tool已连接本地,可以正常识别串口。
如若图标为,则代表DevEco Device Tool未连接本地,不能识别串口,此时需要点击该绿色图标进行连接,连接成功后图标会变为。
- 点击主页,在主页选择对应工程,点击配置工程进入到配置页面。
查询串口
在DevEco Device Tool中,点击QUICK ACCESS > DevEco Home > Device,查看并记录对应的串口号。
如果对应的串口异常,请根据Hi3861V100开发板串口驱动安装安装USB转串口的驱动程序。
配置串口
在QUICK ACCESS > DevEco Home > Projects中,点击Settings打开工程配置界面。
在“hi3861”页签,设置烧录选项,包括upload_port、upload_protocol和upload_partitions。
- upload_port:选择已查询的串口号。
- upload_protocol:选择烧录协议,选择“hiburn-serial”。
- upload_partitions:选择待烧录的文件,默认选择hi3861_app。
烧录
- 所有的配置都修改完成后,在工程配置页签的顶部,点击Save进行保存。点击Open打开工程文件,然后在“PROJECT TASKS”中,点击hi3861下的Upload按钮,启动烧录。
- 启动烧录后,显示如下提示信息时,请在15秒内,按下开发板上的RST按钮重启开发板。
更多烧录细节可以参考Hi3861V100开发板烧录。
Thread API
API名称 |
说明 |
osThreadNew |
创建一个线程并将其加入活跃线程组中 |
osThreadGetName |
返回指定线程的名字 |
osThreadGetId |
返回当前运行线程的线程ID |
osThreadGetState |
返回当前线程的状态 |
osThreadSetPriority |
设置指定线程的优先级 |
osThreadGetPriority |
获取当前线程的优先级 |
osThreadYield |
将运行控制转交给下一个处于READY状态的线程 |
osThreadSuspend |
挂起指定线程的运行 |
osThreadResume |
恢复指定线程的运行 |
osThreadDetach |
分离指定的线程(当线程终止运行时,线程存储可以被回收) |
osThreadJoin |
等待指定线程终止运行 |
osThreadExit |
终止当前线程的运行 |
osThreadTerminate |
终止指定线程的运行 |
osThreadGetStackSize |
获取指定线程的栈空间大小 |
osThreadGetStackSpace |
获取指定线程的未使用的栈空间大小 |
osThreadGetCount |
获取活跃线程数 |
osThreadEnumerate |
获取线程组中的活跃线程数 |
osThreadNew()
osThreadId_t osThreadNew(osThreadFunc_t func, void *argument,const osThreadAttr_t *attr )
注意 :不能在中断服务调用该函数
参数:
名字 |
描述 |
func |
线程函数. |
argument |
作为启动参数传递给线程函数的指针 |
attr |
线程属性 |
osThreadTerminate()
osStatus_t osThreadTerminate (osThreadId_t thread_id)
名字 |
描述 |
thread_id |
指定线程id,该id是由osThreadNew或者osThreadGetId获得 |
|