FreeRTOS計數型值訊號量

2021-10-04 22:43:07 字數 2255 閱讀 6735

#include

"freertos.h"

#include

"task.h"

#include

"queue.h"

#include

"semphr.h"

#include

"os_start.h"

#define start_task_prio 1

#define start_stk_size 128

taskhandle_t starttask_handler;

void

start_task

(void

*pvparameters)

;#define keyscan_task_prio 2

#define keyscan_stk_size 50

taskhandle_t keyscantask_handler;

void

keyscan_task

(void

*pvparameters)

;#define keyprocess_task_prio 3

#define keyprocess_stk_size 50

taskhandle_t keyprocesstask_handler;

void

keyprocess_task

(void

*pvparameters)

;#define keymsg_q_length 1

//佇列長度

#define rxmsg_q_length 4

#define rx_buf_num 30

uint8_t rx_buf[rx_buf_num]

;uint8_t rx_hal_buff_temp[2]

;//hal函式接收臨時快取

queuehandle_t key_queue;

//按鍵佇列

queuehandle_t uartrx_queue;

//訊息佇列

semaphorehandle_t countersemaphore;

//計數型訊號量控制代碼

void

os_start

(void

)//開始任務任務函式

void

start_task

(void

*pvparameters)

//建立led1任務

xtaskcreate

((taskfunction_t )keyscan_task,

(const

char*)

"led1_task"

,(uint16_t )keyscan_stk_size,

(void*)

null

,(ubasetype_t )keyscan_task_prio,

(taskhandle_t*

)&keyscantask_handler)

;//建立key任務

xtaskcreate

((taskfunction_t )keyprocess_task,

(const

char*)

"keyprocess_task"

,(uint16_t )keyprocess_stk_size,

(void*)

null

,(ubasetype_t )keyprocess_task_prio,

(taskhandle_t*

)&keyprocesstask_handler)

;vtaskdelete

(starttask_handler)

;//刪除開始任務

taskexit_critical()

;//退出臨界區

}//keyscan任務函式

void

keyscan_task

(void

*pvparameters)

else

} keyvalue =0;

}}vtaskdelay(10

);}}

//key任務函式

void

keyprocess_task

(void

*pvparameters)

}else

vtaskdelay

(1000);

}}

FreeRTOS 計數訊號量

計數訊號量有兩種典型的用法 1.事件計數 每次事件發生時,中斷isr會釋放 give 訊號量,訊號量的計數值加1 事件處理任務每次處理乙個事件會獲取 take 一次訊號量,計數值減1.訊號量的值就是已發生事件數目與已處理事件數目之間的差值。用於事件的計數的計數訊號量,在被建立時其計數值被初始化為0。...

計數型訊號量

目錄 計數型訊號量 1.create 2.delete 3.wait 4.post 5.clear 6.status 7.getname 計數型訊號量通常用於多個執行緒共享使用某資源。下圖 乙個 sylixos 計數型訊號量可以呼叫 lw semaphorec create 函式進行建立。inclu...

FreeRTOS 互斥訊號量

0.前言 在嵌入式作業系統中互斥型訊號量是任務間資源保護的重要手段。下面結合乙個具體例子說明freertos中的互斥型訊號量如何使用。1.基本說明 互斥型訊號量的使用方法如圖1所示。在多數情況下,互斥型訊號量和二值型訊號非常相似,但是從功能上二值型訊號量用於同步,而互斥型訊號量用於資源保護。互斥型訊...