freertos学习-4 调试

来源:互联网 发布:kms命令激活windows 7 编辑:程序博客网 时间:2024/06/05 02:59

下面的步骤记录freertos的调试过程。这里的调试方法主要是教会大家如何

获取任务的执行情况,通过获取的任务信息,可以进一步的配置和优化工

程,这种方法非常实用,建议初学者必须掌握。

很多时候,我们需要了解任务的执行状态,任务栈的使用情况以及各个任务

的 CPU 使用率,这时就需要用到官方提供的两个函数 vTaskList 和

vTaskGetRunTimeStats。用户就可以通过这两个函数获得任务的执行情

况。获取了任务执行情况后,可以通过串口将其打印出来,当然,也可以通

过任何其它方式将其显示出来。

本教程配套的例子统一采用串口打印的方式显示任务的执行情况。另外有一

点要特别注意,这种调试方式仅限测试目的,实际项目中不要使用,这种测

试方式比较影响系统实时性。

1、配置freertosconfig.h

 extern volatile uint32_t ulHighFrequencyTimerTicks; #define configGENERATE_RUN_TIME_STATS          1                     #define configUSE_TRACE_FACILITY                1                      #define configUSE_STATS_FORMATTING_FUNCTIONS    1   #define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()        (ulHighFrequencyTimerTicks = 0ul)#define portGET_RUN_TIME_COUNTER_VALUE()                         ulHighFrequencyTimerTicks       

2、利用stm32内部的定时器产生一个50us的定时器中断

void Timer2_Configuration(void ){    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;    NVIC_InitTypeDef NVIC_InitStructure;    RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM2 ,ENABLE );    TIM_DeInit (TIM2 );//¸´Î»    TIM_InternalClockConfig(TIM2);//    TIM_TimeBaseStructure.TIM_Period =100-1;//    TIM_TimeBaseStructure .TIM_Prescaler =36-1;//    TIM_TimeBaseStructure .TIM_ClockDivision =TIM_CKD_DIV1 ;//    TIM_TimeBaseStructure .TIM_CounterMode =TIM_CounterMode_Up ;//    TIM_TimeBaseInit (TIM2 ,&TIM_TimeBaseStructure );    TIM_ClearFlag(TIM2,TIM_FLAG_Update );//    TIM_ARRPreloadConfig (TIM2,DISABLE );//    TIM_ITConfig (TIM2,TIM_IT_Update ,ENABLE );//    TIM_Cmd(TIM2,ENABLE);    NVIC_InitStructure .NVIC_IRQChannel =TIM2_IRQn ;    NVIC_InitStructure .NVIC_IRQChannelPreemptionPriority =0;    NVIC_InitStructure .NVIC_IRQChannelSubPriority =0;    NVIC_InitStructure .NVIC_IRQChannelCmd =ENABLE ;        NVIC_Init(&NVIC_InitStructure );}void TIM2_IRQHandler(void){    if(TIM_GetITStatus (TIM2 ,TIM_IT_Update )!=RESET )        {                TIM_ClearITPendingBit (TIM2 ,TIM_IT_Update );                 ulHighFrequencyTimerTicks ++;               Timer2_Over_Flag =1;        }}

3、打印相关信息

可以设置为定时打印。                          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);

4、效果
打印

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狼尾蕨 蕨间访谈 酸辣蕨根粉做法 蕨麻不适合什么人吃 凉拌酸辣蕨根粉 酸辣蕨根粉 蕨类植物图片及名称 富贵蕨 蕨类植物有哪些 蕨根粉热量 鸟巢蕨 蕨读音 波士顿蕨 飞雪铁线蕨 长茎葡萄蕨藻 凉拌蕨根粉做法 蕨苔 波斯顿蕨 蕨根粉凉拌方法 肾蕨的果子图片 捞拌蕨根粉的做法 蕨根粉减肥 蕨麻米饭 蕨麻多少钱一斤 蕨根糍粑 毛蕨为什么是植物羊 蕨根粉的制作 珊瑚蕨 蕨根粉孕妇能吃吗 铁线蕨的功效与作用 怎么拌蕨根粉 蕨根粉的做法家常做法 凉拌蕨根粉的热量 铁线蕨的养殖方法和注意事项 孕妇能不能吃蕨根粉 万界共铸神话帝国 蕨地云朵 家里为什么不能放铁线蕨 浣溪沙游蕲水清泉寺 蕲怎么读 蕲的读音