FreeRTOS 任务间同步和通信方法
生活随笔
收集整理的這篇文章主要介紹了
FreeRTOS 任务间同步和通信方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
以下在CMSIS V2代碼下實現,不區分是否中斷安全。
1、信號量?semaphores
/* Definitions for adcFinishedBinSem */ osSemaphoreId_t adcFinishedBinSemHandle; const osSemaphoreAttr_t adcFinishedBinSem_attributes = {.name = "adcFinishedBinSem" };/* Create the semaphores(s) */ /* creation of adcFinishedBinSem */ adcFinishedBinSemHandle = osSemaphoreNew(1, 1, &adcFinishedBinSem_attributes);/* How to use */ osSemaphoreRelease(adcFinishedBinSemHandle); osSemaphoreAcquire(adcFinishedBinSemHandle,osWaitForever);2、事件標志 EventFlag
/* Definitions for pcADCCmdEvent */ osEventFlagsId_t pcADCCmdEventHandle; const osEventFlagsAttr_t pcADCCmdEvent_attributes = {.name = "pcADCCmdEvent" };/* creation of pcADCCmdEvent */ pcADCCmdEventHandle = osEventFlagsNew(&pcADCCmdEvent_attributes);/* how to use: osFlagsNoClear,osFlagsWaitAny,osFlagsWaitAll*/ #define ADC_CTRL ( 1 << 0 )osEventFlagsSet(pcADCReadEventHandle, ADC_CTRL);osEventFlagsClear(pcADCReadEventHandle, ADC_CTRL);pcADCReadEvenFlag = osEventFlagsWait(pcADCReadEventHandle, ADC_CTRL, osFlagsNoClear, osWaitForever); if((pcADCReadEvenFlag&0x01) == 0x01){}3、互斥 Mutex
/* Definitions for algorithmResutMutex */ osMutexId_t algorithmResutMutexHandle; const osMutexAttr_t algorithmResutMutex_attributes = {.name = "algorithmResutMutex" };/* creation of algorithmResutMutex */ algorithmResutMutexHandle = osMutexNew(&algorithmResutMutex_attributes);/* how to use */ osMutexWait(algorithmResutMutexHandle,osWaitForever); osMutexRelease(algorithmResutMutexHandle);3、消息隊列 Queue
/* Definitions for usartRxMsgQueue */ osMessageQueueId_t usartRxMsgQueueHandle; const osMessageQueueAttr_t usartRxMsgQueue_attributes = {.name = "usartRxMsgQueue" };/* Create the queue(s) */ /* creation of usartRxMsgQueue */ usartRxMsgQueueHandle = osMessageQueueNew(2, sizeof(USART_RECEIVETYPE), &usartRxMsgQueue_attributes);/* how to use */ osMessageQueuePut(usartRxMsgQueueHandle,&Uart1Rx,1,0); osMessageQueueGet(usartRxMsgQueueHandle,(void*)&pUARTRx,NULL,osWaitForever);?
總結
以上是生活随笔為你收集整理的FreeRTOS 任务间同步和通信方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Tiny4412】Tiny4412开发
- 下一篇: java学习(8):巩固练习