OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4427|回复: 5

写个例程遇到奇怪问题 = =

[复制链接]

3

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2018-6-21
在线时间
6 小时
发表于 2018-6-21 14:06:38 | 显示全部楼层 |阅读模式
用任务1删除任务2 结果它把自己给删了

#define MY_TASK1_PRIO 1
#define MY_TASK1_SIZE 128
TaskHandle_t myTask1TaskHandle;
void myTask1(void *pvParameters);//任务函数

#define MY_TASK2_PRIO 2
#define MY_TASK2_SIZE 128
TaskHandle_t myTask2TaskHandle;
void myTask2(void *pvParameters);//任务函数

int main(void)
{
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4                  
        delay_init();                                            //延时函数初始化          
        uart_init(115200);                                        //初始化串口
        LED_Init();                                                          //初始化LED


        xTaskCreate(myTask1,"myTask1",MY_TASK1_SIZE,NULL,MY_TASK1_PRIO,myTask1TaskHandle);
       
        xTaskCreate(myTask2,"myTask2",MY_TASK2_SIZE,NULL,MY_TASK2_PRIO,myTask2TaskHandle);

        vTaskStartScheduler();
       
}

void myTask1(void *pvParameters)
{
        u8 taskNum = 0;
        for(;;)
        {
                printf("myTask1打印\r\n");
                printf("taskNum计数:%d\r\n\r\n",taskNum);
                taskNum++;
                if(taskNum == 10)
                {
                        vTaskDelete(myTask2TaskHandle);
                        printf("myTask2被删除\r\n");
                }
                vTaskDelay(500);
        }
}

void myTask2(void *pvParameters)
{
        for(;;)
        {
                printf("myTask2打印\r\n");
                vTaskDelay(500);
        }
}

打印结果:
......

myTask2打印
myTask1打印
taskNum计数:7

myTask2打印
myTask1打印
taskNum计数:8

myTask2打印
myTask1打印
taskNum计数:9

myTask2打印
myTask2打印
myTask2打印
myTask2打印
myTask2打印
myTask2打印
myTask2打印
myTask2打印
myTask2打印


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

23

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
215
金钱
215
注册时间
2018-5-25
在线时间
34 小时
发表于 2018-6-21 15:19:00 | 显示全部楼层
创建任务函数是取任务句柄地址    &myTask1TaskHandle   不是 myTask1TaskHandle
回复 支持 1 反对 0

使用道具 举报

3

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2018-6-21
在线时间
6 小时
 楼主| 发表于 2018-6-21 15:32:07 | 显示全部楼层
Dluffy 发表于 2018-6-21 15:19
创建任务函数是取任务句柄地址    &myTask1TaskHandle   不是 myTask1TaskHandle

打印出来是这样的,删除是没错了,但是又有了新问题:
为啥先打印的--------myTask2被删除
按道理应该先打印-----myTask1打印

myTask2打印
myTask1打印
taskNum计数:9

myTask2被删除
myTask1打印
taskNum计数:10

myTask1打印
taskNum计数:11

myTask1打印
taskNum计数:12
回复 支持 反对

使用道具 举报

2

主题

168

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2018-5-14
在线时间
69 小时
发表于 2018-6-21 14:13:27 | 显示全部楼层
把任务句柄名字改短点儿试试
回复 支持 反对

使用道具 举报

3

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2018-6-21
在线时间
6 小时
 楼主| 发表于 2018-6-21 15:26:29 | 显示全部楼层
Dluffy 发表于 2018-6-21 15:19
创建任务函数是取任务句柄地址    &myTask1TaskHandle   不是 myTask1TaskHandle

原来如此,低级错误 = =!
回复 支持 反对

使用道具 举报

3

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2018-6-21
在线时间
6 小时
 楼主| 发表于 2018-6-21 15:51:06 | 显示全部楼层
yjx474065099 发表于 2018-6-21 15:32
打印出来是这样的,删除是没错了,但是又有了新问题:
为啥先打印的--------myTask2被删除
按道理应该 ...

debug了一遍,懂了 = =,谢谢各位
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 23:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表