120|2

3195

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

freertos里x表示任务什么状态 [复制链接]

 

代码:

#include "freertos_demo.h"
#include "./SYSTEM/usart/usart.h"
#include "./BSP/LED/led.h"
#include "./BSP/KEY/key.h"
/*FreeRTOS*********************************************************************************************/
#include "FreeRTOS.h"
#include "task.h"

/******************************************************************************************************/
/*FreeRTOS配置*/

/* START_TASK 任务 配置
 * 包括: 任务句柄 任务优先级 堆栈大小 创建任务
 */
#define START_TASK_PRIO 1                   /* 任务优先级 */
#define START_STK_SIZE  128                 /* 任务堆栈大小 */
TaskHandle_t            StartTask_Handler;  /* 任务句柄 */
void start_task(void *pvParameters);        /* 任务函数 */

/* TASK1 任务 配置
 * 包括: 任务句柄 任务优先级 堆栈大小 创建任务
 */
#define TASK1_PRIO      3                   /* 任务优先级 */
#define TASK1_STK_SIZE  128                 /* 任务堆栈大小 */
TaskHandle_t            Task1Task_Handler;  /* 任务句柄 */
void task1(void *pvParameters);             /* 任务函数 */

/* TASK2 任务 配置
 * 包括: 任务句柄 任务优先级 堆栈大小 创建任务
 */
#define QUERY_PRIO      3                   /* 任务优先级 */
#define QUERY_STK_SIZE  50                 /* 任务堆栈大小 */
TaskHandle_t            QUERYTask_Handler;  /* 任务句柄 */
void query(void *pvParameters);             /* 任务函数 */

char InfoBuffer[1000];
  
/******************************************************************************************************/

/* LCD刷屏时使用的颜色 */


/**
 * [url=home.php?mod=space&uid=159083]@brief[/url] FreeRTOS例程入口函数
 * @param       无
 * @retval      无
 */
void freertos_demo(void)
{
//    lcd_show_string(10, 10, 220, 32, 32, "STM32", RED);
//    lcd_show_string(10, 47, 220, 24, 24, "FreeRTOS Porting", RED);
//    lcd_show_string(10, 76, 220, 16, 16, "ATOM@ALIENTEK", RED);
//    
    xTaskCreate((TaskFunction_t )start_task,            /* 任务函数 */
                (const char*    )"start_task",          /* 任务名称 */
                (uint16_t       )START_STK_SIZE,        /* 任务堆栈大小 */
                (void*          )NULL,                  /* 传入给任务函数的参数 */
                (UBaseType_t    )START_TASK_PRIO,       /* 任务优先级 */
                (TaskHandle_t*  )&StartTask_Handler);   /* 任务句柄 */
    vTaskStartScheduler();
}

/**
 * @brief       start_task
 * @param       pvParameters : 传入参数(未用到)
 * @retval      无
 */
void start_task(void *pvParameters)
{
    taskENTER_CRITICAL();           /* 进入临界区 */
    /* 创建任务1 */
    xTaskCreate((TaskFunction_t )task1,
                (const char*    )"task1",
                (uint16_t       )TASK1_STK_SIZE,
                (void*          )NULL,
                (UBaseType_t    )TASK1_PRIO,
                (TaskHandle_t*  )&Task1Task_Handler);
    /* 创建任务2 */
    xTaskCreate((TaskFunction_t )query,
                (const char*    )"query",
                (uint16_t       )QUERY_STK_SIZE,
                (void*          )NULL,
                (UBaseType_t    )QUERY_PRIO,
                (TaskHandle_t*  )&QUERYTask_Handler);
		
    vTaskDelete(StartTask_Handler); /* 删除开始任务 */
    taskEXIT_CRITICAL();            /* 退出临界区 */
}

/**
 * @brief       task1
 * @param       pvParameters : 传入参数(未用到)
 * @retval      无
 */
void task1(void *pvParameters)
{
    
   //uint32_t task1_num=0;
    while(1)
    {
        //printf("task1_num:%d\r\n",++task1_num);
        LED0_TOGGLE();                                                  /* LED0闪烁 */
        vTaskDelay(1000);                                               /* 延时1000ticks */
    }
}

/**
 * @brief       task2
 * @param       pvParameters : 传入参数(未用到)
 * @retval      无
 */
void query(void *pvParameters)
{


		vTaskList(InfoBuffer);
		printf("%s\r\n",InfoBuffer);
    while(1)
    {
				LED1_TOGGLE();
				
        //printf("task2_num:%d\r\n",++task2_num);/* 打印数值 */
        vTaskDelay(1000);                           /* 延时1000ticks */
    }
}

运行效果

其中query任务状态为x,这是什么状态?

task.h里这样定义:

typedef enum

{

    eRunning = 0, /* A task is querying the state of itself, so must be running. */

    eReady,       /* The task being queried is in a ready or pending ready list. */

    eBlocked,     /* The task being queried is in the Blocked state. */

    eSuspended,   /* The task being queried is in the Suspended state, or is in the Blocked state with an infinite time out. */

    eDeleted,     /* The task being queried has been deleted, but its TCB has not yet been freed. */

    eInvalid      /* Used as an 'invalid state' value. */

} eTaskState;

R表示运行或者就绪态,B表示阻塞态,D表示删除态

请高手指教,谢谢

 

最新回复

x(5)用作“无效状态”值。有没可能是初始化没成功?   详情 回复 发表于 3 天前
点赞 关注
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 

回复
举报

6883

帖子

2

TA的资源

版主

沙发
 

x(5)用作“无效状态”值。有没可能是初始化没成功?

点评

知道了,x是运行态  详情 回复 发表于 3 天前
 
 
 

回复

3195

帖子

0

TA的资源

纯净的硅(高级)

板凳
 
wangerxian 发表于 2024-12-2 14:18 x(5)用作“无效状态”值。有没可能是初始化没成功?

知道了,x是运行态

 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表