OpenEdv-开源电子网

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

STM32F4使用FreeRTOS卡在configASSERT

[复制链接]

20

主题

81

帖子

0

精华

高级会员

Rank: 4

积分
955
金钱
955
注册时间
2018-9-11
在线时间
119 小时
发表于 2020-3-5 14:27:14 | 显示全部楼层 |阅读模式
100金钱
移植了FreeRTOS到STM32F4开发板上,一共创建了4个任务
一个开始任务 三个运行任务  开始任务用来创建其它三个任务

第一个任务
void start_location_task(void *pvParameters)
{
        taskENTER_CRITICAL();
        while(runOnce)
        {
                send_start_Location();
                runOnce = false;
        }       
        vTaskDelete(START_LOCATIONTask_Handler);
        taskEXIT_CRITICAL();
}


第二个任务
void analyze_task(void *pvParameters)
{
        u8 buf;
        while(1)
        {
                printf("111111111111\r\n");
                vTaskDelay(10);               
        }

}


第三个任务
void data_task(void *pvParameters)
{
        while(1)
        {
                printf("222222222\r\n");
                vTaskDelay(1000);
        }

}


第一个任务运行一次后就删除了,剩下第二和第三个任务运行。

问题是,如果我在第三个任务中调用vTaskDelay()函数,
程序运行起来后,第二和第三个任务就运行一次,然后卡在了  configASSERT( ( pxLink->xBlockSize & xBlockAllocatedBit ) != 0 ); 这个函数上,
把第三个任务的vTaskDelay()函数注释掉后,第二和第三个任务就能持续运行,这是为啥?
有没有大佬指点一下的!!


附上任务优先级配置:
#define START_TASK_PRIO                1            
#define START_STK_SIZE                 128         
TaskHandle_t StartTask_Handler;         
void start_task(void *pvParameters);   

#define ANALYZE_TASK_PRIO                4         
#define ANALYZE_STK_SIZE                 256        
TaskHandle_t ANALYZETask_Handler;      
void analyze_task(void *pvParameters);  

#define START_LOCATION_TASK_PRIO                2         
#define START_LOCATION_STK_SIZE                 128      
TaskHandle_t START_LOCATIONTask_Handler;      
void start_location_task(void *pvParameters);  


#define DATA_TASK_PRIO                3
#define DATA_STK_SIZE                 512
TaskHandle_t DATATask_Handler;
void data_task(void *pvParameters);

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

使用道具 举报

20

主题

81

帖子

0

精华

高级会员

Rank: 4

积分
955
金钱
955
注册时间
2018-9-11
在线时间
119 小时
 楼主| 发表于 2020-3-5 14:27:47 | 显示全部楼层
回复

使用道具 举报

20

主题

81

帖子

0

精华

高级会员

Rank: 4

积分
955
金钱
955
注册时间
2018-9-11
在线时间
119 小时
 楼主| 发表于 2020-3-5 14:37:01 | 显示全部楼层
最新测试,不创建第一个任务,只创建第二和第三个任务,在添加vtaskdelay函数的情况下也可以正常运行
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-5-29 03:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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