当前位置: 首页 > news >正文

轻松筹网站可以做吗网站集群建设和网站集约化

轻松筹网站可以做吗,网站集群建设和网站集约化,中专网站建设课程,seo沈阳CMSIS 2.0接口使用事件标志是实时操作系统#xff08;RTOS#xff09;中一种重要的同步机制。事件标志是一种轻量级的同步原语#xff0c;用于任务间或中断服务程序#xff08;ISR#xff09;之间的通信。 每个事件标志对象可以包含多个标志位#xff0c;通常最多为31个RTOS中一种重要的同步机制。事件标志是一种轻量级的同步原语用于任务间或中断服务程序ISR之间的通信。 每个事件标志对象可以包含多个标志位通常最多为31个因为第31位通常保留。 注意事项 在使用事件标志时需要注意避免竞态条件确保在多任务环境中正确同步。 osEventFlagsWait函数支持超时机制可以根据需要设置合适的超时时间。 可以在中断服务程序ISR中安全地调用与事件标志相关的函数但需要注意中断嵌套和优先级问题。 通过CMSIS 2.0接口的事件标志功能开发人员可以更加灵活地实现任务间的同步和通信提高系统的效率和稳定性。 EventFlags API分析 osEventFlagsId_t osEventFlagsNew(const osEventFlagsAttr_t *attr) 描述 osEventFlagsNew函数创建了一个新的事件标志对象用于跨线程发送事件并返回事件标志对象标识符的指针或者在出现错误时返回NULL。可以在RTOS启动(调用 osKernelStart)之前安全地调用该函数但不能在内核初始化 (调用 osKernelInitialize)之前调用该函数。 注意 :不能在中断服务调用该函数。 参数 参数名 描述 attr 事件标志属性;空:默认值. uint32_t osEventFlagsSet(osEventFlagsId_t ef_id,uint32_t flags) 描述 osEventFlagsSet函数在一个由参数ef_id指定的事件标记对象中设置由参数flags指定的事件标记。 注意 :不能在中断服务调用该函数。 参数 参数名 描述 ef_id 事件标志由osEventFlagsNew获得的ID 。 flags 指定设置的标志。 uint32_t osEventFlagsWait(osEventFlagsId_t ef_id,uint32_t flags,uint32_t options,uint32_t timeout) 描述 osEventFlagsWait函数挂起当前运行线程直到设置了由参数ef_id指定的事件对象中的任何或所有由参数flags指定的事件标志。当这些事件标志被设置函数立即返回。否则线程将被置于阻塞状态。 注意 :如果参数timeout设置为0可以从中断服务例程调用。 参数 参数名 描述 ef_id 事件标志由osEventFlagsNew获得的ID。 flags 指定要等待的标志。 options 指定标记选项。 timeout 超时时间0表示不超时。 代码编写 修改D:\DevEcoProjects\test\src\vendor\rtplay\rt_hi3861\demo\BUILD.gn文件 # Copyright (c) 2023 Beijing HuaQing YuanJian Education Technology Co., Ltd # Licensed under the Apache License, Version 2.0 (the License); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an AS IS BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import(//build/lite/config/component/lite_component.gni)lite_component(demo) {features [#base_00_helloworld:base_helloworld_example,#base_01_led:base_led_example,#base_02_loopkey:base_loopkey_example,#base_03_irqkey:base_irqkey_example,#base_04_adc:base_adc_example,#base_05_pwm:base_pwm_example,#base_06_ssd1306:base_ssd1306_example,#kernel_01_task:kernel_task_example,#kernel_02_timer:kernel_timer_example,kernel_03_event:kernel_event_example,] } 创建D:\DevEcoProjects\test\src\vendor\rtplay\rt_hi3861\demo\kernel_03_event文件夹 文件夹中创建D:\DevEcoProjects\test\src\vendor\rtplay\rt_hi3861\demo\kernel_03_event\kernel_event_example.c文件D:\DevEcoProjects\test\src\vendor\rtplay\rt_hi3861\demo\kernel_03_event\BUILD.gn文件 # Copyright (c) 2023 Beijing HuaQing YuanJian Education Technology Co., Ltd # Licensed under the Apache License, Version 2.0 (the License); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an AS IS BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. static_library(kernel_event_example) {sources [kernel_event_example.c,]include_dirs [//utils/native/lite/include,//kernel/liteos_m/kal/cmsis,] } /** Copyright (c) 2023 Beijing HuaQing YuanJian Education Technology Co., Ltd* Licensed under the Apache License, Version 2.0 (the License);* you may not use this file except in compliance with the License.* You may obtain a copy of the License at** http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an AS IS BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/#include stdio.h #include unistd.h#include ohos_init.h #include cmsis_os2.hosThreadId_t Task1_ID; // 任务1 ID osThreadId_t Task2_ID; // 任务2 ID osEventFlagsId_t event_ID; // 事件 ID uint32_t event1_Flags 0x00000001U; // 事件掩码 每一位代表一个事件 uint32_t event2_Flags 0x00000002U; // 事件掩码 每一位代表一个事件 uint32_t event3_Flags 0x00000004U; // 事件掩码 每一位代表一个事件 #define TASK_STACK_SIZE 1024 #define TASK_DELAY_TIME 1 // s/*** 注意 任务延时不能使用osDelay这个函数延时有问题*//*** description: 任务1 用于发送事件* param {*}* return {*}*/ void Task1(void) {while (1) {printf(enter Task 1.......\n);osEventFlagsSet(event_ID, event1_Flags); // 设置事件标记printf(send eventFlag1.......\n);sleep(TASK_DELAY_TIME); // 1秒osEventFlagsSet(event_ID, event2_Flags); // 设置事件标记printf(send eventFlag2.......\n);sleep(TASK_DELAY_TIME); // 1秒osEventFlagsSet(event_ID, event3_Flags); // 设置事件标记printf(send eventFlag3.......\n);sleep(TASK_DELAY_TIME); // 1秒} } /*** description: 任务2 用于接受事件* param {*}* return {*}*/ void Task2(void) {uint32_t flags 0;while (1) {// 永远等待事件标记触发当接收到 event1_Flags 和 event2_Flags 和 event3_Flags时才会执行printf函数// osFlagsWaitAll 全部事件标志位接收到 osFlagsWaitAny: 任意一个事件标志位接收到// 当只有一个事件的时候事件的类型选择哪个都可以flags osEventFlagsWait(event_ID, event1_Flags | event2_Flags | event3_Flags, osFlagsWaitAll, osWaitForever);printf(receive event is OK\n); // 事件已经标记} } /*** description: 初始化并创建任务* param {*}* return {*}*/ static void kernel_event_example(void) {printf(Enter kernel_event_example()!\n);event_ID osEventFlagsNew(NULL); // 创建事件if (event_ID ! NULL) {printf(ID %d, Create event_ID is OK!\n, event_ID);}osThreadAttr_t taskOptions;taskOptions.name Task1; // 任务的名字taskOptions.attr_bits 0; // 属性位taskOptions.cb_mem NULL; // 堆空间地址taskOptions.cb_size 0; // 堆空间大小taskOptions.stack_mem NULL; // 栈空间地址taskOptions.stack_size TASK_STACK_SIZE; // 栈空间大小 单位:字节taskOptions.priority osPriorityNormal; // 任务的优先级Task1_ID osThreadNew((osThreadFunc_t)Task1, NULL, taskOptions); // 创建任务1if (Task1_ID ! NULL) {printf(ID %d, Create Task1_ID is OK!\n, Task1_ID);}taskOptions.name Task2; // 任务的名字Task2_ID osThreadNew((osThreadFunc_t)Task2, NULL, taskOptions); // 创建任务2if (Task2_ID ! NULL) {printf(ID %d, Create Task2_ID is OK!\n, Task2_ID);} } SYS_RUN(kernel_event_example);使用build编译成功后使用upload进行烧录。
http://www.hkea.cn/news/14511548/

相关文章:

  • 网站设计 方案做铝材的网站
  • 企业网站建设联系wordpress图片弹窗
  • 大连的网站建设字幕组 主页 wordpress
  • 淘宝做推广网站网站的空间和域名备案
  • 网站开发项目帮朋友做网站不给钱
  • 怎样做营销型网站推广ppt保定设计网站建设
  • 东莞市做网站的公司利用赞赏码做网站收款
  • 杭州小蜜蜂网站建设东莞浩智网站建设开发
  • 所得税汇算清缴在哪个网站做Wordpress向导
  • 网站开发 文件架构图公司文化墙设计方案
  • 单位申请免费网站附近旅游团地址电话怎么搜索
  • 网站建设还有需求么一般网站如何做防采集的
  • 淘客网站建设带app平台运营推广方案
  • 上海优化网站seo公司搜网站旧域名
  • 医疗产品网站建设网站建设方案内容
  • 网站备案多少岁郑州防疫办
  • 做的最成功的网站营销型网站设计网站
  • 郑州大型网站建设价格技术支持网站
  • 2018企业网站转化率魔力百科网站做料理视频
  • 免费做问卷的网站推广软件赚钱
  • windows 2003 iis 多网站做网站建设需要做哪些工作室
  • 网站模板破解下载北京网络优化推广公司
  • 义乌网站制作多少钱个旧做网站哪家公司好
  • html个人网站源码如何网站数据备份
  • 想网上卖家具怎么做网站石家庄专业制作网站
  • 福建工程建设中心网站广州市绿色建筑信息平台
  • 信用网站建设原则网站维护正常要多久
  • 加强文化网站建设飞数石家庄网站建设
  • 网页版微信读书算时长吗seo搜索引擎优化原理
  • 沈阳正规制作网站公司哪家好浙江义乌外发加工网