ucos iii 事件標誌組

2021-09-23 08:11:07 字數 2026 閱讀 2616

建立事件標誌組

osflagcreate()  

os_cfg_flag_en

os_flag_grp enginestatus;

os_err err;

osflagcreate(&enginestatus,

「engine status」,(os_flags)0,&err);

刪除事件標誌組

osflagdel()  

os_cfg_flag_en

os_cfg_flag_del_en

os_flag_grp flags;

os_err err;

os_obj_qty qty;

qty = osflagdel(&flags,

os_opt_del_always,&err);

等待事件標誌組

osflagpend()

os_cfg_flag_en

os_flag_grp enginestatus;

os_err err;

os_flags value;

cpu_ts ts;

osflagpend(&enginestatus,0x01,

10,os_opt_pend_blocking,&ts,&err);

取消等待事件標誌組

osflagpendabort() 

os_cfg_flag_en

os_cfg_flag_pend_abort_en

os_flag_grp enginestatus;

os_err err;

os_obj_qty nbr_tasks;

nbr_tasks = osflagpendabort(&enginestatus,

os_opt_pend_abort_all,&err);

獲取使任務就緒的事件標誌

osflagpendgetflagsrdy() 

os_cfg_flag_en

os_err err;

os_flags flags_rdy;

flags_rdy = osflagpendgetflagsrdy(&err);

向事件標誌組發布標誌

osflagpost()

os_cfg_flag_en

os_flag_grp enginestatusflags;

os_err err;

os_flags flags;

flags = osflagpost(&enginestatusflags,

engine_start,os_opt_post_flag_set,

&err);

乙個任務可能需要和多個事件同步,這個時候就需要使用事件標誌組

下面是使用事件標誌組的例子:

os_flag_grp flag_grp; //宣告事件標誌組

#define bit0_event (0x01 << 0)//設定事件掩碼的位 0

#define bit1_event (0x01 << 1)//設定事件掩碼的位 1

osflagcreate ((os_flag_grp *)&flag_grp, //指向事件標誌組的指標

(cpu_char *)"flag for test", //事件標誌組的名字

(os_flags )0, //事件標誌組的初始值

(os_err *)&err); //返回錯誤型別

void flag_grp0_task(void *p_arg)

}void flag_grp1_task(void *p_arg)

ostimedly (1000, os_opt_time_dly, &err );//延時}}

FreeRTOS 事件標誌組

訊號量同步只能與單個的事件或任務進行同步。事件標誌組與多個事件或任務進行同步 事件位用來表明某個事件是否發生,事件組是一組事件位 動態方法建立事件標誌組 eventgrouphandle t xeventgroupcreate void 設定事件位 eventbits t xeventgroupse...

FreeRTOS 事件標誌組

訊號量同步只能與單個的事件或任務進行同步。事件標誌組與多個事件或任務進行同步 事件位用來表明某個事件是否發生,事件組是一組事件位 動態方法建立事件標誌組 eventgrouphandle t xeventgroupcreate void 設定事件位 eventbits t xeventgroupse...

freeRTOS 事件標誌組

任務需要與多個事件或任務進行同步時,需要用到事件標誌組。乙個事件組就是一組的事件位,事件組中的事件位通過位編號來訪問。事件標誌組的資料型別為 eventgrouphandle t。事件標誌組中的所有事件位都儲存在乙個無符號的 eventbits t 型別的變數中。typedef ticktype t...