原始碼如下
#include "SystemConfig.h"
////////////////////////UCOSII任務設定///////////////////////////////////
//START 任務
//設定任務優先級
#define START_TASK_PRIO 10 //開始任務的優先級設定為最低
//設定任務堆疊大小
#define START_STK_SIZE 64
//任務堆疊
OS_STK START_TASK_STK[START_STK_SIZE];
//任務函式
void start_task(void *pdata);
//App1任務
//設定任務優先級
#define App1_TASK_PRIO 7
//設定任務堆疊大小
#define App1_STK_SIZE 64
//任務堆疊
OS_STK App1_Task_Stk[App1_STK_SIZE];
//任務函式
void App1Task(void *pdata);
int main(void)
{
OSInit(); /* 系統初始化*/
OSTaskCreate(start_task, (void *)0, &START_TASK_STK[START_STK_SIZE - 1], START_TASK_PRIO);
OSStart(); /* 開始任務調度*/
return 0;
}
void start_task(void *pdata)
{
OS_ENTER_CRITICAL(); //進入臨界區(無法被中斷打斷)
OSTaskCreate(App1Task, (void *)0, (OS_STK*)&App1_Task_Stk[App1Task_StkSize - 1], App1_TASK_PRIO);
//OSTaskCreate(App2Task, (void *)0, (OS_STK*)&App2_TASK_STK[App2Task_StkSize - 1], App2_TASK_PRIO);
OSTaskSuspend(START_TASK_PRIO); //掛起起始任務.
OS_EXIT_CRITICAL(); //退出臨界區(可以被中斷打斷)
}
/* App1Task */
void App1Task(void *p_arg)
{
p_arg = p_arg;
unsigned int sysstime = 0;
unsigned int x, y;
while (1)
{
for (x = 0; x < 10000; x++)
{
for (y = 0; y < 100000; y++)
{
p_arg = p_arg;
}
}
sysstime = OSTimeGet(); //獲取系統的時間
printf("系統時間為:%d \r\n", sysstime);//輸出時間值
printf("任務調度次數為:%d \r\n", OSCtxSwCtr);//輸出時間值
printf("CPU占用率為:%d%% \r\n", OSCPUUsage);//輸出時間值
OSTimeDlyHMSM(0, 0, 1, 0); /* 延時1秒 任務調度*/
}
}

我確定已經開啟了統計任務
#define OS_TASK_STAT_EN 1u /* Enable (1) or Disable(0) the statistics task */
UCOS版本2.91
請教各位高手這是為什么?
uj5u.com熱心網友回復:
回圈被優化掉了吧轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/83276.html
標籤:單片機/工控
上一篇:哪個大神幫忙畫畫原理圖(不使用單片機和c語言)(學過模擬電子技術)
下一篇:HDQ單線通信協議英文全稱
