freertos系列之运行时间函数

函 数 vTaskGetRunTimeStats() 是 一 个 很 实 用 的 函 数 , 要 使 用 此 函 数 的 话 宏
configGENERATE_RUN_TIME_STATS configUSE_STATS_FORMATTING_FUNCTIONS 必须
都为 1 。如果宏 configGENERATE_RUN_TIME_STATS 1 的话还需要实现一下几个宏定义:
portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() ,此宏用来初始化一个外设来
提供时间统计功能所需的时基,一般是定时器 / 计数器。这个时基的分辨率一定要比 FreeRTOS
的系统时钟高,一般这个时基的时钟精度比系统时钟的高 10~20 倍就可以了。
portGET_RUN_TIME_COUNTER_VALUE() 或者
portALT_GET_RUN_TIME_COUNTER_VALUE(Time) 这两个宏实现其中一个就行
了,这两个宏用于提供当前的时基的时间值。
函数原型如下:
void vTaskGetRunTimeStats( char *pcWriteBuffer )
具体的操作如下:在任务2中调用运行时间函数,在freertosConfig.h设置相应的宏,并在tim.c中设置时基。
/*task2实现运行时间查询
 * @brief       task2
 * @param       pvParameters : 传入参数(未用到)
 * @retval      无
 */
void task2(void *pvParameters)
{
        char task_buff[300]; 
        uint8_t key = 0;
    while (1)
    {
                key = key_scan(0);
                if(key == KEY0_PRES)
                {
                        vTaskGetRunTimeStats(task_buff);
                        printf("%s\r\n",task_buff);
                }
                vTaskDelay(10);
    }
        
}
freertosConfig.h
/* 运行时间和任务状态统计相关定义 */
#define configGENERATE_RUN_TIME_STATS                   1                       /* 1: 使能任务运行时间统计功能, 默认: 0 */
#if configGENERATE_RUN_TIME_STATS
#include "./BSP/TIMER/btim.h"
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()        ConfigureTimeForRunTimeStats()
extern uint32_t FreeRTOSRunTimeTicks;
#define portGET_RUN_TIME_COUNTER_VALUE()                FreeRTOSRunTimeTicks
#endif
#define configUSE_TRACE_FACILITY                        1                       /* 1: 使能可视化跟踪调试, 默认: 0 */
#define configUSE_STATS_FORMATTING_FUNCTIONS            1                       /* 1: configUSE_TRACE_FACILITY为1时,会编译vTaskList()和vTaskGetRunTimeStats()函数, 默认: 0 */
 
bim.c
uint32_t FreeRTOSRunTimeTicks;
void ConfigureTimeForRunTimeStats(void)
{
        btim_timx_int_init(10-1,90-1);
        FreeRTOSRunTimeTicks = 0;
    
}
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
{
    if (htim->Instance == BTIM_TIMX_INT)
    {
                FreeRTOSRunTimeTicks ++;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
FreeRTOS函数是指在FreeRTOS操作系统中提供的各种API函数,用于创建、控制和管理任务、消息队列、信号量、软件定时器等组件。这些函数包括任务创建删除、任务控制、调度器控制、软件定时器等功能。\[1\] FreeRTOS是一个实时操作系统,它支持抢占式、合作式和时间片调度,可以在资源有限的微控制器中运行。它的内核占用空间较小,通常为4k-9k字节,具有高可移植性和高效的软件定时器。\[2\]在FreeRTOS中,除了相对延时函数,还有绝对延时函数VTaskDelayUntil,用于实现精确的周期运行任务,可以确保任务在固定的时间间隔内定期执行,而不受外部影响。\[3\] #### 引用[.reference_title] - *1* *2* [FreeRTOS简介及API函数使用方法](https://blog.csdn.net/weixin_44289254/article/details/118547203)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [FreeRTOS 常用的几个函数](https://blog.csdn.net/kelin6/article/details/107546853)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值