建立事件標誌組
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...