今天看任哲的《嵌入式操作系统》,看到统计任务这个模块时想要自己编写程序验证一下。由于书上没有例程,找了一下网上的正点原子例程试了下,在自己仿照写程序过程中发现红字体段中这两个函数调换之后返回的OSCPUUsage一直为0。
void start_task(void * pdata)
{
OS_CPU_SR cpu_sr=0;
pdata = pdata;
OSStatInit(); //cpu统计任务初始化
OS_ENTER_CRITICAL(); //进入临界区,无法被中断打断
OSTaskCreate(OS_TaskStat, (void *)0,
(OS_STK *)&OS_TASK_STAT_STK[OS_TASK_STAT_SIZE-1], OS_TASK_STAT_PRIO);
OSTaskCreate(LED0_task, (void *)0,
(OS_STK *)&LED0_Task_STK[LED0_STK_Size-1], LED0_Task_PRIO);
OSTaskCreate(LED1_task, (void *)0,
(OS_STK *)&LED1_Task_STK[LED1_STK_Size-1], LED1_Task_PRIO);
OSTaskCreate(Send_Message, (void *)0,
(OS_STK *)&Send_Message_STK[Send_Message_SIZE-1], Send_Message_PRIO);
OSTaskSuspend(Start_Task_PRIO); //挂起起始任务
OS_EXIT_CRITICAL(); //退出临界区,可以被中断打断
}