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

手写一个RTOS.1

我相信很多人第一次接触rtos的时候,尤其是freertos的时候,都迷惑一些新变量,到底是什么鬼。。。...,无符号的数 就看这么多 在FreeRTOS中,int型从不使用,只使用short型和long型。...在Cortex-M内核的MCU中,short为16位,long为32位。 在FreeRTOS中,定义变量时往往会把变量的类型当作前缀加在变量上,这样做的好处是让用户一看到这个变量就知道该变量的类型。...这就是几个例子,你看x就是void的意思 还是那句话,都包装过 函数名包含了函数返回值的类型、函数所在的文件名和函数的功能,如果是私有的函数,则会加一个prv(private)的前缀。...特别地,在函数名中加入了函数所在的文件名,这将帮助用户提高寻找函数定义的效率并了解函数作用,具体举例如下: 1)vTaskPrioritySet()函数的返回值为void型,在task.c文件中定义。

78520

韦东山freeRTOS系列教程之【第一章】FreeRTOS概述与体验

文章目录 教程目录 1.1 FreeRTOS目录结构 1.1 FreeRTOS目录结构 1.2 核心文件 1.3 移植时涉及的文件 1.4 头文件相关 1.4.1 头文件目录 1.4.2 头文件 1.5...: FreeRTOS/Source/下的文件 作用 tasks.c 必需,任务操作 list.c 必须,列表 queue.c 基本必需,提供队列操作、信号量(semaphore)操作 timer.c 可选...里面有2个文件: port.c portmacro.h 1.4 头文件相关 1.4.1 头文件目录 FreeRTOS需要3个头文件目录: FreeRTOS本身的头文件:FreeRTOS/Source/include...移植时用到的头文件:FreeRTOS/Source/portable/[compiler]/[architecture] 含有配置文件FreeRTOSConfig.h的目录 1.4.2 头文件 列表如下...demo中的FreeRTOSConfig.h,而不是从头写一个 FreeRTOS.h 使用FreeRTOS API函数时,必须包含此文件。

1.7K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    FreeRTOS | 原理介绍和资源get(第十四天)

    点击上方"蓝字"关注我们01、FreeRTOS是什么?>>> FreeRTOS 是由 Real Time Engineers Ltd 出品,是一款市场领先的 RTOS。...FreeRTOS是RTOS系统的一种,FreeRTOS十分的小巧,可以在资源有限的微控制器中运行,当然,FreeRTOS 不仅局限于在微控制器中使用。...但考虑到有些编译器的性能还比较弱,不支持 C 语言的新标准 C99 和 C11 的一些特性和语法,所以 FreeRTOS 的源码中就没有引入 C99 和 C11 的新特性,但是有一个例外,源码中有用到头文件...long​>>>4.2.2 函数前缀:v :void 无返回类型x :返回portBASE_TYPEprv :私有函数,模块内使用//ux 表示无符号portBASE_TYPE 返回值​//List表示该函数所属文件​...中定义的configUSE_PREEMPTIONerr:例如 projdefs.h中定义的errQUEUE_FULL至于这么严格的代码规范是否值得推崇,提高阅读性。

    24010

    FreeRTOS(十一):其他任务 API 函数

    学过了 FreeRTOS 的任务管理,但是真正涉及到的与任务相关的 API 函数只有那么几个:任务的创建、删除、挂起、恢复。...2、函数 vTaskPrioritySet() 此 函 数 用 于 改 变 某 一 个 任 务 的 任 务 优 先 级 , 要 使 用 此 函 数 的 话 宏 INCLUDE_vTaskPrioritySet...4、函数 vTaskGetInfo() 此函数也是用来获取任务壮态的,但是是获取指定的单个任务的壮态的,任务的壮态信息 填充到参数 pxTaskStatus 中,这个参数也是 TaskStatus_t...8、函数 xTaskGetIdleTaskHandle() 此 函 数 用 于 返 回 空 闲 任 务 的 任 务 句 柄 , 要 使 用 此 函 数 的 话 宏 INCLUDE_xTaskGetIdleTaskHandle...13、函数 xTaskGetTickCountFromISR() 此函数是 xTaskGetTickCount()的中断级版本,用于在中断服务函数中获取时间计数器xTickCount 的值。

    2.3K30

    【安富莱】【RL-TCPnet网络教程】第10章 RL-TCPnet网络协议栈移植(FreeRTOS)

    第1步:将我们FreeRTOS模板中制作好的RL-ARM文件夹复制粘贴到大家准备好的工程模板中。 ? RL-ARM文件夹中有如下七个文件夹: ?...默认情况下,Net_lib.c文件是支持RTX操作系统的,现在要将其修改为支持FreeRTOS,需要修改的几个地方如下: 添加FreeRTOS的头文件。...FreeRTOS操作系统创建的任务 经过上面的移植和配置之后,在 main.c 文件中添加如下代码,代码中创建了5个用户任务: vTaskTaskUserIF 任务: 按键消息处理。...第1步:将我们FreeRTOS模板中制作好的RL-ARM文件夹复制粘贴到大家准备好的工程模板中。 ? RL-ARM文件夹中有如下七个文件夹: ?...默认情况下,Net_lib.c文件是支持RTX操作系统的,现在要将其修改为支持FreeRTOS,需要修改的几个地方如下: 添加FreeRTOS的头文件。

    1.8K20

    RTOS函数命名规则

    ---- 常见命名规则 匈牙利命名法:广泛应用于Microsoft Windows这类环境中; 驼峰命名法:近年来越来越流行。...例如: printEmployeePaychecks(); 函数名中每一个逻辑断点都有一个大写字母来标记。 帕斯卡(Pascal)命名法:与驼峰命名法类似。...在C#中,以帕斯卡命名法和骆驼命名法居多。事实上,很多程序设计者在实际命名时会将驼峰命名法和帕斯卡结合使用,例如变量名采用驼峰命名法,而函数采用帕斯卡命名法。...prv :static函数 v: void函数 函数名 函数名包含了函数返回值的类型、函数所在的文件名和函数的功能,如果是私有的函 数则会加一个 prv(private)的前缀。...queue.c中定义; pvTimerGetTimerID():前缀pv表示返回void类型指针,Timer表示该函数在timer.c.中定义; prv:前缀prv表示作用范围为当前的文件; 宏定义 FreeRTOS

    1.9K20

    全志XR806芯片 如何解决编译错误undefined reference to?

    1.问题背景 把SDK默认的Freertos切换为其他RTOS后,部分用户反馈,工程中已经定义某个函数,但是在编译最后依旧会报错undefined reference to(找不到某个函数)。...3.问题分析 编译过程中没有报错,在最后连接时才报错,说明编译时引用了某个头文件,指明该函数需要用其他库实现。...4.解决方法 1)首先使用nm命令检查该函数所在的.a静态库,确认该静态库中是否已经包含了该函数,如果没有该函数,则检查该函数的编译是不是需要使能某些宏。...把该静态库的顺序提前,如first.a中调用了second.a中的某个函数,但是编译时却报错找不到second.a的某个函数,尝试调换两个静态库的顺序。...缺点是如果该静态库中存在多余的函数,会浪费flash。 原贴链接:https://bbs.aw-ol.com/topic/731

    16910

    FreeRTOS(十五):任务通知

    1、任务通知简介 任务通知在 FreeRTOS 中是一个可选的功能,要使用任务通知的话就需要将宏configUSE_TASK_NOTIFICATIONS 定义为 1。...FreeRTOS 的每个任务都有一个 32 位的通知值,任务控制块中的成员变量 ulNotifiedValue 就是这个通知值。...使用任务通知来实现二值信号量功能的时候,解除任务阻塞的时间比直接使用二值信号量要快 45%(FreeRTOS 官方测试结果,使用 v8.1.2 版本中的二值信号量,GCC 编译器,-O2 优化的条件下测试的...务 调 用 函 数 xTaskNotifyWait() 或 者ulTaskNotifyTake()来获取这个通知值。...中 断 级 任 务 通 知 发 送 函 数 也 有 三 个 , 分 别 为 :xTaskNotifyFromISR() 、xTaskNotifyAndQueryFromISR()和 vTaskNotifyGiveFromISR

    1.3K41

    ESP32-Drone四旋翼无人机代码编译发现的二个问题及解决方法

    ,具体过程记录如下: 编译问题1:找不到FreeRTOS.h头文件。...如图1-1所示,在编译的过程中,发现报没有找到FreeRTOS.h头文件,这应该是C语言程序编译过程中常见的头文件目录环境变量的设置有问题 。...图1-3所示,在“Cmakelists.txt”中已经有查找“FreeRTOS”头文件目录,并设置“FREERTOS_ORIG_INCLUDE_PATH”路径的内容,按理说不应该再报跟“FreeRTOS...考虑到我下载的软件包ESP-IDF可能与ESP-Drone项目所使用的版本可能不一致的缘故,打算修改“Cmakelists.txt”文件手动加入FreeRTOS的头文件目录进行一下测试。...freertos ORIG_INCLUDE_PATH ) 后,为什么没有能够正确设置“FreeRTOS”头文件路径,待后续有时间再进行查证。

    86530

    【二代示波器教程】第15章 FreeRTOS操作系统版本二代示波器实现

    第15章     FreeRTOS操作系统版本二代示波器实现 本章教程为大家讲解FreeRTOS操作系统版本的二代示波器实现。...当前用的5.32版本,也是来自STemWin软件包。 5、FreeRTOS工程的文件系统是采用的FatFS,当前开启了MDK最高等级优化和时间优化。...1、任务栈 因为直接将FreeRTOS的动态内存管理文件heap_4.c中的数组重定向到CCM RAM空间了,那么任务栈以及所有组件需要的内存空间都是来自CCM RAM。...,而且方案一中棘手的软件问题得到了很好的解决,随时都可以操作界面。...不过工程中未对这种方式做FFT和FIR的支持。 总结,二代示波器中最终选择了方案二。 15.6 FreeRTOS系统调试 FreeRTOS的调试比较简单,采用串口打印,按下按键K1即可。

    1.5K10

    FreeRTOS(十):内核控制函数

    FreeRTOS 官网可以找到这些函数,如图所示: https://www.freertos.org/FreeRTOS-quick-start-guide.html 这些函数的含义如表所示: 1、函数...此函数仅用于 X86 架构的处理器,调用此函数以后所有系统时钟就会停止运行,所有创建的任务都会自动的删除掉(FreeRTOS 对此函数的解释是会自动删除所有的任务,但是在 FreeRTOS 的源码中没有找到相关的处理过程...} 函数 vPortEndScheduler()在 port.c 中有定义,这个函数在移植 FreeRTOS 的时候要根据实际使用的处理器来编写,此处没有实现这个函数,只是简单的加了一行断言,函数如下...12、函数 vTaskStepTick() 此 函 数 在 使 用 FreeRTOS 的 低 功 耗 tickless 模 式 的 时 候 会 用 到 , 即 宏 configUSE_TICKLESS_IDLE...tasks.c 中定义。

    45310

    FreeRTOS(五):中断配置和临界段

    FreeRTOS 的中断配置是一个很重要的内容,需要根据所使用的 MCU 来具体配置。...4、临界段代码 临界段代码也叫做临界区,是指那些必须完整运行,不能被打断的代码段,比如有的外设的初始化需要严格的时序,初始化过程中不能被打断。...FreeRTOS 与 临 界 段 代 码 保 护 有 关 的 函 数 有 4 个 :taskENTER_CRITICAL() 、taskEXIT_CRITICAL() 、 taskENTER_CRITICAL_FROM_ISR...任务级临界代码保护使用方法如下: 中断级临界代码保护使用方法如下: 5、FreeRTOS 中断测试实验 设定:FreeRTOS 中优先级低于 configMAX_SYSCALL_INTERRUPT_PRIORITY...然后在某个任务中关闭中断一段时间,查看两个定时器的输出情况。

    2.7K00

    FreeRTOS(三)

    在基础工程中新建一个名为 FreeRTOS 的文件夹: 创建 FreeRTOS 文件夹以后就可以将 FreeRTOS 的源码添加到这个文件夹中,,添加完以后 如图所示: portable 文件夹,我们只需要留下...分组 FreeRTOS_CORE 中的文件就是 FreeRTOS 源码。...FreeRTOS_PORTABLE 分组中的 port.c 和 heap_4.c ,port.c 是 RVDS 文件夹下的 ARM_CM3 中的文件,因为 STM32F103 是 Cortex-M3 内核的...添加相应的头文件路径: 头文件路径添加完成以后编译一下,看看有没有什么错误,结果会发现提示打不开 “FreeRTOSConfig.h”这个文件 这是因为缺少 FreeRTOSConfig.h 文件,...,我们可以使用这个文件,但是建议大家使用正点原子例程中的 FreeRTOSConf.h 文件,这个文件是 FreeRTOS 的系统配置文件,不同的平台其配置不同。

    1.2K10

    移植FreeRTOS到小熊派开发板(STM32L431RCT6)

    添加FreeRTOS配置文件 FreeRTOS的配置文件属于和实际硬件相关的文件,在我们复制过来的文件中并没有,所以要去FreeRTOS源码中提供的demo工程下找份最相关的文件,复制过来: ?...为了便于修改,添加到MDK分组中: ? 3. 添加头文件路径 ? 此时编译,检查是否有错误: ?...修改内核基本配置 因为STM32 HAL中定义了芯片的时钟(SystemCoreClock),所以此处使用一个c语言extern声明此变量在外部,但这是头文件,为了不被汇编器所汇编,可以使用如下宏定义:...最后处理Systick中断函数,因为Systick中断处理函数中还有HAL库的时钟节拍处理,所以并没有交由FreeRTOS实现,而是选择在Systick的中断处理函数中调用FreeRTOS的节拍处理函数...首先在stm32l4xx_it.c的开始包含FreeRTOS头文件: /* Private includes ----------------------------------------------

    1.7K11

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

    相比前面章节的TCP服务器,TCP客户端的测试要稍麻烦些,例子中默认访问的TCP服务器端IP地址是192.168.1.2,端口号1001。...重要提示,操作的过程中务必要优先在电脑端创建TCP服务器并开启,然后再操作板子进行连接。...13.8.3 在程序中配置要访问的远程IP地址和端口 据前面13.8.2小节获取的电脑端IP地址,需要大家配置程序中app_tcpnet_lib.c文件开头的宏定义,其中IP地址填前面获取的192.168.1.2...FreeRTOS配置: FreeRTOS配置向导详情如下:   Minimal stack size 最小任务栈大小,主要是空闲任务,单位字(4个字节)。 当前设置的是512字节。  ...Total heap size FreeRTOS总的堆大小,单位字节。 当前设置的30960字节。   Kernel tick frequency FreeRTOS的系统时钟节拍。

    1.6K21

    全志T113双核异构处理器的使用基于Tina Linux5.0——RTOS简介

    5.4 Preempt/Tina5.0; 列表标准3.5寸主板, 尺寸为:146*102MM; SBC-T113产品功能图: 1、RTOS系统概述 1.1、概述 全志Tina Linux SDK中包含了...RTOS系统,该系统是基于FreeRTOS内核的软件开发包,包含了系统开发用到的内核源码、驱动、工具、组件与应用程序包。...lichee/rtos/include/ ├── arch # 架构相关头文件 ├── FreeRTOS_POSIX # POSIX头文件 ├── ...... └── vsprintf.h...2.1.5、kernel目录 kernel目录主要包含FreeRTOS的kernel源码,全志实现的系统功能相关代码。...├──uart └──watchdog 2.2.2、include目录 include目录主要包含驱动相关头文件以及系统相关接口头文件。

    26510

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

    相比前面章节的TCP服务器,TCP客户端的测试要稍麻烦些,例子中默认访问的TCP服务器端IP地址是192.168.1.2,端口号1001。...重要提示,操作的过程中务必要优先在电脑端创建TCP服务器并开启,然后再操作板子进行连接。...13.8.3 在程序中配置要访问的远程IP地址和端口 据前面13.8.2小节获取的电脑端IP地址,需要大家配置程序中app_tcpnet_lib.c文件开头的宏定义,其中IP地址填前面获取的192.168.1.2...FreeRTOS配置: FreeRTOS配置向导详情如下:   Minimal stack size 最小任务栈大小,主要是空闲任务,单位字(4个字节)。 当前设置的是512字节。  ...Total heap size FreeRTOS总的堆大小,单位字节。 当前设置的30960字节。   Kernel tick frequency FreeRTOS的系统时钟节拍。

    1.7K10

    FreeRTOS(七):任务相关 API 函数

    上一篇学习了 FreeRTOS 的任务基础知识,本文就正式学习如何使用 FreeRTOS 中有关任务的 API 函数。 先学习怎么用,先知其然,后面在知其所以然。...如 果 要 使 用 此 函 数 的 话 需 要 将 宏configSUPPORT_STATIC_ALLOCATION 定义为 1。...此函数原型如下: 2、任务挂起和恢复 API 函数 有时候我们需要暂停某个任务的运行,过一段时间以后在重新运行。这个时候要是使用任务删除和重建的方法的话那么任务中变量保存的值肯定丢失了!...FreeRTOS 的任务挂起和恢复 API 函数如表所示: vTaskSuspend():此函数用于将某个任务设置为挂起态,进入挂起态的任务永远都不会进入运行态。...FreeRTOS 中任务相关的 API 当然不止有这几个,还有很多其他 API,我们在下一篇文章再讲解。但大部分情况下,我们要用的就只有这几个 API:创建、挂起、恢复、删除,就四个。

    62210

    嵌入式系统FreeRTOS — 互斥信号量

    上面就是一个产生优先级翻转问题的现象。 1.3 FreeRTOS 互斥信号量的实现 FreeRTOS 互斥信号量是怎么实现的呢?其实相对于二值信号量,互斥信号量就是解决了一下优先级翻转的问题。...下面我们通过如下的框图来说明一下 FreeRTOS 互斥信号量的实现,让大家有一个形象的认识。 ?...使用 FreeRTOS 的互斥信号量实现串口打印 printf 的互斥访问。 运行过程描述如下: 低优先级任务 Task1 执行过程中先获得互斥资源 printf 的执行。...上面就是一个简单的 FreeRTOS 互斥信号量的实现过程。 1.4 FreeRTOS 中断方式互斥信号量的实现 互斥信号量仅支持用在 FreeRTOS 的任务中,中断函数中不可使用。...2 互 斥 信 号 量 API 函 数 使用如下 18 个函数可以实现 FreeRTOS 的信号量(含计数信号量,二值信号量和互斥信号):  xSemaphoreCreateBinary() 

    1.6K20
    领券