• 2024-07-05【嵌入式——FreeRTOS】任务通知
    【嵌入式——FreeRTOS】任务通知简介任务通知值的更新方式任务通知优势任务通知劣势任务通知值和通知状态任务通知值的类型任务通知状态相关API发送通知相关API函数接收通知相关API任务通知模拟二值信号量代码示例任务通知模拟消息邮箱代码示例任务通知模拟事件标志组
  • 2024-07-04FreeRTOS之队列上锁和解锁(详解)
     这篇文章将记录我学习实时操作系统FreeRTOS的队列上锁和解锁的知识,在此分享给大家,希望我的分享能给你带来不一样的收获!目录一、简介 二、队列上锁函数prvLockQueue()1、函数初探2、应用示例  三、队列解锁函数prvUnLockQueue() 1、函数初探及详细注释详细注释解
  • 2024-07-03FreeRTOS移植到STM32
    本内容主要是讲解关于如果把FreeRTOS移植到STM32中去的操作。明白各部分的作用以及打通思路,具体操作按照下列进行相应的操作。第一:早一个STM32的裸机程序我们这里用的是STM32F103的芯片为例。 二、去官网上下载FreeRTOSV9.0.0源码在移植之前,我们首先要获取到
  • 2024-07-01FreeRTOS静态创建任务分析
    #defineconfigSUPPORT_STATIC_ALLOCATION        1  设置了静态创建任务需要重新定义这2个函数,由程序员进行分配任务空间(空闲任务)(定时任务)在调度器里被使用这2个函数空闲任务定时任务定义空闲分配空间函数和定时分配空间函数静态创建任务内部
  • 2024-07-01【FreeRTOS】两个Delay函数
    目录0前言1Delay函数1.1两个Delay函数1.2总结2程序2.1函数修改2.2总结0前言在我们实际开发过程中,一般都用事件开发不要使用死循环1Delay函数1.1两个Delay函数FreeRTOS中有两个Delay函数:vTaskDelay:至少等待指定个数的TickInterrupt才能变为就绪
  • 2024-06-24QEMU专栏 - 使用 QEMU 调试 FreeRTOS示例
    写在最前这几天一直在研究QEMU中多核ARM加载不同镜像的问题,一直不得其解,这部分后续可以分几个不分拆解下,看看为什么会出现这种问题.今天先来看看如何使用QEMU来调试FreeRTOS的示例代码.编译并运行FreeRTOS示例代码(基础版本)首先是下载代码,这种只需要看最新代
  • 2024-06-20RTX5全家桶源码综合模板发布,含FreeRTOS内核版本,将其打造成直接面向实际项目应用的综合框架(2024-06-19)
    【说明】1、RTX5全家桶的优势就是简单易用,初学的话,上手很快,稳定性也是杠杠的,且容易做稳定。2、同时RTX5也是有汽车级,工业级,医疗和铁路安全认证,只是安全级别比ThreadX要稍微低些。3、当前RTX5中间件源码已经开源了,大大方便大家问题的排查。同时提供了FreeRTOS内核版本,方便大家选
  • 2024-06-18FreeRTOS 简单内核实现8 时间片轮询
    0、思考与回答0.1、思考一为什么要增加时间片轮询?目前的RTOS内核已经支持抢占优先级,即高优先级的任务会抢占低优先级的任务得到执行,但是对于同等优先级的任务,如果不支持时间片轮询,则只能有一个任务运行,并且由于优先级相同所以除延时阻塞到期外也不会发生任务调度,因此需要增加
  • 2024-06-18FreeRTOS 体验教程:3.如何用互斥量实现FreeRTOS多线程访问共享资源?
    FreeRTOS互斥量使用教程互斥量(Mutex)是一种特殊的信号量,用于管理对共享资源的访问。在FreeRTOS中,互斥量的句柄类型依然是xSemaphoreHandle。本文将详细介绍如何在FreeRTOS中创建和使用互斥量,并通过实例展示其运行效果。1.创建互斥量在FreeRTOS中,创建互斥量非常简
  • 2024-06-18深入探究RTOS的任务调度
    阅读引言:此文将会从一个工程文件,一步一步的分析RTOS的任务调度实现,这里选用FreeRTOS分析,别的也差不多的,可能在细节上有少许不一样。目录1,常见嵌入式实时操作系统2,任务调度的本质3,任务调度分析开始1,常见嵌入式实时操作系统操作系统名称特点许可类型适用
  • 2024-06-17FreeRTOS简单内核实现6 优先级
    0、思考与回答0.1、思考一如何实现RTOS内核支持多优先级?因为不支持优先级,所以所有的任务都插入了一个名为pxReadyTasksLists的就绪链表中,相当于所有任务的优先级都是一致的,那如果我们创建一个就绪链表数组,数组下标代表优先级,优先级为x的任务就插入到pxReadyTasksLists[x
  • 2024-06-17FreeRTOS简单内核实现5 阻塞延时
    0、思考与回答0.1、思考一为什么FreeRTOS简单内核实现3任务管理文章中实现的RTOS内核不能看起来并行运行呢?Task1延时100ms之后执行taskYIELD()切换到Task2,Task2延时500ms之后执行taskYIELD()再次切换Task1,在延时期间两个任务均占用MCU,所以只能一个任务执行
  • 2024-06-16FreeRTOS简单内核实现4 临界段
    @目录0、思考与回答0.1、思考一0.2、思考二0.3、思考三1、关中断1.1、带返回值1.2、不带返回值2、开中断3、临界段4、应用0、思考与回答0.1、思考一为什么需要临界段?有时候我们需要部分代码一旦这开始执行,则不允许任何中断打断,这段代码称为临界段0.2、思考二如何实现临界段
  • 2024-06-15FreeRTOS简单内核实现3 任务管理
    0、思考与回答0.1、思考一对于Cotex-M4内核的MCU在发生异常/中断时,哪些寄存器会自动入栈,哪些需要手动入栈?会自动入栈的寄存器如下R0-R3:通用寄存器R12:通用寄存器LR(LinkRegister):链接寄存器,保存返回地址PC(ProgramCounter):程序计数器,保存当前执行指令的地址xPSR(Pro
  • 2024-06-15FreeRTOS简单内核实现2 双向链表
    FreeRTOSKernelV10.3.1FreeRTOS的list.c/list.h文件中有3个数据结构、2个初始化函数、2个插入函数、1个移除函数和一些宏函数,链表是FreeRTOS中的重要数据结构,下述“1、数据结构”和“2、操作链表”两个小节内容主要对其原理进行讲解1、数据结构1.1、xLIST_IT
  • 2024-06-14FreeRTOS 简单内核实现1 前言
    0、写在前面为深入理解RTOS内核工作机制,笔者制作了名为“FreeRTOS内核简单实现”的项目专栏,目标为自己动手从0到1编程一个简单的RTOS内核,从而实现任务并行工作的效果,主要实现了以下功能静态创建任务临界段保护支持任务多优先级任务阻塞延时时间片轮询注意:本
  • 2024-06-12FreeRTOS学习笔记-基于stm32(14)内存管理
    一、FreeRTOS内存管理简介        FreeRTOS有两种方法来创建任务,队列,信号量等,一种动态一种静态。静态方法需要手动定义任务堆栈。使用动态内存管理的时候FreeRTOS内核在创建任务、队列、信号量的时候会动态的申请RAM。    我们在移植FreeRTOS时可以看到
  • 2024-06-12【FreeRTOS】事件组 event group(附源码)
    引言:事件组是一种用于同步多个任务之间的状态和行为的机制。在操作系统中,事件组通常由操作系统提供,用于实现任务间的通信和同步。事件组通常包含一组独立的事件或标志,每个事件或标志都可以表示一种特定的状态或条件。任务可以等待事件组中的一个或多个事件被设置,也可以设置、
  • 2024-06-08FreeRTOS
    初识FreeRTOS什么是FreeRTOSRTOS(实时操作系统)并不是指某一特定的操作系统,而是指一类操作系统,例如,µC/OS,FreeRTOS,RTX,RT-Thread等这些都是RTOS类的操作系统。因此,从FreeRTOS的名字中就能看出,FreeROTS是一款免费的实时操作系统。操作系统是允许多个任务“同时运行”
  • 2024-06-07CUBEMX生成freertos代码编译时报错
    按cubemx配置freertos一步步来的,结果发现编译时有151个报错,情况如下SYS配置freertos配置编译后报错使用编译器5,6,6.19都报错,有没有大佬知道解决办法
  • 2024-06-04FreeRTOS基础(十):FreeRTOS任务状态查询API函数介绍
         本篇博客较为基础,介绍时间片调度和常用的任务状态查询API函数接口使用。目录一、时间片调度简介二、任务状态查询API函数介绍2.1常用API函数总览2.2常用API函数介绍2.2.1获取指定任务优先级2.2.2 改变某个任务的任务优先级2.2.3 获取系统中任务的任
  • 2024-06-04九、FreeRTOS学习笔记-列表和列表项
    列表和列表项的简介列表是FreeRTOS中的一个数据结构,概念上和链表有点类似,列表被用来跟踪FreeRTOS中的任务。列表项就是存放在列表中的项目列表相当于链表,列表项相当于节点,FreeRTOS中的列表是一个双向环形链表列表的特点:列表项间的地址非连续的,是人为的连接到一起的。列表
  • 2024-06-04FreeRTOS-队列基础
    以下内容为个人的初学记录,如有错误,欢迎指正一、概述队列用于数据的传输,数据按照**“先进先出”**(FIFO)的规则;一般情况下,数据被放入到底部(Back)指向的位置(除非使用向头部写入数据的函数),被头部(Front)指向时被读出队列能够进行阻塞、唤醒,当接收任务发现队列为空时,会进入阻塞而
  • 2024-06-03[FreeRTOS 基础知识] 堆
    文章目录堆的概念使用C语言实现堆堆空间解析堆的概念所谓的堆就是一块空间的内存,可以来管理这块内存。从这块内存中取出一部分然后再释放回去。使用C语言实现堆charheap_buf[1024];//定义一个堆空间intpos=0;//当前位
  • 2024-06-03八、FreeRTOS学习笔记-临界段代码保护及调度器挂起与恢复
    临界段代码保护什么是临界段:临界段代码也叫做临界区,是指那些必须完整运行,不能被打断的代码段适用场合如:问题:什么可以打断当前程序的运行?1、临界段代码保护函数介绍FreeRTOS在进入临界段代码的时候需要关闭中断,当处理完临界段代码以后再打开中断函数描述taskENTE