硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4329|回复: 7
收起左侧

[有问必答] 关于FreeRTOS移植STM32f103c8t6时打印任务执行出错

[复制链接]

1

主题

4

回帖

1

积分

新手上路

积分
1
发表于 2016-7-11 23:45:11 | 显示全部楼层 |阅读模式
我按安富莱_STM32-V4开发板_FreeRTOS教程 的第8章例程对STM32f103c8t6进行移植打印任务执行情况时,对函数vTaskGetRunTimeStats((char *)&pcWriteBuffer);进行调用,但是串口打印出来的信息不正确。
我改过的任务为:

int    App_LED_Start(void)
{
    xTaskCreate(vTaskPrintf,&quotrint Task",512,NULL,1,NULL);   
    xTaskCreate(App_LED_Task,"LED Task",512,NULL,2,NULL);
    xTaskCreate(App_LED1_Task,"LED1 Task",512,NULL,3,NULL);   
    return 0;
}

static void vTaskPrintf(void *pvParameters)
{
    uint8_t pcWriteBuffer[512];
    while(1)
    {   
        printf("=================================================\r\n");     
        printf("\r\n");
        printf("任务名      任务状态 优先级   剩余栈 任务序号\r\n");
        vTaskList((char *)&pcWriteBuffer);
        printf("%s\r\n", pcWriteBuffer);   
        printf("\r\n任务名       运行计数         使用率\r\n");
        vTaskGetRunTimeStats((char *)&pcWriteBuffer);
        printf("%s\r\n", pcWriteBuffer);        
        vTaskDelay(500);
    }
}
实际打印出来的效果为:

=================================================

任务名      任务状态 优先级   剩余栈 任务序号
Print Task         R    1    311    1
IDLE               R    0    118    4
LED Task           B    2    490    2
LED1 Task          B    3    490    3


任务名       运行计数         使用率

=================================================

任务名      任务状态 优先级   剩余栈 任务序号
Print Task         R    1    311    1
IDLE               R    0    118    4
LED Task           B    2    490    2
LED1 Task          B    3    490    3


任务名       运行计数         使用率

附图: uart.png

哪位大神能帮忙解答一下为什么vTaskGetRunTimeStats((char *)&pcWriteBuffer);调用不起作用呢?谢谢!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106978
QQ
发表于 2016-7-12 08:55:41 | 显示全部楼层
教程中说的,高精度时间基准是不是没有写。
回复

使用道具 举报

1

主题

4

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2016-7-12 10:46:11 | 显示全部楼层
高精度时间基准是不是初始化一个定时器中断,精度高于滴答定时器中断,这个已经写了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106978
QQ
发表于 2016-7-12 10:48:56 | 显示全部楼层

回 kadang 的帖子

kadang:高精度时间基准是不是初始化一个定时器中断,精度高于滴答定时器中断,这个已经写了。 (2016-07-12 10:46) 
FreeRTOSConfig.h文件做了配置了没有。
回复

使用道具 举报

1

主题

4

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2016-7-12 10:54:01 | 显示全部楼层

回 eric2013 的帖子

eric2013:FreeRTOSConfig.h文件做了配置了没有。 (2016-07-12 10:48) 
做了,按教程来做了
回复

使用道具 举报

1

主题

4

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2016-7-12 11:21:19 | 显示全部楼层

回 eric2013 的帖子

eric2013:

FreeRTOSConfig.h文件做了配置了没有。
我上传一下我的工程文件吧。大神有时间帮忙看看。我是怀疑是不是栈溢出了。附件: LED-led_2.rar (10.43 MB, 下载次数: 160)
回复

使用道具 举报

1

主题

4

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2016-7-12 12:07:50 | 显示全部楼层

回 kadang 的帖子

kadang:我上传一下我的工程文件吧。大神有时间帮忙看看。我是怀疑是不是栈溢出了。附件:
 (2016-07-12 11:21) 
找到问题,是高精度时间基准的问题,STM32f103c8t6没有TIM6,将其改为TIM4即可。谢谢!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106978
QQ
发表于 2016-7-13 00:15:55 | 显示全部楼层

回 kadang 的帖子

kadang:找到问题,是高精度时间基准的问题,STM32f103c8t6没有TIM6,将其改为TIM4即可。谢谢! (2016-07-12 12:07) 
居然是这个问题,[s:142]
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-13 03:35 , Processed in 0.261700 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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