当前位置:网站首页>WiFi-IoT 鸿蒙开发套件样例开发
WiFi-IoT 鸿蒙开发套件样例开发
2022-06-27 01:32:00 【润和HiHope社区】
HiSpark WiFi-IoT鸿蒙开发套件 首发于HDC 2020,是首批支持HarmonyOS 2.0的开发套件,亦是鸿蒙官方推荐套件,由润和软件HiHope量身打造,已在鸿蒙社区和广大鸿蒙开发者中得到广泛应用。 ![]() 一、Thread API osThreadNew() osThreadId_t osThreadNew(osThreadFunc_t func, void *argument,const osThreadAttr_t *attr ) 复制 注意 :不能在中断服务调用该函数 参数 osThreadTerminate() osStatus_t osThreadTerminate (osThreadId_t thread_id)复制 二、代码分析 创建线程,创建成功则打印线程名字和线程ID osThreadId_t newThread(char *name, osThreadFunc_t func, void *arg) { osThreadAttr_t attr = { name, 0, NULL, 0, NULL, 1024*2, osPriorityNormal, 0, 0 }; osThreadId_t tid = osThreadNew(func, arg, &attr); if (tid == NULL) { printf("osThreadNew(%s) faiLED.\r\n", name); } else { printf("osThreadNew(%s) success, thread id: %d.\r\n", name, tid); } return tid;}复制 该函数首先会打印自己的参数,然后对全局变量count进行循环+1操作,之后会打印count的值 void threadTest(void *arg) { static int count = 0; printf("%s\r\n",(char *)arg); osThreadId_t tid = osThreadGetId(); printf("threadTest osThreadGetId, thread id:%p\r\n", tid); while (1) { count++; printf("threadTest, count: %d.\r\n", count); osDelay(20); }}复制 主程序rtosv2_thread_main创建线程并运行,并使用上述API进行相关操作,最后终止所创建的线程。 void rtosv2_thread_main(void *arg) { (void)arg; osThreadId_t tid=newThread("test_thread", threadTest, "This is a test thread."); const char *t_name = osThreadGetName(tid); printf("[Thread Test]osThreadGetName, thread name: %s.\r\n", t_name); osThreadState_t state = osThreadGetState(tid); printf("[Thread Test]osThreadGetState, state :%d.\r\n", state); osStatus_t status = osThreadSetPriority(tid, osPriorityNormal4); printf("[Thread Test]osThreadSetPriority, status: %d.\r\n", status); osPriority_t pri = osThreadGetPriority (tid); printf("[Thread Test]osThreadGetPriority, priority: %d.\r\n", pri); status = osThreadSuspend(tid); printf("[Thread Test]osThreadSuspend, status: %d.\r\n", status); status = osThreadResume(tid); printf("[Thread Test]osThreadResume, status: %d.\r\n", status); uint32_t stacksize = osThreadGetStackSize(tid); printf("[Thread Test]osThreadGetStackSize, stacksize: %d.\r\n", stacksize); uint32_t stackspace = osThreadGetStackSpace(tid); printf("[Thread Test]osThreadGetStackSpace, stackspace: %d.\r\n", stackspace); uint32_t t_count = osThreadGetCount(); printf("[Thread Test]osThreadGetCount, count: %d.\r\n", t_count); osDelay(100); status = osThreadTerminate(tid); printf("[Thread Test]osThreadTerminate, status: %d.\r\n", status);} 三、如何编译 将此目录下的 thread.c 和 BUILD.gn 复制到openharmony源码的applications\sample\wifi-iot\app\iothardware目录下, 修改openharmony源码的applications\sample\wifi-iot\app\BUILD.gn文件,将其中的 features 改为: features = [ "iothardware:thread_demo", ]复制 3.在openharmony源码顶层目录执行:python build.py wifiiot 四、运行结果 [Thread Test] osThreadNew(test_thread) success.[Thread Test] osThreadGetName, thread name: test_thread.[Thread Test] osThreadGetState, state :1.[Thread Test] This is a test thread. <-testThread log[Thread Test] threadTest osThreadGetId, thread id:0xe8544[Thread Test] threadTest, count: 1. <-testThread log[Thread Test] osThreadSetPriority, status: 0.[Thread Test] osThreadGetPriority, priority: 28.[Thread Test] osThreadSuspend, status: 0.[Thread Test] osThreadResume, status: 0.[Thread Test] osThreadGetStackSize, stacksize: 2048.[Thread Test] osThreadGetStackSpace, stackspace: 1144.[Thread Test] osThreadGetCount, count: 12.[Thread Test] threadTest, count: 2. <-testThread log[Thread Test] threadTest, count: 3. <-testThread log[Thread Test] threadTest, count: 4. <-testThread log[Thread Test] threadTest, count: 5. <-testThread log[Thread Test] threadTest, count: 6. <-testThread log[Thread Test] osThreadTerminate, status: 0.复制 |
边栏推荐
- 建模规范:环境设置
- 在 IDEA 里看个书很过分嘛!
- 学习DiscoDiffusion的最基础操作
- Bs-gx-016 implementation of textbook management system based on SSM
- IIS 部署静态网站和 FTP 服务
- Why divide the training set and the test set before normalization?
- 浏览器缓存
- 你的case真的pass了吗?
- 1.44 inch TFT-LCD display screen mold taking tutorial
- Keepalived 实现 Redis AutoFailover (RedisHA)11
猜你喜欢

持续交付-Blue Ocean 应用

I encountered some problems when connecting to the database. How can I solve them?

架构实战营模块五作业

Learn the most basic operation of discodiffusion

清华&智源 | CogView2:更快更好的文本图像生成模型

Esp32 add multi directory custom component

30《MySQL 教程》MySQL 存储引擎概述

Amazon ElastiCache 飞速搭建缓存服务集群,这才叫快

Summary of working at home during the epidemic | community essay solicitation
![Find the minimum value in the rotation sort array ii[classical Abstract dichotomy + how to break the game left, middle and right are equal]](/img/75/05d5765588dfde971167fbc72e2aa8.png)
Find the minimum value in the rotation sort array ii[classical Abstract dichotomy + how to break the game left, middle and right are equal]
随机推荐
snakemake 使用的注意事项
JSON parsing, esp32 easy access to time, temperature and weather
leetcode 1143. Longest common subsequence (medium)
两个页面之间传参方法
UVM中uvm_config_db非直线的设置与获取
uvm中的config机制方法总结(一)
Esp32-solo development tutorial to solve config_ FREERTOS_ UNICORE problem
Tsinghua & Zhiyuan | cogview2: faster and better text image generation model
memcached基础
自定义类加载器对类加密解密
Bs-gx-016 implementation of textbook management system based on SSM
SystemVerilog仿真速率提升
可视化介绍 Matplotlib 和 Plotnine
UVM中uvm_report_enabled的用法
接口隔离原则
你的case真的pass了吗?
Kept to implement redis autofailover (redisha) 12
Ml: a detailed introduction to the division of the top ten roles, backgrounds, responsibilities and outputs of the machine learning engineering team
The most difficult 618 in history, TCL won the first place in both jd.com and tmall.com shares in the TV industry
BS-GX-016基于SSM实现教材管理系统
