LiteOS信号量/反発量/メッセージキュー/イベントフラググループ
5292 ワード
一LiteOS信号量
1.関連関数インタフェースは以下の通りである.
カウント型信号量の作成
UINT32 LOS_SemCreate(UINT16 usCount, UINT32 *puwSemHandle);
二値信号量の作成
UINT32 LOS_BinarySemCreate(UINT16 usCount, UINT32 *puwSemHandle);
削除信号量
UINT32 LOS_SemDelete(UINT32 uwSemHandle);
要求信号量
UINT32 LOS_SemPend(UINT32 uwSemHandle, UINT32 uwTimeout);
かいほうしんごうりょう
UINT32 LOS_SemPost(UINT32 uwSemHandle)
2.二値信号量による割り込みとタスクの同期
3.信号量を使用して共有リソースに鍵をかける
4.信号量によるリソースカウント
.........
二LiteOS反発量
1.反発量相関関数
反発量の作成
UINT32 LOS_MuxCreate(UINT32 *puwMuxHandle);
反発量の削除
UINT32 LOS_MuxDelete(UINT32 puwMuxHandle);
かいほうはんぱつりょう
UINT32 LOS_MuxPost(UINT32 uwMuxHandle);
申請反発量
UINT32 LOS_MuxPend(UINT32 uwMuxHandle, UINT32 uwTimeout);
2.使用反発量の作成
三LiteOSメッセージキュー
1.メッセージキュー関連インタフェース関数
メッセージキューの作成
UINT32 LOS_QueueCreate(CHAR *pcQueueName,UINT16 usLen,UINT32 *puwQueueID, UINT32 uwFlags,UINT16 usMaxMsgSize);
メッセージキューの削除
UINT32 LOS_QueueDelete(UINT32 uwQueueID);
メッセージ・キューへのデータの書き込み
UINT32 LOS_QueueWrite(UINT32 uwQueueID,VOID *pBufferAddr, UINT32 uwBufferSize, UINT32 uwTimeOut);
メッセージ・キューへのデータの書き込み(コピー付き)
UINT32 LOS_QueueWriteCopy(UINT32 uwQueueID,VOID *pBufferAddr, UINT32 uwBufferSize,UINT32 uwTimeOut);
メッセージ・キュー・ヘッダへのデータの書き込み
UINT32 LOS_QueueWriteHead(UINT32 uwQueueID,VOID *pBufferAddr, UINT32 uwBufferSize, UINT32 uwTimeOut);
メッセージ・キュー・ヘッダへのデータの書き込み(コピー付き)
UINT32 LOS_QueueWriteHeadCopy(UINT32 uwQueueID, VOID * pBufferAddr, UINT32 uwBufferSize, UINT32 uwTimeOut );
メッセージキューからデータを読み込む
UINT32 LOS_QueueRead(UINT32 uwQueueID, VOID *pBufferAddr, UINT32 uwBufferSize, UINT32 uwTimeOut);
メッセージキューからのデータの読み込み(コピー付き)
UINT32 LOS_QueueReadCopy(UINT32 uwQueueID, VOID *pBufferAddr, UINT32 *puwBufferSize, UINT32 uwTimeOut);
メッセージキュー情報の取得
UINT32 LOS_QueueInfoGet(UINT32 uwQueueID, QUEUE_INFO_S *pstQueueInfo);
2メッセージキューを使用したメッセージの送信
四LiteOSイベントフラググループ
1.イベントフラググループ関連関数
イベントフラググループの初期化
UINT32 LOS_EventInit(PEVENT_CB_S pstEventCB);
イベントの送信
UINT32 LOS_EventWrite(PEVENT_CB_S pstEventCB, UINT32 uwEvents);
イベントのクリア
UINT32 LOS_EventClear(PEVENT_CB_S pstEventCB, UINT32 uwEvents);
イベントの読み込み
UINT32 LOS_EventRead(PEVENT_CB_S pstEventCB, UINT32 uwEventMask, UINT32 uwMode, UINT32 uwTimeOut);
ユーザーが入力したイベント値、イベントマスク、および検証モードに基づいて、ユーザーが入力したイベントが予想に合致するかどうかを返します.
UINT32 LOS_EventPoll(UINT32 *uwEventID, UINT32 uwEventMask, UINT32 uwMode);
イベントの破棄
UINT32 LOS_EventDestory(PEVENT_CB_S pstEventCB);
2.イベントフラググループの使用
1.関連関数インタフェースは以下の通りである.
カウント型信号量の作成
UINT32 LOS_SemCreate(UINT16 usCount, UINT32 *puwSemHandle);
二値信号量の作成
UINT32 LOS_BinarySemCreate(UINT16 usCount, UINT32 *puwSemHandle);
削除信号量
UINT32 LOS_SemDelete(UINT32 uwSemHandle);
要求信号量
UINT32 LOS_SemPend(UINT32 uwSemHandle, UINT32 uwTimeout);
かいほうしんごうりょう
UINT32 LOS_SemPost(UINT32 uwSemHandle)
2.二値信号量による割り込みとタスクの同期
UINT32 BinarySemId;/* */
LOS_BinarySemCreate(1,&BinarySemId);/* */
void USART1_IRQHandler(void)
{
LOS_SemPost( BinarySemId );/* */
}
void thread0(void* arg)
{
while(1)
{
LOS_SemPend( BinarySemId, LOS_WAIT_FOREVER ); // xSemaphore,
}
}
3.信号量を使用して共有リソースに鍵をかける
UINT32 BinarySemId;/* */
LOS_BinarySemCreate(1,&BinarySemId);/* */
void usart1_send_buf(uint8_t *buf, uint32_t len)
{
LOS_SemPend( BinarySemId, LOS_WAIT_FOREVER );// , 1
1
LOS_SemPost( BinarySemId );// , 1 , */
}
4.信号量によるリソースカウント
.........
二LiteOS反発量
1.反発量相関関数
反発量の作成
UINT32 LOS_MuxCreate(UINT32 *puwMuxHandle);
反発量の削除
UINT32 LOS_MuxDelete(UINT32 puwMuxHandle);
かいほうはんぱつりょう
UINT32 LOS_MuxPost(UINT32 uwMuxHandle);
申請反発量
UINT32 LOS_MuxPend(UINT32 uwMuxHandle, UINT32 uwTimeout);
2.使用反発量の作成
UINT32 MutexId;/* */
LOS_MuxCreate(&MutexId);/* */
LOS_MuxPost( MutexId ); //
LOS_MuxPend( MutexId, LOS_WAIT_FOREVER );// ,
三LiteOSメッセージキュー
1.メッセージキュー関連インタフェース関数
メッセージキューの作成
UINT32 LOS_QueueCreate(CHAR *pcQueueName,UINT16 usLen,UINT32 *puwQueueID, UINT32 uwFlags,UINT16 usMaxMsgSize);
メッセージキューの削除
UINT32 LOS_QueueDelete(UINT32 uwQueueID);
メッセージ・キューへのデータの書き込み
UINT32 LOS_QueueWrite(UINT32 uwQueueID,VOID *pBufferAddr, UINT32 uwBufferSize, UINT32 uwTimeOut);
メッセージ・キューへのデータの書き込み(コピー付き)
UINT32 LOS_QueueWriteCopy(UINT32 uwQueueID,VOID *pBufferAddr, UINT32 uwBufferSize,UINT32 uwTimeOut);
メッセージ・キュー・ヘッダへのデータの書き込み
UINT32 LOS_QueueWriteHead(UINT32 uwQueueID,VOID *pBufferAddr, UINT32 uwBufferSize, UINT32 uwTimeOut);
メッセージ・キュー・ヘッダへのデータの書き込み(コピー付き)
UINT32 LOS_QueueWriteHeadCopy(UINT32 uwQueueID, VOID * pBufferAddr, UINT32 uwBufferSize, UINT32 uwTimeOut );
メッセージキューからデータを読み込む
UINT32 LOS_QueueRead(UINT32 uwQueueID, VOID *pBufferAddr, UINT32 uwBufferSize, UINT32 uwTimeOut);
メッセージキューからのデータの読み込み(コピー付き)
UINT32 LOS_QueueReadCopy(UINT32 uwQueueID, VOID *pBufferAddr, UINT32 *puwBufferSize, UINT32 uwTimeOut);
メッセージキュー情報の取得
UINT32 LOS_QueueInfoGet(UINT32 uwQueueID, QUEUE_INFO_S *pstQueueInfo);
2メッセージキューを使用したメッセージの送信
UINT32 QueueId;/* */
/* */
LOS_QueueCreate("Test_Queue", /* */
16, /* */
&QueueId, /* ID( ) */
0, /* , */
4); /* , */
typedef struct
{
uint8_t id;
char msg[20];
}message_t;
message_t send_msg;//
send_msg.id = 1;
strcpy(&send_msg.msg[0], "Queue test");
LOS_QueueWrite(QueueId, /* ( ) ID( ) */
&send_msg, /* */
sizeof(message_t), /* */
0);// 0
message_t *rev_msg;//
LOS_QueueRead(QueueId, /* ( ) ID( ) */
&rev_msg, /* ( ) */
sizeof(message_t), /* ( ) */
LOS_WAIT_FOREVER); /* : */
四LiteOSイベントフラググループ
1.イベントフラググループ関連関数
イベントフラググループの初期化
UINT32 LOS_EventInit(PEVENT_CB_S pstEventCB);
イベントの送信
UINT32 LOS_EventWrite(PEVENT_CB_S pstEventCB, UINT32 uwEvents);
イベントのクリア
UINT32 LOS_EventClear(PEVENT_CB_S pstEventCB, UINT32 uwEvents);
イベントの読み込み
UINT32 LOS_EventRead(PEVENT_CB_S pstEventCB, UINT32 uwEventMask, UINT32 uwMode, UINT32 uwTimeOut);
ユーザーが入力したイベント値、イベントマスク、および検証モードに基づいて、ユーザーが入力したイベントが予想に合致するかどうかを返します.
UINT32 LOS_EventPoll(UINT32 *uwEventID, UINT32 uwEventMask, UINT32 uwMode);
イベントの破棄
UINT32 LOS_EventDestory(PEVENT_CB_S pstEventCB);
2.イベントフラググループの使用
EVENT_CB_S EventGroup_CB;/* */
LOS_EventInit(&EventGroup_CB);/* */
LOS_EventWrite(&EventGroup_CB,0x01);/* 1 */
/* */
LOS_EventRead(&EventGroup_CB, //
0x01, //
LOS_WAITMODE_AND, //
LOS_WAIT_FOREVER );//
LOS_EventClear(&EventGroup_CB,~0x01); //