📄 test.c
字号:
TASK_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskNameSet(TASK_8_PRIO, "Discrete I/O", &err);
OSTaskCreateExt(AppTask9,
(void *)0,
(OS_STK *)&AppTask9Stk[TASK_STK_SIZE-1],
TASK_9_PRIO,
TASK_9_PRIO,
(OS_STK *)&AppTask9Stk[0],
TASK_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskNameSet(TASK_9_PRIO, "User #1", &err);
OSTaskCreateExt(AppTaskA,
(void *)0,
(OS_STK *)&AppTaskAStk[TASK_STK_SIZE-1],
TASK_A_PRIO,
TASK_A_PRIO,
(OS_STK *)&AppTaskAStk[0],
TASK_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskNameSet(TASK_A_PRIO, "Modbus", &err);
OSTaskCreateExt(AppTaskB,
(void *)0,
(OS_STK *)&AppTaskBStk[TASK_STK_SIZE-1],
TASK_B_PRIO,
TASK_B_PRIO,
(OS_STK *)&AppTaskBStk[0],
TASK_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskNameSet(TASK_B_PRIO, "GPS", &err);
OSTaskCreateExt(AppTaskC,
(void *)0,
(OS_STK *)&AppTaskCStk[TASK_STK_SIZE-1],
TASK_C_PRIO,
TASK_C_PRIO,
(OS_STK *)&AppTaskCStk[0],
TASK_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskNameSet(TASK_C_PRIO, "Task C", &err);
OSTaskCreateExt(AppTaskD,
(void *)0,
(OS_STK *)&AppTaskDStk[TASK_STK_SIZE-1],
TASK_D_PRIO,
TASK_D_PRIO,
(OS_STK *)&AppTaskDStk[0],
TASK_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskNameSet(TASK_D_PRIO, "Task D", &err);
OSTaskCreateExt(AppTaskE,
(void *)0,
(OS_STK *)&AppTaskEStk[TASK_STK_SIZE-1],
TASK_E_PRIO,
TASK_E_PRIO,
(OS_STK *)&AppTaskEStk[0],
TASK_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskNameSet(TASK_E_PRIO, "Task E", &err);
OSTaskCreateExt(AppTaskF,
(void *)0,
(OS_STK *)&AppTaskFStk[TASK_STK_SIZE-1],
TASK_F_PRIO,
TASK_F_PRIO,
(OS_STK *)&AppTaskFStk[0],
TASK_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskNameSet(TASK_F_PRIO, "Task F", &err);
}
/*
*********************************************************************************************************
* CREATE EVENTS
*
* Description : This function creates semaphores, mailboxes, queues, mutexes and event flags.
* Arguments : none
* Notes : none
*********************************************************************************************************
*/
static void AppEventCreate (void)
{
INT8U err;
#if OS_SEM_EN > 0
EventSem1 = OSSemCreate(1);
OSEventNameSet(EventSem1, "Sem. #1", &err);
EventSem2 = OSSemCreate(1);
OSEventNameSet(EventSem2, "Sem. #2", &err);
#endif
#if OS_MBOX_EN > 0
EventMbox1 = OSMboxCreate((void *)1);
OSEventNameSet(EventMbox1, "Mailbox #1", &err);
EventMbox2 = OSMboxCreate((void *)1);
OSEventNameSet(EventMbox2, "Mailbox #2", &err);
#endif
#if OS_Q_EN > 0
EventQ1 = OSQCreate(&EventQTbl1[0], EVENT_Q_1_SIZE);
OSEventNameSet(EventQ1, "Queue #1", &err);
EventQ2 = OSQCreate(&EventQTbl2[0], EVENT_Q_2_SIZE);
OSEventNameSet(EventQ2, "Queue #2", &err);
#endif
#if OS_MUTEX_EN > 0
EventMutex1 = OSMutexCreate(MUTEX_PIP_1, &err);
OSEventNameSet(EventMutex1, "Mutex #1", &err);
EventMutex2 = OSMutexCreate(MUTEX_PIP_2, &err);
OSEventNameSet(EventMutex2, "Mutex #2", &err);
#endif
#if OS_FLAG_EN > 0
FlagGrp1 = OSFlagCreate(0x00FF, &err);
OSFlagNameSet(FlagGrp1, "Flag #1", &err);
FlagGrp2 = OSFlagCreate(0xFF00, &err);
OSFlagNameSet(FlagGrp2, "Flag #2", &err);
#endif
#if OS_MEM_EN > 0
MemPart1 = OSMemCreate(&MemPart1Tbl[0], MEM_BLKS_1, MEM_BLK_SIZE_1, &err);
OSMemNameSet(MemPart1, "Partition #1", &err);
MemPart2 = OSMemCreate(&MemPart2Tbl[0], MEM_BLKS_2, MEM_BLK_SIZE_2, &err);
OSMemNameSet(MemPart2, "Partition #2", &err);
#endif
}
/*$PAGE*/
/*
*********************************************************************************************************
* TASK #1
*********************************************************************************************************
*/
static void AppTask1 (void *pdata)
{
INT8U err;
#if OS_MEM_EN > 0
INT8U *pblk1;
INT8U *pblk2;
INT8U *pblk3;
INT8U *pblk4;
INT8U *pblk5;
#endif
pdata = pdata;
while (TRUE) {
AppTask1Ctr++;
#if OS_SEM_EN > 0
OSSemPend(EventSem2, 0, &err);
OSTimeDly(100);
OSSemPost(EventSem2);
#endif
#if OS_MEM_EN > 0
pblk1 = (INT8U *)OSMemGet(MemPart1, &err);
OSTimeDly(OS_TICKS_PER_SEC);
pblk2 = (INT8U *)OSMemGet(MemPart1, &err);
OSTimeDly(OS_TICKS_PER_SEC);
pblk3 = (INT8U *)OSMemGet(MemPart1, &err);
OSTimeDly(OS_TICKS_PER_SEC);
pblk4 = (INT8U *)OSMemGet(MemPart1, &err);
OSTimeDly(OS_TICKS_PER_SEC);
pblk5 = (INT8U *)OSMemGet(MemPart1, &err);
OSTimeDly(OS_TICKS_PER_SEC);
OSMemPut(MemPart1, (void *)pblk1);
OSMemPut(MemPart1, (void *)pblk2);
OSMemPut(MemPart1, (void *)pblk3);
OSMemPut(MemPart1, (void *)pblk4);
OSMemPut(MemPart1, (void *)pblk5);
#endif
OSTimeDly(1);
}
}
/*$PAGE*/
/*
*********************************************************************************************************
* TASK #2
*********************************************************************************************************
*/
static void AppTask2 (void *pdata)
{
INT8U err;
#if OS_MEM_EN > 0
INT8U *pblk1;
INT8U *pblk2;
INT8U *pblk3;
INT8U *pblk4;
INT8U *pblk5;
#endif
pdata = pdata;
while (TRUE) {
AppTask2Ctr++;
#if OS_SEM_EN > 0
OSSemPend(EventSem2, 0, &err);
OSTimeDly(100);
OSSemPost(EventSem2);
#endif
#if OS_MEM_EN > 0
pblk1 = (INT8U *)OSMemGet(MemPart2, &err);
OSTimeDly(OS_TICKS_PER_SEC);
pblk2 = (INT8U *)OSMemGet(MemPart2, &err);
OSTimeDly(OS_TICKS_PER_SEC);
pblk3 = (INT8U *)OSMemGet(MemPart2, &err);
OSTimeDly(OS_TICKS_PER_SEC);
pblk4 = (INT8U *)OSMemGet(MemPart2, &err);
OSTimeDly(OS_TICKS_PER_SEC);
pblk5 = (INT8U *)OSMemGet(MemPart2, &err);
OSTimeDly(OS_TICKS_PER_SEC);
OSMemPut(MemPart2, (void *)pblk1);
OSMemPut(MemPart2, (void *)pblk2);
OSMemPut(MemPart2, (void *)pblk3);
OSMemPut(MemPart2, (void *)pblk4);
OSMemPut(MemPart2, (void *)pblk5);
#endif
OSTimeDly(1);
}
}
/*$PAGE*/
/*
*********************************************************************************************************
* TASK #3
*********************************************************************************************************
*/
static void AppTask3 (void *pdata)
{
INT8U err;
pdata = pdata;
while (TRUE) {
AppTask3Ctr++;
#if OS_SEM_EN > 0
OSSemPend(EventSem2, 0, &err);
OSTimeDly(100);
OSSemPost(EventSem2);
#endif
OSTimeDly(1);
}
}
/*$PAGE*/
/*
*********************************************************************************************************
* TASK #4
*********************************************************************************************************
*/
static void AppTask4 (void *pdata)
{
INT8U err;
pdata = pdata;
while (TRUE) {
AppTask4Ctr++;
#if OS_Q_EN > 0
OSQPost(EventQ1, (void *)"Msg #1 to Q1");
OSTimeDly(10);
OSQPost(EventQ2, (void *)"Msg #2 to Q2");
#endif
OSTimeDly(20);
}
}
/*$PAGE*/
/*
*********************************************************************************************************
* TASK #5
*********************************************************************************************************
*/
static void AppTask5 (void *pdata)
{
INT8U err;
pdata = pdata;
while (TRUE) {
AppTask5Ctr++;
#if OS_Q_EN > 0
OSQPost(EventQ1, (void *)"Msg #3 to Q1");
OSTimeDly(20);
OSQPost(EventQ2, (void *)"Msg #4 to Q2");
#endif
OSTimeDly(40);
}
}
/*$PAGE*/
/*
*********************************************************************************************************
* TASK #6
*********************************************************************************************************
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -