FreeRTOS 配置TICK_RATE_HZ

     2023-02-19     174

关键词:

【中文标题】FreeRTOS 配置TICK_RATE_HZ【英文标题】:FreeRTOS configTICK_RATE_HZ 【发布时间】:2011-01-15 23:47:31 【问题描述】:

我正在使用带有 FreeRTOS 5.4 版的 MSP430f5438。

我遇到了一个我想不通的有趣问题。

基本上,当我将 configTICK_RATE_HZ 设置为不同的值时,LED 会更快或更慢地闪烁;它应该保持不变。我将 configTICK_RATE_HZ 设置得越高,它就会闪烁得越慢,而当我将 TICK_RATE 设置得越低时,它就会闪烁得越快。

vTaskDelayUntil( &xLastFlashTime, xFlashRate );这样无论 configTICK_RATE_HZ 是什么,LED 都应该每秒闪烁一次。我一步一步检查了 xFlashRate 以确保。它总是 = 到 configTICK_RATE_HZ。 代码:

xFlashRate = ledFLASH_RATE_BASE;//my flash base rate is 1000ms
xFlashRate /= portTICK_RATE_MS; //so xFlashrate = whatever configTICK_RATE_HZ equals

/* We need to initialise xLastFlashTime prior to the first call to vTaskDelayUntil().*/ 
xLastFlashTime = xTaskGetTickCount();
for(;;)  
vTaskDelayUntil( &xLastFlashTime, xFlashRate ); vParTestToggleLED( uxLED ); 
flashled();//this should happen every 1 second.

当我将 configtick_rate_hz 设置为 1000 时,LED 闪烁的周期大于 1 秒,而当我将滴答率设置为小于 ~200 时,LED 闪烁的周期远小于 1 秒

configTICK_RATE_HZ 不应影响 LED 闪烁时间。

我意识到需要更多信息,并且会随时提供任何需要帮助的代码 sn-ps。

【问题讨论】:

我认为你需要清楚。您的测试引用了 configTICK_RATE_HZ,但您的代码引用了 configTICK_RATE_MS,并且您没有给出 ledFLASH_RATE_BASE 的值。 RATE 一词表示频率,但 MS 表示周期。它是哪一个?价值观是什么。 为什么当你改变滴答频率时你的系统频率改变了? @mocj:他很惊讶,因为他认为他已经计算出延迟以补偿变化的滴答率。他没有。 澄清 - 1) xFlashRate 是要延迟的 RTOS 滴答数。 2)ledFLASH_RATE_BASE 是您想要的以毫秒为单位的周期。 3)portTICK_RATE_MS 是 RTOS 滴答的周期。它源自 configTick_RATE_HZ (1000/configTICK_RATE_HZ)。 4)so:如果您希望 LED 每秒滴答一次(1000 毫秒)并且 RTOS 每 250 毫秒滴答一次,那么您希望延迟为 4 个 rtos 滴答声。 你为什么不通过编辑帖子而不是通过评论来澄清? 【参考方案1】:

RTOS 滴答由定时器中断生成。计时器设置(不正确),无论您设置什么 configTICK_RATE_HZ,它总是会导致 400kHz 的固定滴答声。由于闪烁率是在 RTOS 滴答率由 configTICK_RATE_HZ (portTICK_RATE_MS = 1000/configTICK_RATE_HZ) 正确表示的假设下设置的,因此出现了问题。

【讨论】:

为什么不正确?使用 sysTick 以外的计时器的关键在于,即使 CPU 时钟停止,它也会以相同的速率保持计时。

[freertos入门]1.cubemx中freertos配置参数及理解

1.有关优先级  1.1Configuration-->FreeRTOS MAX_PRIORITIES  设置任务优先级的数量:配置应用程序有效的优先级数目。任何数量的任务都可以共享一个优先级,使用协程可以单独的给与它们优先权。见MAX_CO_ROUTINE_PRIORITIES。在RTOS... 查看详情

cubemx使用freertos编程指南(代码片段)

文章目录CubeMX使用FreeRTOS编程指南一、开发前言1.1软件准备1.2开启FreeRTOS二、配置界面三、系统设置2.1调度内核设置2.2内存管理设置2.3钩子函数配置2.5任务运行追踪配置2.6协程配置2.7软件定时器配置2.8中断优先级配置三、内核裁... 查看详情

cubemx使用freertos编程指南(代码片段)

文章目录CubeMX使用FreeRTOS编程指南一、开发前言1.1软件准备1.2开启FreeRTOS二、配置界面三、系统设置2.1调度内核设置2.2内存管理设置2.3钩子函数配置2.5任务运行追踪配置2.6协程配置2.7软件定时器配置2.8中断优先级配置三、内核裁... 查看详情

freertos学习笔记4

FreeRTOS配置管理:网上移植教程较多,也可以使用官方提供的各种Demo工程进行移植,不在详细介绍。本文主要介绍FreeRTOS移植成功后进行的配置方式。使其成为自己最匹配最精简,最适用的系统。FreeRTOSConfig.h几乎包含了所有需要... 查看详情

freertos特性简介

FreeRTOS由RichardBarry开发,是一个开源的、可移植的、小型的嵌入式实时操作系统内核。FreeRTOS既支持抢占式多任务,也支持协作式多任务。FreeRTOS的主要特性如下:实时性:FreeRTOS“可以”配置成为一个硬(Hard)实时操作系... 查看详情

freertos配置文件有哪些基础配置

...;不错过精彩内容作者| strongerHuang微信公众号| strongerHuangFreeRTOS中“FreeRTOSConfig.h”配置的内容随着版本(功能)的增加而增加,也就是说随着系统功能的增加,对应需要的配置信息也相应增加了。但是系统为了兼... 查看详情

如何使用cubemx配置freertos,实时查看freertos任务列表和运行状态(代码片段)

...------------------------------------------------关键点:  在FreeRTOSConfig.h文件中使能如下宏:(1)*    #defineconfigUSE_TRACE_FACILITY              1(2)*    #d... 查看详情

arduino与freertos-freertos配置与简单任务创建

FreeRTOS配置与简单任务创建1、RTOS介绍1)什么是RTOS实时操作系统(RealTimeOperatingSystem)也称为RTOS,是一种旨在满足实时应用程序要求的操作系统。它能够处理传入的数据,通常没有缓冲延迟。RTOS是调用预定义函数的组合。A)RTOS... 查看详情

halstm32f407zgt6freertos

...1.RCC和SW口  这里选用定时器7TIM7作为系统时钟systick作为FreeRTOS的时钟源2.配置FreeRTOS,并创建3个任务 3.配置串口1和LED,这里不多说 4.配置时钟 5.生成代码,打开Keil在freertos.c文件里面进行默认任务编写 LED1闪烁(500ms间隔)写作默认... 查看详情

记一次freertos错误配置导致无法进入临界区(代码片段)

  最近项目用到FreeRTOS,在实际调试中发现我自己的一段代码本来好用的(在无RTOS的情况下),但是当我在带RTOS的情况下把代码放到一个单独的任务中运行时我发现本来好用的代码莫名其妙的出现问题,有一定的概率会失败... 查看详情

freertos任务优先级分配方案

任务优先级说明下面对FreeRTOS优先级相关的几个重要知识点进行下说明,这些知识点在以后的使用中务必要掌握牢固。?FreeRTOS中任务的最高优先级是通过FreeRTOSConfig.h文件中的configMAX_PRIORITIES进行配置的,用户实际可以使用的优先... 查看详情

freertos里的tick定时器在哪里配置的(代码片段)

intmain(void) nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0); xTaskCreate(GUI_Task,"GUI_Task",configMINIMAL_STACK_SIZE*8,NULL,tskIDLE_PRIORITY+1,NULL); /*startscheduler*/ vTaskStartSche 查看详情

使用stm32cubemx创建freertos项目(代码片段)

使用STM32CubeMX创建FreeRTOS项目介绍STM32CubeMXFreeRTOS使用流程后续介绍STM32CubeMXSTM32CubeMX是被广泛使用的。它集成了芯片选型、引脚分配和功能配置,中间件配置,时钟配置,初始代码和项目的功能。FreeRTOSFreeRTOS是与世界... 查看详情

使用stm32cubemx创建freertos项目(代码片段)

使用STM32CubeMX创建FreeRTOS项目介绍STM32CubeMXFreeRTOS使用流程后续介绍STM32CubeMXSTM32CubeMX是被广泛使用的。它集成了芯片选型、引脚分配和功能配置,中间件配置,时钟配置,初始代码和项目的功能。FreeRTOSFreeRTOS是与世界... 查看详情

freertos里的tick定时器在哪里配置的

...E_PRIORITY+1,NULL); /*startscheduler*/ vTaskStartScheduler(); while(1) FreeRTOS10.1版本从main函数看非常的简洁以至于我都不知道在哪儿开启了Tick定时器跟踪vTaskStartScheduler()-> vPortSetupTimerInterrupt()voidvPortSetupTimerInterrupt(void) /*Calculatetheconstantsr... 查看详情

freertos里的tick定时器在哪里配置的

...E_PRIORITY+1,NULL); /*startscheduler*/ vTaskStartScheduler(); while(1) FreeRTOS10.1版本从main函数看非常的简洁以至于我都不知道在哪儿开启了Tick定时器跟踪vTaskStartScheduler()-> vPortSetupTimerInterrupt()voidvPortSetupTimerInterrupt(void) /*Calculatetheconstantsr... 查看详情

从0开始的freertos

“从0开始的FreeRTOS”系列教程第二讲作者:satori这一期教程中,我们将介绍FreeRTOS源码的内容,如何使用cubemx快速生成一个包含freertos的工程,以及包含freertos的工程的结构。https://sourceforge.net/projects/freertos/files/FreeRTOS/在上面的网... 查看详情

1302_freertos中coroutine设计实现分析

全部学习汇总:​​GreyZhang/g_FreeRTOS:learningnotesaboutFreeRTOS.(github.com)​​在FreeRTOS中有一个功能叫做CoRoutine,在很久之前使用某个MCU的SDK中集成的FreeRTOS功能的时候就发现过这个配置,但是没有深究其作用。这个是官方的介绍,从... 查看详情