展开

关键词

FreeRTOS(二)

FreeRTOS 官网:https:freertos.org在官网中可以下载到 FreeRTOS 的源码,博主下载了一份,解压后目录如下:FreeRTOS 源码中有三个文件夹,7 个 HTML 格式的网页和 2 个 txt 文档,HTML 网页和 txt 文档看名字就知道是什么东西了,重点在于上面那两个文件夹:FreeRTOSFreeRTOS-Plus,这两个文件夹里面的东西就是 FreeRTOS 1、FreeRTOS 文件夹1)Demo 文件夹里面就是 FreeRTOS 的相关例程:FreeRTOS 针对不同的 MCU 提供了非常多的 Demo,其中就有 ST 的 F1、F4 和 F7 的相关例程 2、FreeRTOS-Plus 文件夹FreeRTOS-Plus 也有 Demo 和 Source,Demo 是一些例程。 就系统本身而言,和 FreeRTOS 里面的一模一样的,所以我们如果只是学习 FreeRTOS 这个系统的话,FreeRTOS-Plus 就没必要看了。

6220

FreeRTOS(一)

博主最近在搞 Sensor hub,跑的是 FreeRTOS,所以来学一学 FreeRTOSFreeRTOS 的资料少,而且大多数是英文的,那为何要选择它?原因如下:1、FreeRTOS 免费! 3、许多软件厂商也使用 FreeRTOS 做本公司软件的操作系统,比如著名的 TouchGFX,其 所有的例程都是基于 FreeRTOS 操作系统的。 FreeRTOS 特点FreeRTOS 是一个可裁剪的小型 RTOS 系统,其特点包括:● FreeRTOS 的内核支持抢占式,合作式和时间片调度。 ● SafeRTOS 衍生自 FreeRTOS,SafeRTOS 在代码完整性上相比 FreeRTOS 更胜一筹。● 提供了一个用于低功耗的 Tickless 模式。

8420
  • 广告
    关闭

    云产品限时秒杀

    云服务器1核2G首年38元,还有多款热门云产品满足您的上云需求

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

    FreeRTOS(三)

    接下来就在 STM32F103 单片机上移植 FreeRTOS。移植 FreeRTOS以正点原子的跑马灯工程为基础,在上面扩展。 在基础工程中新建一个名为 FreeRTOS 的文件夹:创建 FreeRTOS 文件夹以后就可以将 FreeRTOS 的源码添加到这个文件夹中,,添加完以后 如图所示:portable 文件夹,我们只需要留下 这 5 个文件都可以用来作为 FreeRTOS 的内存管理文件,只是它们的实现原理不同,各有利弊。这里我们选择 heap_4.c。 我们可以找找 FreeRTOS 的官方移植工程中会不会有这个文件,打开 FreeRTOS 针对 STM32F103 的移植工程文件,文件夹是 CORTEX_STM32F103_Keil,打开以后官方的移植工程中有这个文件 ,我们可以使用这个文件,但是建议大家使用正点原子例程中的 FreeRTOSConf.h 文件,这个文件是 FreeRTOS 的系统配置文件,不同的平台其配置不同。

    8310

    freeRTOS-&OpenRTOS-&SafeRTOS

    在很早之前我们就曾在公众号里给大家介绍过freeRTOS,并且还介绍过在NXP kenitis KV46上的移植,相信很多猿友应该还有印象,freeRTOS因其占用资源少,开源等特点,应用越来越广泛,尤其是在嵌入式开发领域 ,随着物联网的大热,更是火的一塌糊涂,据官方报道,平均每260秒就有一次freeRTOS的下载。 虽然freeRTOS是开源免费的,但是在做产品时候,还是要注意,从freeRTOS到OpenRTOS在到SafeRTOS的区别,选择合适自己的。不同的license提供的支持也不一样。

    65260

    M-Arch(13)兼容FreeRTOS:让freeRTOS跑起来先

    从这个章节开始,我们把 FreeRTOS 移植进来,同时还考虑兼容性。本文我们将介绍如何移植 FreeRTOS,并基于此实现一个最基本的例子:串口定时打印数据。 关键字:FreeRTOS,STM32,GD32FreeRTOS 介绍为什么要用实时操作系统?软件中的数据交互只有 2 种,一种是轮询,一种是通知。 为什么选用 FreeRTOS?开源免费(良心),够简单(就几个 c 文件),够稳定(大家都在用)。 FreeRTOS 还有其他扩展,包括 http,json,mqtt 等网络的支持,可以按需下它们的扩展包。 rn);#endif#ifdef GD32 printf( hello, this is freertos!

    8740

    FreeRTOS(六):任务

    本文学习一下 FreeRTOS的任务基础知识,分为如下几部分:1、什么是多任务系统2、FreeRTOS 任务与协程3、初次使用3、任务状态4、任务优先级5、任务实现6、任务控制块7、任务堆栈1、什么是多任务系统回想一下我们以前在使用 2、FreeRTOS 任务与协程FreeRTOS 中应用既可以使用任务,也可以使用协程(Co-Routine),或者两者混合使用。 但是 FreeRTOS 目前还没有把协程移除的计划,但是 FreeRTOS 是绝对不会再更新和维护协程了,因此协程大家了解一下就行了。 (4)、FreeRTOS 的延时函数,此处不一定要用延时函数,其他只要能让 FreeRTOS 发生任务 切换的 API 函数都可以,比如请求信号量、队列等,甚至直接调用任务调度器。 FreeRTOS 的任务函数和 UCOS 的任务函数模式基本相同的,不止 FreeRTOS,其他 RTOS 的任务函数基本也是这种方式的。

    7910

    FreeRTOS系列第8篇---FreeRTOS内存管理

    ID:技术让梦想更伟大作者:李肖遥FreeRTOS提供了几个内存堆管理方案,有复杂的也有简单的。其中最简单的管理策略也能满足很多应用的要求,比如对安全要求高的应用,这些应用根本不允许动态内存分配的。 FreeRTOS也允许你自己实现内存堆管理,甚至允许你同时使用两种内存堆管理方案。同时实现两种内存堆允许任务堆栈和其它RTOS对象放置到快速的内部RAM,应用数据放置到低速的外部RAM。 为了避免这个问题,FreeRTOS在移植层保留内存分配API函数。移植层在RTOS核心代码源文件之外(不属于核心源代码),这使得不同的应用程序可以提供适合自己的应用实现。 FreeRTOS下载包中提供5种简单的内存分配实现,本文稍后会进行描述。用户可以适当的选择其中的一个,也可以自己设计内存分配策略。 应用程序直接调用pvPortMalloc() 和 vPortFree()函数,而不仅是通过FreeRTOS API间接调用。

    25720

    FreeRTOS——基本简介

    而目前在研的该系列产品并非高大上的产品,MCU存储空间和性能一般,为此选择了目前嵌入式 物联网领域应用较广泛的FreeRTOS操作系统。 【FreeRTOS特点】:摘自原子哥开发手册(学习中,很好的资料,感谢)? 【源码来源及文件简介】:可以从官网http:www.freertos.org 直接下载源码,目前最新版本是10.1.11)下载后文件包含FreeRTOSFreeRTOS-Plus,前者是主要的源码文件 2)打开 FreeRTOS,可以看到Demo、license、Source,Demo包含针对部分CPU大厂及开发环境的示例源码,license为相关许可信息,Source就是FreeRTOS的内核源码了

    34650

    FreeRTOS系列第6篇---FreeRTOS内核配置说明

    整理:李肖遥FreeRTOS内核是高度可定制的,使用配置文件FreeRTOSConfig.h进行定制。每个FreeRTOS应用都必须包含这个头文件,用户根据实际应用来裁剪定制FreeRTOS内核。 只有FreeRTOS在响应内存分配请求时发现堆内存不足才会返回NULL。 FreeRTOS提供了一个灵活的机制,使得应用程序可以使用线程本地存储指针来读写线程本地存储。具体参见后续文章《FreeRTOS系列第12篇---FreeRTOS任务应用函数》。 详细描述见FreeRTOS software timers 。configTIMER_QUEUE_LENGTH设置软件定时器命令队列的长度。详细描述见FreeRTOS software timers。 FreeRTOS内核代码的关键点都会调用configASSERT( x )函数,如果参数x为0,则会抛出一个错误。这个错误很可能是传递给FreeRTOS API函数的无效参数引起的。

    29821

    FreeRTOS移植-基于STM32F407

    下面需要移植FreeRTOS了,将FreeRTOS的源码文件复制到工程文件夹中,一些用不到的文件可删除(哪些文件需要用到可参考上一篇的源码结构分析部分),然后在Keil中也创建一个FreeRTOS目录, 获取本文用到的工程代码:微信公众号回复“freertos工程模板”压缩包内有3个文件夹:1. Template_lib:建立工程需要的库文件,包括STM32库文件(v1.4.0)和FreeRTOS库文件(v9.0.0)2. Template_noOS:基于Keil5.15的STM32F407工程模板(未使用FreeRTOS)3. Template_FreeRTOS:基于Keil5.15的STM32F407 + FreeRTOS工程模板

    39511

    FreeRTOS与uCOS II的比较

    目前嵌入式主流实时系统(RTOS)有uCOS、FreeRTOS,之所以很多第三方库都有在FreeRTOS上的应用Demo,是因为FreeRTOS免费。 因此,理论上讲,FreeRTOS 可以管理超过64个任务,而uCOS只能管理64个。4。FreeRTOS 是在商业上免费应用。uCOS在商业上的应用是要付钱的。 uCOS的支持比FreeRTOS 多。除操作系统外,FreeRTOS只支持TCPIP, uCOS则有大量外延支持,比如FS, USB, GUI, CAN等的支持。3。 FreeRTOS是一个可裁剪、可剥夺型的多任务内核,而且没有任务数限制。FreeRTOS提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。 FreeRTOS是用C和汇编来写的,其中绝大部分都是用C语言编写的,只有极少数的与处理器密切相关的部分代码才是用汇编写的,FreeRTOS结构简洁,可读性很强!

    25420

    FreeRTOS(四):命名规则

    最近在看 FreeRTOS 的源码,发现其命名规则和 Linux 很不一样,遂写文章记录一下。 1.FreeRTOS 编码标准FreeRTOS的核心源代码遵从 MISRA 编码标准指南。 MISRA-C全称 Motor Industry Software Reliability Association (汽车工业软件可靠性协会)FreeRTOS 源代码也有一些是不符合 MISRA 标准的 3 数据类型FreeRTOS 使用的数据类型主要分为 stdint.h 文件中定义的和自己定义的。其中 char 和 char * 定义的变量要特别注意。 不使用 C++ 风格的双斜线()注释布局:FreeRTOS的源代码被设计成尽可能的易于查看和阅读。

    6520

    FreeRTOS系列第9篇---FreeRTOS任务概述基础篇

    目前协程很少被使用到,因此对于协程FreeRTOS作者既没有把它删除也没有进一步开发。所以本系列文章以后不会对协程过多描述,包括其API函数。 FreeRTOS调度器确保处于最高优先级的就绪或运行态任务获取处理器,换句话说,处于运行状态的任务,只有其中的最高优先级任务才会运行。任何数量的任务可以共享同一个优先级。 在较新的FreeRTOS移植包中,如果 试图从一个任务中返回,将会调用configASSERT()(如果定义的话)。 如果使用FreeRTOS-MPU(在官方下载包中,为Cortex-M3内核写了两个移植方案,一个是普通的FreeRTOS移植层,还有一个是FreeRTOS-MPU移植层。 在使用FreeRTOS-MPU的情况下,使用xTaskCreate()函数可以创建运行在特权模式或用户模式(见下面对函数参数uxPriority的描述)的任务。

    41140

    freeRTOS信号量学习

    信号量同样是RTOS学习中很重要的一节,信号量可以用在共享资源或者同步任务中,对执行权的控制,谁拥有信号量谁拥有执行权,在freeRTOS中信号量和互斥量有点不同,关于信号量的更多描述可以参考官网相关网页描述 这根据使用的API函数会有所不同,创建信号量主要有xSemaphoreCreateBinary()和xSemaphoreCreateBinaryStatic() ,使用前者创建信号量,则所需的内存将会自动从freeRTOS 的堆上分配,如果是使用后者创建的信号量,则所需内存由应用程序分配,且后者API需要另外的参数,在编译的时候静态分配给信号量,前者则是动态分配,关于静态分配和动态分配可以参阅freeRTOS官网详细信息。 semaphore. * xSemaphore = xSemaphoreCreateBinary(); if( xSemaphore == NULL ) { * There was insufficient FreeRTOS

    70350

    FreeRTOS】事件标志组

    FreeRTOS 中断方式事件标志组的实现FreeRTOS 中断方式事件标志组的实现是指中断函数和 FreeRTOS 任务之间使用事件标志。 如果 FreeRTOS 工程的中断函数中没有调用 FreeRTOS 的事件标志组 API 函数,与裸机编程是一样的。 如果 FreeRTOS 工程的中断函数中调用了 FreeRTOS 的事件标志组的 API 函数,退出的时候要检测是否有高优先级任务就绪,如果有就绪的,需要在退出中断后进行任务切换,这点跟裸机编程稍有区别事件标志组 而 FreeRTOS 不允许在中断服务程序和临界段中执行不确定性操作。 为了不在中断服务程序中执行,就通过此函数给FreeRTOS 的 daemon 任务(就是 FreeRTOS 的定时器任务)发送消息,在 daemon 任务中执行事件标志的置位操作。

    33010

    freeRTOS事件组学习

    像其他RTOS一样,freeRTOS同样有对事件标志位的创建和处理,在中断中可以通过事件组传递信息给其他的任务,那么如何创建事件组呢? if( xCreatedEventGroup == NULL ) { * The event group was not createdbecause there was insufficient FreeRTOS 更多有关使用freeRTOS事件组的问题可以参阅官方文档或网站。具体在我们的工程应用中,比如可以在串口接收中断使用事件组。

    87960

    FreeRTOS 信号量

    简述FreeRTOS 信号量和互斥锁是基于队列实现的, 队列介绍见 >。 FreeRTOS 信号量包括二进制信号量、计数信号量、互斥锁和递归互斥锁。 这篇文章介绍如何使用这些信号量就行任务间同步以及其实现。 FreeRTOS 在 8.02 版本提供了一种更加轻量级的任务同步, 任务通知, 由于该方式是集合在任务控制块的,所以不需要额外的内存消耗,推荐使用。 二进制信号量实现以下看看 FreeRTOS 如何基于队列实现信号量的。 FreeRTOS 信号量记录到此结束。----参考FreeRTOS Mutexs SemaphoresFreeRTOS API

    1.5K20

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

    文章目录教程目录1.1 FreeRTOS目录结构1.1 FreeRTOS目录结构1.2 核心文件1.3 移植时涉及的文件1.4 头文件相关 1.4.1 头文件目录1.4.2 头文件1.5 内存管理1.6 ,篇章会比较多,为方便同学们阅读,点击这里可以查看文章的 目录列表,目录列表页面地址:https:blog.csdn.netthisway_diyarticledetails1213994841.1 FreeRTOS 目录结构以Keil工具下STM32F103芯片为例,它的FreeRTOS的目录如下:1.1 FreeRTOS目录结构以Keil工具下STM32F103芯片为例,它的FreeRTOS的目录如下:主要涉及2 里面有2个文件:port.cportmacro.h1.4 头文件相关1.4.1 头文件目录FreeRTOS需要3个头文件目录:FreeRTOS本身的头文件:FreeRTOSSourceinclude移植时用到的头文件 参考文章:FreeRTOS说明书吐血整理【适合新手+入门】后续章节会详细讲解。

    8430

    FreeRTOS 消息队列

    这一章介绍 FreeRtos 消息队列的基本使用, 重点分析其实现的方式。 FreeRTOS 的队列内容是内存拷贝, 我们将要发送的内容的地址传递给发送函数,该函数会将地址上的内容拷贝到自己的存储区域;而接收函数会将消息内容拷贝到我们传递给他的指针指向的内存区域。 注意,在中断中使用 FreeRTOS 的接口, 需是结尾带有 FromISR的。 因为 FreeRTOS 是一个实时操作系统, 为了保证中断发生时的实时响应, 做了优先级设置。 到此, 对 FreeRTOS 队列的介绍完毕。后续会专门一章分析下其信号量和互斥锁 基于队列的实现。----参考FreeRTOS QueueFreeRTOS Queue API

    1.3K20

    FreeRTOS(九):软件定时器

    FreeRTOS 也提供了定时器功能,不过是软件定时器,软件定时器的精度肯定没有硬件定时器那么高,但是对于普通的精度要求不高的周期性处理的任务来说够了。 当 MCU 的硬件定时器不够的时候就可以考虑使用 FreeRTOS 的软件定时器。 定时器服务Daemon 任务定时器是一个可选的、不属于 FreeRTOS 内核的功能,它是由定时器服务(或 Daemon)任务来提供的。 FreeRTOS 提供了很多定时器有关的 API 函数,这些 API 函数大多都使用 FreeRTOS的队列发送命令给定时器服务任务。这个队列叫做定时器命令队列。 FreeRTOS 提供了两个 API 函数来完成软件定时器的复位:2、创建软件定时器3、开启软件定时器如果软件定时器停止运行的话可以使用 FreeRTOS 提供的两个开启函数来重新启动软件定时器。

    7310

    扫码关注云+社区

    领取腾讯云代金券