通過led0任務函式實現times計數,通過led1任務函式實現tft液晶屏顯示times數值。
已知:start_task建立訊息郵箱;led0向訊息郵箱傳送訊息函式;led1請求訊息郵箱函式;
變數定義: os_event *pmsgbox; //定義事件控制塊
u32 times; //類似於實參;
u32 pstr;//
u8 err;
對應函式:
建立訊息郵箱函式:pmsgbox = osmboxcreate((void *)0);
向訊息郵箱傳送訊息函式:osmboxpost(pmsgbox, (void*)(times++));
請求訊息郵箱函式:pstr = (u32)osmboxpend(pmsgbox, 10, &err);
實驗主要**:
void start_task(void *pdata) //開始任務
void led0_task(void *pdata)//向郵箱傳送資料任務
void led1_task(void *pdata) //顯示部分任務
附:完整**(不含庫函式)
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "includes.h"
#include "lcd.h"
//start
#define start_task_prio 10
#define start_stk_size 64
os_stk start_task_stk[start_stk_size];
void start_task(void *pdata);
//led0
#define led0_task_prio 6
#define led0_stk_size 64
os_stk led0_task_stk[led0_stk_size];
void led0_task(void *pdata);
//led1
#define led1_task_prio 7
#define led1_stk_size 64
os_stk led1_task_stk[led1_stk_size];
void led1_task(void *pdata);
os_event *pmsgbox;
int main(void)
//起始任務
void start_task(void *pdata)
//led0
void led0_task(void *pdata);}
//led1
void led1_task(void *pdata);}
效果:tft顯示 success,tft屏顯示times數值從000到999迴圈,led0和led1燈同時閃爍。
Ucosii訊息郵箱使用
設定任務優先順序 define led task prio 6 define led1 task prio 5 用到的ucosii函式 訊息郵箱建立函式 os event osmboxcreate void msg 請求訊息郵箱函式 void osmboxpend os event pevent,i...
uCOS II郵箱和訊息佇列
1 ucos ii郵箱和訊息佇列 郵箱和訊息佇列是ucos ii中任務間的通訊機制,它可以使乙個任務或者中斷服務子程式向另乙個任務傳送以指標方式定義的變數。因具體的應用有所不同,每個指標指向的資料結構變數也有所不同。兩者都基於事件控制塊os event。與郵箱相比,訊息佇列在os event基礎上加...
uC OS II中的訊息郵箱
2007 12 24 14 25 05 uc os ii中的訊息郵箱 訊息郵箱是uc os ii中的另一種通訊機制,可以使乙個任務或者中斷服務子程式向另乙個任務傳送乙個指標型的變數。通常該指標指向乙個包含了 訊息 的特定資料結構。應用程式可以使用多少個郵箱,其最大數目是由os cfg.h檔案中的配置...