首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

FreeRtos osDelay的长度正好是原来的三倍

FreeRTOS是一款流行的实时操作系统(RTOS),被广泛应用于嵌入式系统开发。它提供了一个可裁剪、可移植的内核,支持多任务处理和任务调度。osDelay()是FreeRTOS中的一个延时函数,用于使当前任务进入阻塞状态,等待一定时间后再继续执行。

osDelay()函数的长度是原来的三倍指的是在特定情况下,使用osDelay()函数会导致任务的运行时间变长,变成原来的三倍。具体原因可能涉及到一些操作系统的内部机制和实现细节。下面是对该问答内容的完善和详细解释:

FreeRTOS中的osDelay()函数是用于实现任务延时的函数。它使当前任务进入阻塞状态,在指定的时间后再被调度器唤醒继续执行。在调用osDelay()函数时,传入的参数是以操作系统的时基单位(一般为时钟节拍或毫秒)表示的延时时间。

关于长度是原来的三倍的表述可能有一些误导性。在实际使用中,osDelay()函数的延时时间应该是指定的时间长度,而不会有三倍的变化。如果在特定的情况下,使用osDelay()函数导致任务的运行时间变长三倍,可能涉及到以下几个方面的原因:

  1. 任务优先级设置:FreeRTOS使用优先级来调度任务,如果任务的优先级设置不当,较低优先级的任务可能无法及时得到调度,从而延长了任务执行的时间。
  2. 其他任务的运行情况:如果在系统中有其他任务具有较高的优先级,并且它们的执行时间较长,会导致osDelay()函数所在的任务等待更长的时间才能被调度。

需要注意的是,以上两个原因并非直接与osDelay()函数的实现有关,而是与任务调度和优先级设置等相关。因此,在实际应用中,需要合理设置任务的优先级和调度策略,以确保系统的性能和响应能力。

最后,关于FreeRTOS的相关信息和腾讯云的产品介绍,可以参考以下链接:

  • FreeRTOS官方网站:https://freertos.org/
  • 腾讯云物联网操作系统(TC-RTOS):https://cloud.tencent.com/product/tc-rtos
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

STM32CubeMX FreeRTOS堆栈分配、调试技巧

其中 “内部用,中断向量等” 这块是系统固定,我们不需要管。 其中HEAP和STACK,他们跟FreeRTOS堆和栈没有关系。...系统栈STACK 用来存储临时变量、函数参数等等,当我们进行函数嵌套时,进入函数前,是要进行保存现场工作,等执行完函数跳回到原来位置时,需要恢复现场,而保存现场所使用内存,就是从系统栈中获取,...RTOS堆使用空间,是从全局区申请。 成分 描述 RTOS堆 在FreeRTOS初始化时,定义了大小,属于系统全局区部分。...FreeRTOS使用全部RAM,都从这里分配,包括任务栈、队列、pvPortMalloc()申请空间等等 所以在一个FreeRTOS工程里,只要不闲着没事用malloc(),就不用管系统堆和系统栈了...printf("TEST剩余栈%d\r\n",(int)uxTaskGetStackHighWaterMark(NULL)); osDelay(1000); } } 测试结果:

8.1K51

基于STM32与FreeRTOS消息传递详解(HAL库)

介绍 消息队列概念 队列又称消息队列,是一种常用于任务间通信数据结构,队列可以在任务与任务间、中断和任务间传递信息,实现了任务接收来自其他任务或中断不固定长度消息,任务能够从队列里面读取消息,当队列中消息是空时...在FreeRTOS消息队列函数 设定消息队列格式:osMessageQDef(myQueue, len, size); myQueue是消息队列名称。...len是消息队列长度(有几个消息) size是每个消息大小,也就是每个元素格式 创建消息:osMessageCreate(osMessageQ(myQueue01), NULL); 创建消息函数...,实际上是调用了FreeRTOSosMessageCreate()函数,只不过HAL库进行了封装。...=0) printf(" count %d,LEDTask Receive %s",i,Res);//输出接收消息大小和内容 osDelay(500); } } 现象 PC端发送123456789

1.3K30
  • STM32CubeMX 真的不要太好用

    详细入门教程我就不写了,网上太多,这里说下我是怎么用它快速实现了一个虚拟串口终端和点灯吧,也算是入门教程吧,哈哈哈 我需要用外设有 usb 接口和一个普通 GPIO,需要使用中间件库有 FreeRTOS...也会发出警告,这里我们为 HAL 库使用定时器选过一个就可以了,如下图,这里我把它选到了 TIM1, 4、由于后续我们还要在 FreeRTOS 上加入许多线程,我们把他堆大小设置大一点,在 FREERTOS...FreeRTOS 提供串口终端实现即 CLI ,对接上我们虚拟串口。...第一步,下载 FreeRTOS CLI 扩展库,这里 STM32CubeMX 默认是没有提供,没关系,我们去 FreeRTOS 官网下载,注意最好下载当前使用 FreeRTOS 版本对应版本完整包...= CDC_Transmit_FS(pMessage, len)) { osDelay(10); goto retry; } return 0x00; } 请放过不要吐槽这里 goto

    1.3K10

    【STM32H7】第13章 RL-TCPnet V7.X之创建多个TCP客户端

    13.8 网络调试助手和板子调试操作步骤 13.9 实验例程说明(RTX5) 13.10 实验例程说明(FreeRTOS) 13.11 总结 13.1 初学者重要提示   学习本章节前,务必保证已经学习了第...,指针变量buf是接收数据缓冲区首地址,变量len记录接收到数据长度,单位字节。...) 配套例子: V7-1011_RL-TCPnet V7.X实验_多个TCP客户端连接(FreeRTOS) 实验目的: 学习FreeROS + RL-TCPnet多个TCP客户端制作。...FreeRTOS配置: FreeRTOS配置向导详情如下:   Minimal stack size 最小任务栈大小,主要是空闲任务,单位字(4个字节)。 当前设置是512字节。  ...Total heap size FreeRTOS堆大小,单位字节。 当前设置30960字节。   Kernel tick frequency FreeRTOS系统时钟节拍。

    1.6K21

    【STM32F429】第13章 RL-TCPnet V7.X之创建多个TCP客户端

    13.8 网络调试助手和板子调试操作步骤 13.9 实验例程说明(RTX5) 13.10 实验例程说明(FreeRTOS) 13.11 总结 13.1 初学者重要提示  学习本章节前,务必保证已经学习了第...,指针变量buf是接收数据缓冲区首地址,变量len记录接收到数据长度,单位字节。...) 配套例子: V6-1011_RL-TCPnet V7.X实验_多个TCP客户端连接(FreeRTOS) 实验目的: 学习FreeROS + RL-TCPnet多个TCP客户端制作。...FreeRTOS配置: FreeRTOS配置向导详情如下:   Minimal stack size 最小任务栈大小,主要是空闲任务,单位字(4个字节)。 当前设置是512字节。  ...Total heap size FreeRTOS堆大小,单位字节。 当前设置30960字节。   Kernel tick frequency FreeRTOS系统时钟节拍。

    1.7K10

    stm32开发教程_单片机STM32

    无论 你采用FreeRTOS还是Keil自带RTX,通过图形化界面配置,都能快速生成项目所需基础层架构代码,从而将主要精力用于自身项目需求开发上,大大提高开发效率。...左侧栏先要注意几个问题: 1、你可以选择是否使用FREERTOS 2、如果选择外部时钟,请务必选择 “RCC-HSE 选项,如图配置”否则 Input frequency 输入选项不可更改,系统时钟最高只能为...看一个我碰到项目实例:一同事在用STM32CubeMx生成代码,要交到我这里来对项目代码进行整合,代码里用到延时函数有两个HAL_Delay(), osDelay(),理论上,这两个延时函数参数延时基准都是...ms,也就是说HAL_Delay(1000), osDelay(1000)都表示延时1000ms,但是我还是要测试一下延时是否准确,因为还有其他好多地方要用到,而且对延时精度要求可能更高点**。...通过示波器测试得知osDelay(1000)是准确,而HAL_Delay(1000)延时值实际只有500ms,问题在哪呢?

    78920

    【STM32F407】第13章 RL-TCPnet V7.X之创建多个TCP客户端

    13.8 网络调试助手和板子调试操作步骤 13.9 实验例程说明(RTX5) 13.10 实验例程说明(FreeRTOS) 13.11 总结 13.1 初学者重要提示   学习本章节前,务必保证已经学习了第...,指针变量buf是接收数据缓冲区首地址,变量len记录接收到数据长度,单位字节。...FreeRTOS配置: FreeRTOS配置向导详情如下: ?   Minimal stack size 最小任务栈大小,主要是空闲任务,单位字(4个字节)。 当前设置是512字节。  ...Total heap size FreeRTOS堆大小,单位字节。 当前设置30960字节。   Kernel tick frequency FreeRTOS系统时钟节拍。...Use time slicing 使能时间片调度,这个选项非常重要,RL-TCPnet V7.X用于FreeRTOS版要用到。 FreeRTOS任务调试信息: ?

    1.9K20

    【STM32F407】第11章 RL-TCPnet V7.X之TCP服务器

    申请发送缓冲区大小不可超过最大报文长度(MSS,Maximum Segment Size),即1440字节。 操作缓冲区时候,切不可超过申请缓冲区大小。...申请发送缓冲区大小不可超过最大报文长度(MSS,Maximum Segment Size),即1440字节。 netTCP_Send不会发送长度为0数据包,如果用户设置为0,可以用来释放缓冲区。...实现,进入消息后,指针变量buf是接收数据缓冲区首地址,变量len记录接收到数据长度,单位字节。...FreeRTOS配置: FreeRTOS配置向导详情如下:   Minimal stack size 最小任务栈大小,主要是空闲任务,单位字(4个字节)。 当前设置是512字节。  ...Total heap size FreeRTOS堆大小,单位字节。 当前设置30960字节。   Kernel tick frequency FreeRTOS系统时钟节拍。

    1.2K10

    FreeRTOS三种数据结构区别(StreamBuffer,MessageBuffer,Queue)

    从发送和接收函数中可以看出,其默认传递方式为拷贝,将指针指向内容拷贝到自己内存中。所以发送完成后可以修改原来数据存储区,同样接收完成后,数据会从队列存储区中删除。...字节流可以是任意长度,并且不一定具有开头或结尾。可以一次写入任意数量字节,并且可以一次读取任意数量字节。数据通过复制传递 – 数据由发送方复制到缓冲区中,并通过读取从缓冲区中复制出来。...,不难看出,流缓冲区可以任意长度读写数据,并且支持阻塞式访问。...与大多数其他FreeRTOS API不同是,流缓冲器针对单个读取器单写入器场景进行了优化,例如将数据从中断服务例程传递到任务,或者从双核CPU上一个微控制器核心传递到另一个。...三 MessageBuffer 消息缓冲区 消息缓冲区是在流式缓冲区基础上实现,其进一步针对“消息”进行设计改进。MessageBuffer每一条消息写入增加了一个字节用来表示该条消息长度

    1.8K20

    【STM32F429】第12章 RL-TCPnet V7.X之TCP客户端

    申请发送缓冲区大小不可超过最大报文长度(MSS,Maximum Segment Size),即1440字节。 操作缓冲区时候,切不可超过申请缓冲区大小。...申请发送缓冲区大小不可超过最大报文长度(MSS,Maximum Segment Size),即1440字节。 netTCP_Send不会发送长度为0数据包,如果用户设置为0,可以用来释放缓冲区。...,进入消息后,指针变量buf是接收数据缓冲区首地址,变量len记录接收到数据长度,单位字节。...FreeRTOS配置: FreeRTOS配置向导详情如下:   Minimal stack size 最小任务栈大小,主要是空闲任务,单位字(4个字节)。 当前设置是512字节。  ...Total heap size FreeRTOS堆大小,单位字节。 当前设置30960字节。   Kernel tick frequency FreeRTOS系统时钟节拍。

    1.5K41

    【STM32H7】第12章 RL-TCPnet V7.X之TCP客户端

    申请发送缓冲区大小不可超过最大报文长度(MSS,Maximum Segment Size),即1440字节。 操作缓冲区时候,切不可超过申请缓冲区大小。...申请发送缓冲区大小不可超过最大报文长度(MSS,Maximum Segment Size),即1440字节。 netTCP_Send不会发送长度为0数据包,如果用户设置为0,可以用来释放缓冲区。...,进入消息后,指针变量buf是接收数据缓冲区首地址,变量len记录接收到数据长度,单位字节。...FreeRTOS配置: FreeRTOS配置向导详情如下:   Minimal stack size 最小任务栈大小,主要是空闲任务,单位字(4个字节)。 当前设置是512字节。  ...Total heap size FreeRTOS堆大小,单位字节。 当前设置30960字节。   Kernel tick frequency FreeRTOS系统时钟节拍。

    1.8K30

    107-ESP32_SDK开发-flash数据存储nvs

    说明 nvs是底层封装一套把数据存储到flash里面的函数; 数据是以键值对形式存储数据(就是标识符+数据形式) 不如直接看代码 #include #include #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/queue.h" #include "freertos...,可随意设置,字符串长度默认最长15个字符 (NVS_PART_NAME_MAX_SIZE - 1) 2.设置表格中字段名字为test值为111 i32代表32字节数据,其实有许多类型 test...字符串是咱数据标签名在数据库中也常叫做字段名 ,可随意设置,字符串长度默认最长15个字符 (NVS_PART_NAME_MAX_SIZE - 1) 后面的111是设置值 3.提交 设置完值以后调用一下提交函数...4.读取 更加详细代码可参看官方

    86820

    IAR(EWARM)下移植FreeRTOS到STM32F10x笔记

    为了这个移植,国庆都没有好好出去玩,在公司里弄这个移植,因为公司开发工具是IAR(32K限制版,没有版权,编译FreeRTOS还是搓搓有余~),在网上下载了移植实例,但都是用Keil编译,...在FreeRTOS官网下载FreeRTOSV7.1.0版本,免费!压缩版很小,解压出来倒是挺大,看来这个解压工具(7zip)还是真厉害!...解压出来文件当中有一个Demo文件,里面就是FreeRTOS在各种处理器上不同编译器上编译例子,于是我选择CORTEX_STM32F103_IAR这个文件,同时做了个备份,以免改了不成功,还有原来...这里Utilities文件时我自己添加,里面的文件是我参考Keil,和编译器没有什么关系,都是C语言,所以我就改了改拿过来用了,有C语言基础一般能看懂,其实我水平也不咋地~~还是原来作者写好多了...Note:FreeRTOS工程使用早期stm32固件库,2006年!我晕了,都12年了,怎么就不更新呢?v7.2.0demo里也是老固件库,估计是稳定吧,这里要懂得修改了。

    1.1K30

    STM32-FreeRTOS快速学习之总结1

    基础知识 注意:在RTOS中是优先值越高则优先级越高(和ucos/linux相反) 在移植时候,主要裁剪FreeRTOS/Source/portable文件夹,该文件夹用来针对不同MCU做一些处理...( void *pv ); 1.2 添加头文件路径 添加FreeRTOS\include 添加FreeRTOS\portable\RVDS\ARM_CM3 并将原子中FreeRTOSConfig.h也复制到我们项目的...高副优先级中断不可以打断低副优先级中断(只是两个相同抢占优先级中断同时来时候,只会优先选择高副优先级) 4.3 FreeRTOS中断配置宏 configKERNEL_INTERRUPT_PRIORITY...用来配置中断最低抢占优先级,也就是可以FreeRTOS可以管理最小抢占优先级,所以使用FreeRTOS时,我们尽量设置stm32为NVIC_PriorityGroup_4,这样就可以管理16个优先级了...(表示队列中最大多少条消息),uxItemSize:每个队列消息长度(以字节为单位) // pucQueueStorage:指向用户事先分配好存储区内存(必须为uint8_t型) // pxQueueBuffer

    1.4K20

    疯传|freeRTOS在恩智浦KV46MCU上移植

    经过前面对freeRTOS源码目录结构和例程分析,接下来我们就动手来移植freeRTOS最新版源码包到NXPkinetis系列KV46MCU上,并实现一个简单例子,按一个按键,点亮LED灯。...准备工作 1, 官网下载freeRTOS源码包V9.0.0,解压到本地电脑上 2, 装有IAR电脑 3, 塔式系统平台Kv46 之前曾多次提到过,移植一个源码包,必须熟悉他源码目录结构,所以本次移植前...工程搭建 复制freeRTOSdemo文件夹下CORTEX_Kinetis_K60_Tower_IAR文件夹所有内容。...修改链接文件,因为k60例程用是512Kflash配置文件,找到kv46配置文件并复制到我们工程common文件夹下,可以删除原来k60配置文件 ?...修改系统初始化函数 修改sysinit函数,因为kv46只有串口1和串口0,我们使用串口1,所以配置对应管脚,删除掉不用配置 ? 修改freeRTOS配置文件 ? ?

    1K70
    领券