FreeRTOS

2024/4/11 12:45:19

17 - FreeRTOS信号量API

FreeRTOS的信号量包括二进制信号量、计数信号量、互斥信号量(以后简称互斥量)和递归互斥信号量(以后简称递归互斥量)。我们可以把互斥量和递归互斥量看成特殊的信号量。信号量API函数实际上都是宏,它使用现有的队列机制…

FreeRTOS:信号量

目录 一、信号量是什么二、二值信号量2.1二值信号量简介2.2创建二值信号量2.2.1函数 vSemaphoreCreateBinary()2.2.2函数xSemaphoreCreateBinary()2.2.3 函数 xSemephroeCreateBinaryStatic()2.2.4二值信号量创建过程分析 2.3释放信号量2.3.1函数 xSemaphoreGive ()2.3.2函数 x…

第7章_freeRTOS入门与工程实践之模块使用说明与STM32CubeMX配置

本教程基于韦东山百问网出的 DShanMCU-F103开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id724601559592 配套资料获取:https://rtos.100ask.net/zh/freeRTOS/DShanMCU-F103 freeRTOS系列教程之freeRTOS入…

FreeRTOS中断安全API和推迟中断处理

前面的文章都提到了部分FreeRTOS的API有中断安全的版本,下面详解一下,为什么会这样。 参考资料: 《Mastering the FreeRTOS™ Real Time Kernel》-Chapter 6 Interrupt Management 6.2 Using the FreeRTOS API from an ISR/6.3 Deferred In…

FreeRTOS任务

一、单任务系统和多任务系统 单任务系统的编程方式,即裸机的编程方式,这种编程方式的框架一般都是在 main()函数 中使用一个大循环,在循环中顺序地调用相应的函数以处理相应的事务,这个大循环的部分可 以视为应用程序的后台&#…

ESP32设备驱动-FreeRTOS多核运行

FreeRTOS多核运行 文章目录 FreeRTOS多核运行1、EPS32双核介绍2、FreeRTOS介绍3、软件准备4、硬件准备5、FreeRTOS多核使用5.1 如何查询程序在哪个CPU中运行5.2 在指定CPU中创建任务5.3 完整示例在本文中,我们将介绍如何使用 FreeRTOS 和 Arduino IDE 使用 ESP32 双核。 ESP32…

【ESP32+freeRTOS学习笔记-(十)任务通知机制】

目录1、任务通知(Task Notifications)概念1.1 概念1.2 使用任务通知的优势1.3 无法使用任务通知的场景2、使用任务通知2.1 xTaskNotifyGive()2.2 ulTaskNotifyTake()2.3 使用任务通知代替信号量,方法12.4 使用任务通知代替信号量,…

FreeRTOS:列表和列表项

要想看懂 FreeRTOS 源码并学习其原理,有一个东西绝对跑不了,那就是 FreeRTOS 的列表和列表项。列表和列表项是FreeRTOS的一个数据结构, FreeRTOS 大量使用到了列表和列表项,它是 FreeRTOS 的基石。要想深入学习并理解 FreeRTOS&am…

FreeRTOS实时操作系统(一)RTOS的基本概念

文章目录 前言操作系统分类编程风格纠正FreeRTOS介绍任务调度方式任务状态 总结 前言 最近买了把75系列的机械键盘,没有数字区域,想起来稚辉君曾经做过一把客制化键盘,于是下载了资料准备学一学,网上很多开源的都是用的ATMEGA32U…

详解FreeRTOS:互斥信号量和递归互斥信号量(高级篇—3)

目录 1、互斥信号量 1.1、互斥信号量运作机制 1.2、创建互斥信号量

【RTOS】快速体验FreeRTOS所有常用API(1)工程创建

目录 一、工程创建1.1 新建工程1.2 配置RCC1.3 配置SYS1.4 配置外设1)配置 LED PC132)配置 串口 UART13)配置 OLED I2C1 1.5 配置FreeRTOS1.6 工程设置1.7 生成代码1.8 keil设置下载&复位1.9 添加用户代码 本工程皆在快速体验FreeRTOS所有…

全志R128应用开发案例——获取真随机数

获取真随机数 本文案例代码下载地址获取真随机数案例代码https://www.aw-ol.com/downloads?cat24 R128 内置了TRNG,一个真随机数发生器,随机源是 8 路独立的环形振荡器,由模拟器件电源噪声产生频率抖动,用低频始终重采样&#…

FreeRTOS入门教程(事件组概念和函数使用)

文章目录 前言一、事件组概念二、事件组和信号量,队列的区别三、事件组相关函数三、事件组应用示例1.等待多个事件2.任务同步 总结 前言 本篇文章将带大家学习什么是事件组以及如何使用事件组。 一、事件组概念 事件组通常是由一组位(bits&#xff09…

分配栈空间的三种方式(基于适配qemu的FreeRTOS分析)

1、定义全局的数组 定义的全局数组属于bss段,相当于把bss段的一部分作为栈空间,栈空间的大小就是数组的大小如果把栈空间放在bss段,则在bss段清零时会多清零一段地址空间 2、在链接脚本中指定 用链接脚本在所有段的后面增加stack段&#xff…

5-1 - FreeRTOS的不同内存管理方案

FreeRTOS的内存管理 近两天从前辈的博客上看到非常好的关于freeRTOS的各项细节解析,之前一直对freeRTOS的内存管理方式有多种而感到疑惑,看了前辈文章后醍醐灌顶,在此做下记录并表示敬意!FreeRTOS提供的内存分配方案分别位于不同…

11 - FreeRTOS任务通知

每个RTOS任务都有一个32位的通知值,任务创建时,这个值被初始化为0。RTOS任务通知相当于直接向任务发送一个事件,接收到通知的任务可以解除阻塞状态,前提是这个阻塞事件是因等待通知而引起的。发送通知的同时,也可以可选…

FreeRtos第一个task是怎么run起来的

第一个task是怎么起来的呢?分析完vTaskStartScheduler,就会有答案了。 那vTaskStartScheduler()干了啥呢? 一、创建prvIdleTask task 二、xTimerCreateTimerTask里创建prvTimerTask task 三、初始化一些全局变量 3.1 xNextTaskUnblockTime…

FreeRTOS 消息队列 详解

目录 什么是队列? 消息队列特点 1. 数据入队出队方式 2. 数据传递方式 3. 多任务访问 4. 出队、入队阻塞 消息队列相关 API 函数 1. 创建队列 2. 写队列 3. 读队列 消息队列实操 什么是队列? 队列又称消息队列,是一种常用于任务间…

嵌入式工程师面试题-RTOS_Linux

RTOS部分 RTOS共同部分 操作系统与前后程序区别 前后台程序:各个模块顺序在一个死循环循环执行!除了中断,各个模块之间是不会相互打断,上个模块执行完了才到下个模块!实时操作系统:各个模块任务是个独立死…

4 - Cortex-M内核使用FreeRTOS特别注意事项

在阅读本文之前,有两个定义在FreeRTOSConfig.h中的宏,你必须先明白它们是什么意思,《FreeRTOS内核配置说明》一文中,讲解了这两个宏: configKERNEL_INTERRUPT_PRIORITYconfigMAX_SYSCALL_INTERRUPT_PRIORITY FreeRTOS与…

FreeRTOS qemu mps2-an385 bsp 移植制作 :系统运行篇

相关文章 FreeRTOS qemu mps2-an385 bsp 移植制作 :环境搭建篇 FreeRTOS qemu mps2-an385 bsp 移植制作 :系统启动篇 开发环境 Win10 64位 VS Code,ssh 远程连接 ubuntu VMware Workstation Pro 16 Ubuntu 20.04 FreeRTOSv202212.01&a…

FreeRTOS 二值信号量 详解

目录 什么是信号量? 什么是二值信号量? 二值信号量相关 API 函数 1. 创建二值信号量 2. 释放二值信号量 3. 获取二值信号量 二值信号量实操 什么是信号量? 信号量(Semaphore),是在多任务环境下使用的…

第2章_freeRTOS入门与工程实践之单片机程序设计模式

本教程基于韦东山百问网出的 DShanMCU-F103开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id724601559592 配套资料获取:https://rtos.100ask.net/zh/freeRTOS/DShanMCU-F103 freeRTOS系列教程之freeRTOS入…

详解FreeRTOS:FreeRTOS任务调度器开启过程源码分析(进阶篇—5)

目录 1、任务调度器开启函数分析 2、内核相关硬件初始化函数分析 3、使能 FPU 函数分析

FreeRTOS深入教程(信号量源码分析)

文章目录 前言一.创建信号量二.释放信号量三.获取信号量成功获取获取不成功 总结 前言 本篇文章将为大家讲解信号量,源码分析。 在 FreeRTOS 中,信号量的实现基于队列。这种设计的思想是利用队列的特性来实现信号量,因为信号量可以被视为只…

FreeRTOS内存管理

文章目录 为什么不使用malloc()和free()来进行分配以及释放内存?内存管理应用场景RTOS内存管理方案heap_1.c数据结构内存申请 pvPortMalloc()其他函数 heap_2.c数据结构内存申请函数 pvPortMalloc()内存初始化函数prvHeapInit()内存释放函数vPortFree() heap_3.chea…

20_FreeRTOS低功耗模式

目录 低功耗模式简介 STM32低功耗模式 Tickless模式详解 Tickless模式相关配置 实验源码 低功耗模式简介 很多应用场合对于功耗的要求很严格,比如可穿戴低功耗产品、物联网低功耗产品等。 一般MCU都有相应的低功耗模式,裸机开发时可以使用MCU的低功耗模式。 FreeRTOS也…

FreeRTOS:中断配置

目录 一、Cortex-M 中断1.1中断简介1.2中断管理简介1.3优先级分组定义1.4优先级设置1.5用于中断屏蔽的特殊寄存器1.5.1PRIMASK 和 FAULTMASK 寄存器1.5.2BASEPRI 寄存器 二、FreeRTOS 中断配置宏2.1configPRIO_BITS2.2configLIBRARY_LOWEST_INTERRUPT_PRIORITY2.3configKERNEL_…

S32K在FreeRTOS下的外设中断设置

如果在开发过程中遇到如下报错,你就可以继续往下看: configASSERT( ucCurrentPriority > ucMaxSysCallPriority ); 描述 在调用外设blocking数据传输接口时(比如LPSPI_DRV_MasterTransferBlocking),需要在外设中断…

适用于FreeRTOS初学者,FreeRTOS整体知识框架

写在前面:因为实际使用需求,学习了一段时间FreeRTOS。从FreeRTOS的市场占有率来看,网上的资料应该很多,但是在学习过程中尤其是遇到问题的时候,发现真正有用的资料并不多。 所以写这篇文章的目的有二。一:方…

STM32F429IG移植FreeRTOS

目录一,移植文件1.1 建立文件夹1.2 移植底层文件1.2.1 Source1.2.2 RVDS1.2.3 MemMang1.2.4 FreeRTOSConfig.h1.2.5 user_app_task.C1.3 添加到工程,添加路径二,处理2.1 FreeRTOSConfig.h2.2 stm32f4xx_it.h三,测试3.1 main.c3.2 …

STM32基于FreeRTOS的多任务程序案例

STM32基于FreeRTOS的多任务程序案例一、初步了解FreeRTOS二、实验要求三、基于FreeRTOS的多任务程序案例四、参考链接使用工具 野火stm32mini开发板 Keil uVision5 野火多功能调试助手 一、初步了解FreeRTOS RTOS Real Time Operating System 实时操作系统。 FreeRTOS FreeRTO…

学习FreeRTOS(1):实验环境

学习FreeRTOS(1):实验环境 FreeRTOS实验环境:指导手册《Mastering the FreeRTOS Real Time Kernel A Hands-On Tutorial Guide》;开发板NUCLEO-F303K8;代码生成器STM32CubeMX;集成开发环境TrueSTUDIO。 http://blog.…

13_FreeRTOS消息队列

目录 队列简介 FreeRTOS队列特点 队列操作基本过程 队列结构体介绍 队列结构体整体示意图 队列相关API函数介绍 创建队列相关API函数介绍 往队列写入消息API函数 往队列写入消息函数入口参数解析 从队列读取消息API函数 实验源码 队列简介 队列是任务到任务、任务…

stm32之freeRTOS驱动小车

该文章记录将stm32之智能小车总结移植到freeRTOS上,期间也遇到了好些问题,这里做下记录。也是对freeRTOS的一个应用实践。 一、freeRTOS工程的创建 工程是利用CubeMX进行创建的,挺简单的,有空再试下手动移植freeRTOS。 启用软件定…

FreeRTOS中临界段的保护(笔记)

目录 临界段的定义Cortex-M内核快速关开关中断的指令关中断开中断进入临界段的宏退出临界段的宏进入临界段,不带中断保护, 不能嵌套进入临界段,带中断保护版本,可以嵌套退出临界段,不带中断保护版本,不能嵌…

STM32CubeMX移植FreeRTSO

这里只是简单介绍了STM32CubeMX移植FreeRTSO基本步骤,对于其他STM32相关配置及工程建立参考其他的。 1、右侧界面下拉System Core选择SYS,在右侧的Timebase Sourse选择TIM1或其他的,不要选择SysTick,因为FreeRTOS要用。这样HAL_D…

8 - FreeRTOS任务控制

FreeRTOS任务控制API函数主要实现任务延时、任务挂起、解除任务挂起、任务优先级获取和设置等功能。 相对延时 函数描述 void vTaskDelay( portTickTypexTicksToDelay ) 调用vTaskDelay()函数后,任务会进入阻塞状态,持续时间由vTaskDelay()函数的参数…

2 - FreeRTOS在Cortex-M3上的移植

FreeRTOS下载包的文件结构 在FreeRTOS官方网站可以下载到最新版的FreeRTOS包,我这里使用的是V8.2.3版本。下载包内的总文件数量多的令人生畏,但文件结构却很简洁。《FreeRTOS入门指南》一文的第3节详细描述了下载包文件结构,我们这里只是简单…

3 - FreeRTOS内核配置说明

FreeRTOS内核是高度可定制的,使用配置文件FreeRTOSConfig.h进行定制。每个FreeRTOS应用都必须包含这个头文件,用户根据实际应用来裁剪定制FreeRTOS内核。这个配置文件是针对用户程序的,而非内核,因此配置文件一般放在应用程序目录…

10 - FreeRTOS内核控制

内核控制的一些功能需要移植层提供,为了方便移植,这些API函数用宏来实现,比如上下文切换、进入和退出临界区、禁止和使能可屏蔽中断。内核控制函数还包括启动和停止调度器、挂起和恢复调度器以及用于低功耗模式的调整系统节拍函数。 强制上下…

12 - 使用任务通知实现命令行解释器

虽然这是介绍FreeRTOS系列的文章,但这篇文章偏重于命令行解释器的实现。这一方面是因为任务通知使用起来非常简单,另一方面也因为对于嵌入式程序来说,使用命令行解释器来辅助程序调试是非常有用的。程序调试是一门技术,基本上我们…

FreeRTOS五种内存管理详解

freeRTOS五种内存管理详解 heap1 源码分析 void * pvPortMalloc( size_t xWantedSize ) {void * pvReturn NULL; // 申请的内存地址static uint8_t * pucAlignedHeap NULL; // 用于指向堆内存的起始地址#if ( portBYTE_ALIGNMENT ! 1 ) // 如果对齐为1则不对齐&#xff0c…

FreeRTOS-任务通知详解

✅作者简介:嵌入式入坑者,与大家一起加油,希望文章能够帮助各位!!!! 📃个人主页:rivencode的个人主页 🔥系列专栏:玩转FreeRTOS 💬保持…

FreeRTOS介绍 和 将FreeRTOS移植到STM32F103C8T6

一、FreeRTOS 介绍 什么是 FreeRTOS ? Free即免费的,RTOS的全称是Real time operating system,中文就是实时操作系统。 注意:RTOS不是指某一个确定的系统,而是指一类操作系统。比如:uc/OS,Fr…

学习FreeRTOS(2):初始化阶段的中断状态

学习FreeRTOS(2):初始化阶段的中断状态 分析FreeRTOS的Cortex-M4F移植版(portable/GCC/ARM_CM4F)在初始化阶段CPU中断状态的变化。复位后中断默认处于开启状态,当创建第一个任务时中断被关闭,开启调度器时重新开启中断…

10-FreeRTOS堆栈溢出

1-堆栈溢使用情况和溢出检查 1.1堆栈的使用情况 如果使用xTaskCreate()创建任务,那么作为任务堆栈的内存将自动从FreeRTOS堆中分配,并通过传递给xTaskCreate() API函数的参数进行内存划分。如果使用xTaskCreateStatic()创建任务,那么应用程…

详解FreeRTOS中的信号量(semaphore)

信号,顾名思义最基础的作用是通知,量,表示数量,意思就是可以有多个信号。在不同的场景延伸下,还有同步和互斥访问资源的作用(这都是通知作用的延伸)。 当"量"没有限制时,…

【智能家居入门4】(FreeRTOS、MQTT服务器、MQTT协议、微信小程序)

前面已经发了智能家居入门的1、2、3了,在实际开发中一般都会使用到实时操作系统,这里就以FreeRTOS为例子,使用标准库。记录由裸机转到实时操作系统所遇到的问题以及总体流程。相较于裸机,系统实时性强了很多,小程序下发…

ZYNQ连载04-Vitis创建FreeRTOS工程

ZYNQ连载04-Vitis创建FreeRTOS工程 1. 创建工程 2. 测试程序 #include <stdio.h> #include "FreeRTOS.h" #include "task.h"static TaskHandle_t task1_handle NULL;static void task1(void *pvParameters) {while(1){print("Hello World\n\…

1 - FreeRTOS入门指南

FreeRTOS可以被移植到很多不同架构的处理器和编译器。每一个RTOS移植都附带一个已经配置好的演示例程&#xff0c;可以方便快速启动开发。更好的是&#xff0c;每个演示例程都附带一个说明网页&#xff0c;提供如何定位RTOS演示工程源代码、如何编译演示例程、如何配置硬件平台…

【ESP32+freeRTOS学习笔记之“ESP32环境下使用freeRTOS的特性分析(2-多核环境中的任务)”】

目录1、ESP32的双核对称多处理SMP概念2、涉及任务task的特殊性2.1 创建任务的特殊函数2.2 xTaskCreatePinnedToCore&#xff08;&#xff09;函数的解释3、任务的删除4、总结1、ESP32的双核对称多处理SMP概念 最初的FreeRTOS&#xff08;以下简称Vanilla FreeRTOS&#xff09;…

详解FreeRTOS:软件定时器(高级篇—4)

目录 1、定时器简介 2、定时器运行机制 3、定时器服务任务与队列 4、定时器相关配置

freertos之任务运行时间统计实验

这里写目录标题 任务时间统计函数时间统计API函数使用流程实验 任务时间统计函数 void vTaskGetRunTimeStats(char * pcWriteBuffer); 时间统计API函数使用流程 实验 1.首先现在FreeRTOSConfig.h文件里将configGENERATE_RUN_TIME_STATS 和configUSE_STATS_FORMATTING_FUNCTIO…

ZYNQ连载02-开发环境

ZYNQ连载02-开发环境 1. 官方文档 ZYNQ开发使用的软件为Vivado/Vitis/PetaLinux,软件体积比较大&#xff0c;硬盘保留100G以上的空间&#xff0c;赛灵思提供详细的文档&#xff0c;链接如下&#xff1a; ZYNQ文档 2. Vivido和Vitis安装 赛灵思统一安装程序 3. PetaLinux安装…

FreeRTOS 任务创建分析

FreeRTOS 任务创建分析 Fang XS.1452512966qq.com如果有错误&#xff0c;希望被指出&#xff0c;学习技术的路难免会磕磕绊绊 FreeRTOS FreeRTOS快速上手教程FreeRTOS之任务优先级设置TCB 即任务控制块。FreeRTOS中使用TCB来进行任务管理&#xff0c;用来储存任务状态&#…

STM32 freertos 使用软件模拟串口uart

如题&#xff0c;为什么要这样做&#xff1f; 最近做的一个项目上使用了74HC595作为指示灯板使用&#xff1b; 这个灯板与驱动板是通过排线连接&#xff0c;排线约25cm长&#xff1b; 在实验室测试一切正常&#xff0c;发到客户手上使用就出现了某个LED跳动情况&#xff1b;…

14_FreeRTOS二值信号量

目录 信号量的简介 队列与信号量的对比 二值信号量 二值信号量相关API函数 实验源码 信号量的简介 信号量是一种解决同步问题的机制,可以实现对共享资源的有序访问。 假设有一个人需要在停车场停车 1.首先判断停车场是否还有空车位(判断信号量是否有资源) 2.停车场正好…

全志XR806基于FreeRTOS下部署竞技机器人先进模糊控制器

前言 很荣幸参与到由“极术社区和全志在线联合组织”举办的XR806开发板试用活动。本人热衷于各种的开发板的开发&#xff0c;同时更愿意将其实现到具体项目中。秉承以上原则&#xff0c;发现大家的重心都放在开发中的环境构建过程&#xff0c;缺少了不少实际应用场景的运用&am…

ZYNQ连载06-EasyLogger日志组件

ZYNQ连载06-EasyLogger日志组件 1. EasyLogger介绍 Easylogger仓库 2. EasyLogger移植 EasyLogger移植比较简单&#xff0c;在Vitis中移植时主要注意路径问题&#xff0c;然后适配下接口即可&#xff1a; void elog_port_output(const char *log, size_t size) {printf(&…

详解FreeRTOS:嵌入式多任务系统的任务互斥和优先级反转(理论篇—9)

在嵌入式多任务系统中,有些资源必须是独占使用的,多个任务对这样的资源的并发访问将导致错误的发生。一般来说,对需要独占使用的资源必须使用互斥方法将对其的并发访问串行化。 在优先级多任务系统中引入互斥方案,会导致任务优先级反转的问题:假如某时低优先级的任务占有…

详解FreeRTOS:低功耗Tickless模式(高级篇—7)

目录 1、裸机开发如何进入低功耗 1.1、睡眠(Sleep)模式 1.2、停止(Stop)模式

【RTOS】快速体验FreeRTOS所有常用API(2)任务管理

目录 二、任务管理2.1 任务创建&#xff08;三种方式&#xff09;1&#xff09;动态内存分配方式创建任务2&#xff09;静态内存分配方式创建任务3&#xff09;带有任务参数方式创建任务 2.2 任务删除2.3 两种delay 二、任务管理 该部分在上份代码基础上修改得来&#xff0c;代…

【FreeRTOS】【应用篇】任务管理相关函数

文章目录 前言一、函数解析1. 任务挂起 vTaskSuspend()① 使用场景② 设计思路③ 代码 2. 任务恢复 vTaskResume()① 作用② 设计思路③ 代码 3. 挂起任务调度器 vTaskSuspendAll()① 作用② 代码 4. 恢复任务调度器 xTaskResumeAll()① 设计思路② 代码 5. 任务删除函数 vTask…

FreeRTOS学习第7篇--周期性延迟和相对性延迟函数

目录 FreeRTOS学习第7篇--周期性延迟和相对性延迟函数时间延迟vTaskDelay函数原型vTaskDelayUntil函数原型PrintTask_Task任务相关代码片段实验现象本文中使用的测试工程 FreeRTOS学习第7篇–周期性延迟和相对性延迟函数 本文目标&#xff1a;学习与使用FreeRTOS中的延迟函数&…

7 - FreeRTOS任务创建和删除

在FreeRTOS移植到Cortex-M3硬件平台的文章中&#xff0c;我们已经见过任务创建API&#xff0c;但那篇文章的重点在于如何移植FreeRTOS&#xff0c;本文将重点放在任务的创建和删除API函数上面。任务创建和删除API函数位于文件task.c中&#xff0c;需要包含task.h头文件。 任务…

6 - FreeRTOS任务概述

任务和协程&#xff08;Co-routines&#xff09; 应用程序可以使用任务也可以使用协程&#xff0c;或者两者混合使用&#xff0c;但是任务和协程使用不同的API函数&#xff0c;因此在任务和协程之间不能使用同一个队列或信号量传递数据。通常情况下&#xff0c;协程仅用在资源…

14 - FreeRTOS队列

FreeRTOS队列 队列是主要的任务间通讯方式。可以在任务与任务间、中断和任务间传送信息。大多数情况下&#xff0c;队列用于具有线程保护的FIFO&#xff08;先进先出&#xff09;缓冲区&#xff1a;新数据放在队列的后面。当然&#xff0c;数据也可以放在队列的前面&#xff0…

CUBEMX与FreeRTOS在Arm Compiler 6下的配置方法

在嵌入式开发中&#xff0c;STM32是一种广泛使用的微控制器。为了提高开发效率&#xff0c;我们通常会利用ST公司提供的STM32CubeMX工具来配置硬件&#xff0c;并结合FreeRTOS这一实时操作系统来进行多任务处理。本文将深入探讨如何在这一框架下&#xff0c;使用Arm Compiler 6…

详解FreeRTOS:FreeRTOS任务恢复过程源码分析(进阶篇—4)

本篇博文讲解FreeRTOS中任务恢复过程的源代码,帮助各位更好理解恢复任务的原理和流程。 在详解FreeRTOS:FreeRTOS任务管理函数(基础篇—11)中,讲述了任务恢复函数有两个vTaskResume()和xTaskResumeFromISR(),一个是用在任务中的,一个是用在中断中的,但是基本的处理过程…

FreeRTOS学习八(任务通知)

任务通知在freeRTOS中是一个可选的功能&#xff0c;通过设置configUSE_TASK_NOTIFICATIONS变量来开启或关闭 FreeRTOS的每个任务都有一个32位的通知值&#xff0c;任务控制块中的成员变量ulNotifiedValue就是这个通知值。任务通知是一个事件&#xff0c;加入某个任务通知的接收…

FreeRTOS最全教程(目录)

文章目录 前言一、为什么要学FreeRTOS二、FreeRTOS开发和裸机开发的区别三、FreeRTOS入门篇四、FreeRTOS深入篇五、自制FreeRTOS六、FreeRTOS项目开发总结 前言 本篇文章将作为FreeRTOS最全教程的目录使用。 一、为什么要学FreeRTOS 1.嵌入式系统开发&#xff1a; FreeRTOS …

【RTOS】快速体验FreeRTOS所有常用API(4)队列

目录 四、队列2.1 概念2.2 创建队列2.3 写队列2.4 读队列2.5 队列集&#xff08;可跳过&#xff09; 四、队列 该部分在上份代码基础上修改得来&#xff0c;代码下载链接&#xff1a; https://wwzr.lanzout.com/iBNAS1l75bvc 密码:7xy2 该代码尽量做到最简&#xff0c;不添加多…

详解FreeRTOS:PendSV异常及中断服务函数(拓展篇—3)

目录 1、PendSV异常 2、PendSV 中断服务函数 PendSV(可挂起的系统调用)异常对OS 操作非常重要,其优先级可以通过编程设置。可以通过将中断控制和壮态寄存器 ICSR 的 bit28,也就是 PendSV 的挂起位置 1 来触发 PendSV 中断。 利用该特性,若将 PendSV 设置为最低的异常优先级…

freeRTOS的数据类型定义(portmacro.h文件里)

freeRTOS的数据类型定义&#xff08;portmacro.h文件里&#xff09; 解读&#xff1a; https://www.bilibili.com/video/BV1n8411y7DF/?buvidXY4F2994565924F2FFA7142AEEB2220A602A4&is_story_h5false&mid%2B8iBjJuKH0VIWaMd8h0wSQ%3D%3D&p1&plat_id114&s…

STM32cubemx对FreeRTOS的适配(工程模板配置)

文章目录 前言一、工程的创建二、什么是CMSIS三、STM32cubemx生成的FreeRTOS工程分析总结 前言 本篇文章将带大家使用STM32cubemx对FreeRTOS进行工程模板的配置。 一、工程的创建 1.开始工程的创建&#xff1a; 2.芯片型号选择&#xff1a; 3.修改时钟为TIM8&#xff1a; …

2023最新版本 FreeRTOS教程 -5-切断驱动和应用的直接关联与多输入的编码思路

在多输入的场景方便添加新的设备如图 总体的思路框图 函数讲解&#xff08;图片太抽象通过这个函数理解&#xff09; 写入自己的队列 统一数据(建议读取自己的队列 再统一到应用的队列 这里图方便省略了) 通过统一的数据做出执行操作 验证 队列为空直接阻塞 通过三个按…

FreeRTOS实时操作系统(二)系统文件代码学习

文章目录 前言系统配置任务创建任务创建删除实践 前言 接着学习正点原子的FreeRTOS教程&#xff0c;涉及到一些详细的系统内文件代码 系统配置 可以通过各种的宏定义来实现我们自己的RTOS配置&#xff08;在FreeRTOSconfig.h&#xff09; “INCLUDE”&#xff1a;配置API函数…

FreeRTOS 任务调度和任务的状态

目录 什么是任务调度&#xff1f; FreeRTOS的任务调度规则是怎样的&#xff1f; 抢占式调度运行过程​编辑 时间片调度运行过程​编辑 任务的状态 任务调度和任务的状态案例分析 什么是任务调度&#xff1f; 调度器就是使用相关的调度算法来决定当前需要执行的哪个任务。…

15 - FreeRTOS队列API

FreeRTOS为操作队列提供了非常丰富的API函数&#xff0c;包括队列的创建、删除&#xff0c;灵活的入队和出队方式、带中断保护的入队和出队等等。下面就来详细讲述这些API函数。 获取队列入队信息数目 函数描述 UBaseType_t uxQueueMessagesWaiting( QueueHandle_t xQueue )…

FreeRTOS中断和任务之间的队列,自定义串口通讯协议

本文提供这样一种方法&#xff1a;FreeRTOS中串口接收数据中断&#xff0c;然后通过队列将数据传递给任务A&#xff0c;在任务A中对数据进行处理&#xff0c;串口使用的通讯协议为自定义。 依次给出了串口的初始化,中断服务函数;任务A&#xff0c;队列创建的代码&#xff1b;由…

FreeRTOS调试—Error: L6218E: Undefined symbol xQueueCreateCountingSemaphore

或在 FreeRTOSConfig.h中定义&#xff0c;并改成1。尽量在 FreeRTOSConfig.h中定义不去动FreeRTOS.h #define configUSE_COUNTING_SEMAPHORES 1

FreeRTOS:事件标志组

目录 一、事件标志组简介1.1事件位(事件标志)1.2事件组1.3事件标志组和事件位的数据类型 二、创建事件标志组2.1函数 xEventGroupCreate()2.2函数xEventGroupCreateStatic() 三、设置事件位3.1函数 xEventGroupClearBits()3.2函数xEventGroupClearBitsFromISR()3.3函数 xEventG…

FreeRTOS 延时函数和软件定时器 详解

目录 什么是延时函数&#xff1f; 1.延时函数分类 2.vTaskDelay 与 HAL_Delay 的区别 什么是定时器&#xff1f; 1.软件定时器优缺点 2.软件定时器原理 3.软件定时器相关配置 4.单次定时器和周期定时器 软件定时器相关 API 函数 1. 创建软件定时器 2. 开启软件定时器…

【FreeRTOS(三)】任务状态

文章目录任务状态任务挂起 vTaskSuspend取消任务挂起 vTaskResume挂起任务调度器 vTaskSuspendAll取消挂起任务调度器 xTaskResumeAll代码示例&#xff1a;任务挂起、取消任务挂起代码示例&#xff1a;挂起任务调度器、取消挂起任务调度器任务状态 freeRTOS任务的状态有四种&am…

详解FreeRTOS:FreeRTOS任务切换过程源码分析(进阶篇—6)

目录 1、执行系统调用 2、SysTick中断 RTOS 系统的核心是任务管理,而任务管理的核心是任务切换,任务切换决定了任务的执行顺序,任务切换效率的高低也决定了一款系统的性能。 学习本篇博文之前推荐先看一下这篇文章:PendSV异常及中断服务函数(拓展篇—)。 FreeRTOS 执…

第1章_freeRTOS入门与工程实践之课程介绍

本教程基于韦东山百问网出的 DShanMCU-F103开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id724601559592 配套资料获取&#xff1a;https://rtos.100ask.net/zh/freeRTOS/DShanMCU-F103 freeRTOS系列教程之freeRTOS入…

eCos、RTEMS、RT-Thread、FreeRTOS在中文书籍方面的比较

mingdu.zheng <at> gmail <dot> comhttp://blog.csdn.net/zoomdy/article/details/8914656 通过在当当网、博库网、亚马逊、京东搜索操作系统名称查找相应的书籍&#xff0c; 以中文书籍作为比较面对eCos、 RTEMS、 RT-Thread、FreeRTOS这四种开源的实时操作系统进…

FreeRTOS深入教程(中断管理)

文章目录 前言一、为什么要为中断设计一套API二、两套函数区别对比三、两类中断四、FreeRTOS中SYSTICK和PendSV中断的作用总结 前言 本篇文章来分析FreeRTOS中的中断&#xff0c;中断在FreeRTOS中也是非常重要的&#xff0c;那么这篇文章将带大家来学习一下FreeRTOS中的中断处…

ZYNQ连载01-ZYNQ介绍

ZYNQ连载01-ZYNQ介绍 1. ZYNQ 参考文档&#xff1a;《ug585-zynq-7000-trm.pdf》 ZYNQ分为PS和PL两大部分&#xff0c;PS即ARM&#xff0c;PL即FPGA&#xff0c;PL作为PS的外设。 2. 方案 ZYNQ7020为双核A9架构&#xff0c;多核处理器常用的运行模式为AMP(非对称多处理)和…

FreeRTOS实时操作系统(二)任务创建与任务删除(HAL库)

文章目录 前言系统配置任务创建动态任务创建删除实践静态任务创建删除实践 前言 接着学习正点原子的FreeRTOS教程&#xff0c;涉及到一些详细的系统内文件代码 系统配置 可以通过各种的宏定义来实现我们自己的RTOS配置&#xff08;在FreeRTOSconfig.h&#xff09; “INCLUDE…

ZYNQ连载07-PIN设备

ZYNQ连载07-PIN设备 1. 简述 RT-Thread PIN设备 这里参看RT-Thread提供的PIN设备管理接口&#xff0c;简单封装了几个接口函数。 2. 实现 #include "include/drv_gpio.h" #define LOG_TAG "drv_gpio" static XGpioPs xgpiops;void rt_pin_mode(rt_…

FreeRTOS(任务通知)

资料来源于硬件家园&#xff1a;资料汇总 - FreeRTOS实时操作系统课程(多任务管理) 目录 一、任务通知的概念 1、概念 2、发送通知给任务的方式 3、任务通知使用限制 二、任务通知的运行机制 三、任务通知的API函数 1、任务通知的数据结构 2、常用的API函数 3、函数x…

FreeRTOS 中断管理介绍和实操

目录 中断定义 中断优先级 相关注意 中断相关函数 1.队列 2.信号量 3.事件标志组 4.任务通知 5.软件定时器 中断管理实操 中断定义 中断是指在程序执行的过程中&#xff0c;突然发生了某种事件&#xff0c;需要立即停止当前正在执行的程序&#xff0c;并转而处理这个…

分享配置FreeRTOSConfig.h文件因部分宏值配置不对以及相应函数未定义出现的三个错误解决方法

今天来分享一个在创建FreeRTOS时候调用官方的FreeRTOSConfig头文件时&#xff0c;因部分宏值的配置与FreeRTOS内核文件中的函数不匹配&#xff0c;导致编译时候出现了相应的错误。 于是&#xff0c;既然遇到了&#xff0c;就准备拿出来讲一下&#xff0c;让其他遇到的小伙伴也…

freeRTOS内部机制——创建任务的内部细节

创建任务的两个核心&#xff1a;栈和任务结构体 函数运行过程中的局部变量保存在哪里&#xff1f;他自己的栈中 任务被切换过后&#xff0c;在切换的瞬间&#xff0c;哪些寄存器的值保存在哪里&#xff1f;保存在任务结构体中 在任务创建函数中&#xff0c;会malloc动态分配…

FREERTOS源码解析——heap4.c

目录内存管理heap4无法解决的内存碎片&#xff1a;HEAP4简析分配内存在哪&#xff0c;大小多少如何管理重要源码解析内存管理 freertos目前提供了以下5种内存管理&#xff0c;特点如下 heap1&#xff1a;最简单的内存管理&#xff0c;管理的其实是一个静态全局变量&#xff0…

详解FreeRTOS:FreeRTOS任务挂起过程源码分析(进阶篇—3)

本篇博文讲解FreeRTOS中任务挂起过程的源代码,帮助各位更好理解挂起任务的原理和流程。 在详解FreeRTOS:FreeRTOS任务管理函数(基础篇—11)中,讲述了可以使用vTaskSuspend()函数实现挂起任务。 函数源码如下: 程序说明如下: (1)、通过函数 prvGetTCBFromHandle()获取要…

ESP32 partition(分区表)(15)

提示&#xff1a;本博客作为学习笔记&#xff0c;有错误的地方希望指正&#xff0c;主要参考乐鑫技术手册说明结合实例代码分析&#xff0c;结合理论知识学习后示例分析以及常见问题说明。 文章目录 一、ESP32 Partition概述二、内置分区表三、创建自定义分区表四、生成二进制分…

FreeRTOS 事件标志组 详解

目录 什么是事件标志组&#xff1f; 事件标志位 事件标志组 事件标志组相关 API 函数 1. 创建事件标志组 2. 设置事件标志位 3. 清除事件标志位 4. 等待事件标志位 事件标志组实操 什么是事件标志组&#xff1f; 事件标志位 表明某个事件是否发生&#xff0c;联想&am…

FreeRtos自学笔记3-----参考正点原子视频

FreeRtos任务的创建与删除 任务的创建与删除本质上是调用FreeRtos的API函数。 API函数&#xff1a; 1.xTaskGreate():动态创建任务函数&#xff1b; 2.xTaskGreateStatic();静态创建任务函数&#xff1b; 3.xTaskDelete():任务删除 动态创建任务&#xff1a;任务的任务控制块以…

freertos任务切换的现场保存、恢复(任务栈空间)深度分析(以RISC-V架构为例)

1、任务控制块在内存中的布局 RISC-V架构采用的减栈&#xff0c;即栈向低地址空间生长&#xff1b;在freertos中采用任务控制块&#xff08;TCB&#xff09;结构来表示一个任务每个任务有自己的任务栈&#xff0c;任务栈是紧挨着TCB的&#xff0c;且TCB在地址高位&#xff0c;任…

FreeRTOS学习七(事件标志组)

RTOS中可以通过信号量来完成同步&#xff0c;但是信号量只能与单个的事件或任务进行同步。有时某个任务可能会需要与多个事件或任务进行同步&#xff0c;此时信号量就无法满足要求了。事件标志组就排上了用场。 事件位&#xff08;事件标志&#xff09; 事件位用来表明某个事件…

详解FreeRTOS:系统时钟节拍(进阶篇—8)

在详解FreeRTOS:FreeRTOS时间片调度(进阶篇—7)中我们讲到了时钟节拍这个概念,本篇博文将详细讲解FreeRTOS系统时钟节拍相关知识。 不管是什么系统,运行都需要有个系统时钟节拍,xTickCount 就是FreeRTOS 的系统时钟节拍计数器。每个滴答定时器中断中 xTickCount 就会加一…

FreeRTOS列表和列表项

FreeRTOS内核调度使用了大量的列表&#xff08;list&#xff09;和列表项&#xff08;listitem&#xff09;数据结构。它的源码中涉及到很多列表的操作&#xff0c;对于FreeRTOS来说&#xff0c;列表就是它最基础的一部分&#xff0c;列表被用作FreeRTOS调度器使用&#xff0c;…

FreeRTOS学习2018.6.27

《FreeRTOS学习》 1.freeRTOS基本功能函数&#xff1a; 定义任务&#xff1a;ATaskFunction(); 创建任务&#xff1a;xTaskCreate(); 改优先级&#xff1a;vTaskPrioritySet(); 系统延时&#xff1a;vTaskDelay(); 精确延时&#xff1a;vTaskDelayUntil(); 空闲任务钩子函数&…

FreeRTOS入门教程(任务通知)

文章目录 前言一、什么是任务通知二、任务通知和队列&#xff0c;信号量的区别三、任务通知的优点和缺点1.优点2.缺点 四、任务状态和通知值五、任务通知相关的函数发出通知取出通知 六、任务通知具体使用1.实现轻量级信号量二进制信号量计数型信号量 2.实现轻量级队列 总结 前…

FreeRTOS移植及STM32下基于FreeRTOS的程序编写

文章目录前言FreeRTOS移植准备工作移植多任务程序task1&#xff1a;每间隔500ms闪烁&#xff08;变化&#xff09;一次LEDtask2&#xff1a;每间隔2000ms&#xff0c;向串口发送一次指令数据“HELLO WORLD!"task3&#xff1a;每间隔5000ms&#xff0c;从AHT20采集一次温湿…

FreeRTOS中的内存分配策略

FreeRTOS为内存管理提供了几种不同的策略&#xff0c;分别由heap_1.c至heap_5.c实现。以下是每种策略&#xff1a; heap_1.c: 最简单的策略。只允许一次性的内存分配。不允许内存释放。对于只分配内存但不释放的系统特别有用&#xff0c;如仅在启动时分配任务和队列的系统。内存…

FreeRTOS学习(二)

FreeRTOS的任务创建和删除 任务的创建和删除本质就是调用FreeRTOS的API函数。 xTaskCreate()&#xff1a;动态方式创建任务xTaskCreateStatic()&#xff1a;静态方式创建vTaskDelete()&#xff1a;删除任务 动态创建任务&#xff1a;任务的控制块以及任务的栈空间所需的内存…

Arduino和MPLAB X 开发STM32F103和PIC16F15376

要点&#xff1a; 使用Arduino开发STM32F103&#xff08;Blue Pill&#xff09;&#xff0c;MPLAB X 开发PIC16F15376&#xff08;Curiosity Nano&#xff09;C/C嵌入式开发ESP32(Arduino、ESP-IDF)和STM32实时操作系统FreeRTOS STM32使用FreeRTOS示例 在使用 FreeRTOS 时&a…

FreeRTOS学习九(锁机制)

在执行代码时&#xff0c;有的代码开始执行&#xff0c;是不允许被打断的。这部分的代码也叫作临界段代码。为了确保这些代码不被中断而增加了临界区的概念。所谓的临界区保护重要流程在执行的时候不会被其他事情打断。等流程运行结束后&#xff0c;再将程序重新恢复到原来的状…

FreeRTOS中的变量、指针前缀含义,`TickType_t`和`BaseType_t`

在FreeRTOS中&#xff0c;还有几个常用的指针前缀&#xff0c;包括&#xff1a; - pv&#xff1a;表示一个指向 void 类型的指针&#xff0c;通常表示一块未知类型的内存区域。 - px&#xff1a;表示一个指向某个类型的指针&#xff0c;通常表示一个对象或结构体的指针。 - …

【08】STM32·HAL库开发-HAL库介绍 | STM32Cube固件库介绍 | HAL库框架结构 | 如何使用HAL库及使用注意事项

目录 1.初识HAL库&#xff08;了解&#xff09;1.1CMSIS简介1.2HAL库简介 2.STM32Cube固件包浅析&#xff08;了解&#xff09;2.1如何获取STM32Cube固件包&#xff1f;2.2STM32Cube固件包文件夹简介2.3CMSIS文件夹关键文件2.3.1CMSIS标准规定软件包目录2.3.2Device和Include文…

君正X2100 FreeRTOS开发记录

一、SDK源码下载 参考君正官方教程&#xff1a;君正全平台linux源码同步教程&#xff08;除X1830人脸识别板&#xff09;_君正x1830_北京君正的博客-CSDN博客 教程中是linux源码的同步教程&#xff0c;需要将路径&#xff1a; ssh://sz_halley2119.136.25.25:29418/mirror/l…

FreeRTOS API 大全

configMAX_PRIORITIES 配置优先级个数configUSE_TIMERS 配置是否启用软件定时器configUSE_PREEMPTION 配置有更高优先级时进行任务切换1. RTOS内核控制taskYIELD //让出CPU &#xff0c;让高于或等于调用该函数优先级的其他任务获得CPU运行&#xff0c;如果没有此任务继续运行t…

分享因缺少 xPortSysTickHandler()函数而导致程序一直卡死在函数portTASK_FUNCTION的案例分析

今天来分享一个在学习freertos过程中遇到的一个小问题。就是发现程序跑不起来&#xff0c;但是debug调试时候发现也没有到while循环中&#xff0c;于是通过排查发现是因为缺少相应的SysTick中断服务函数导致的。话不多说&#xff0c;我们开始讲~ 问题锁定&#xff1a; 首先这…

FreeRTOS:任务挂起和恢复

目录 一、任务挂起和恢复定义二、任务挂起2.1含义2.2任务挂起内部实现2.3函数vTaskSuspend() 三、任务恢复3.1含义3.2任务恢复内部实现3.3函数vTaskResume() 四、任务挂起和恢复实验4.1实验要求4.2程序代码 一、任务挂起和恢复定义 有时候我们需要暂停某个任务的运行&#xff…

FreeRTOS 低功耗 Tickless 模式

文章目录 一、低功耗模式1. 睡眠(Sleep)模式2. 停止(Stop)模式3. 待机(Standby)模式 二、Tickless 模式详解1. 如何降低功耗&#xff1f;2. Tickless 具体实现 一、低功耗模式 STM32 本身就支持低功耗模式&#xff0c;有三种低功耗模式&#xff1a; ● 睡眠(Sleep)模式。 ● 停…

2023最新版本 FreeRTOS教程 -9-互斥量(基本使用和解决优先级反转)

互斥量是一种特殊的二进制信号量 使用场景1 &#xff08;互斥访问&#xff09; 外设的独立访问 如打印 协议操作 使用场景2 解决优先级反转 外设的独立访问 如打印 协议操作 使用场景2 解决优先级反转 我们以较为复杂的场景2来分析 -1- 创建三个任务 优先级从低到高&…

2023最新版本 FreeRTOS教程 -8-信号量(二值)

二值信号量与信号量类似 但值只有0和1 创建二值信号量函数 BinarySemaphore_Timedis xSemaphoreCreateBinary();获取二值信号量函数 xSemaphoreTake(BinarySemaphore_Timedis, portMAX_DELAY);发送二值信号量函数 xSemaphoreGive(BinarySemaphore_Timeset);删除二值信号量…

FreeRTOS入门教程(信号量的概念及API函数使用)

文章目录 前言一、什么是信号量二、信号量种类和对比三、信号量和队列的区别四、信号量相关的函数1.创建函数2.删除函数3.获取和释放信号量函数 总结 前言 本篇文章正式带大家开始学习什么是信号量&#xff0c;并且掌握信号量函数的基本使用方法&#xff0c;并且将和队列进行一…

FreeRTOS STM32移植笔记

1.前言 【1】其实说不上移植笔记&#xff0c;FreeRTOS已经移植至众多平台&#xff08;MCU&#xff09;&#xff0c;包括MSP430&#xff0c;STM32等&#xff0c;这份笔记完全建立在官方代码的基础之上&#xff0c;简单的说就是修改一些设置从而完成一个呼吸灯实验。 【2】虽然有…

【FreeRTOS基础入门】任务通知

文章目录 前言一、任务通知介绍1.1 任务通知怎么通信1.2 任务通知与其他通信方式的区别1.3 优势及限制任务通知的优势任务通知的限制 1.4 内部原理 二、任务通知的使用2.1 发出与接收通知简化版2.1 发出与接收通知专业版 总结 前言 FreeRTOS 提供了丰富而灵活的任务通知机制&a…

【RT-Thread基础教程】Delay函数与空闲线程及其钩子函数

文章目录 前言一、Delay函数1.1 rt_thread_delay()函数1.2 rt_thread_mdelay()函数1.3 rt_hw_us_delay()函数1.4 rt_thread_delay_until函数1.5 获取当前tick数 二、空闲线程与钩子函数2.1 空闲线程2.2 钩子函数 总结 前言 在 RT-Thread 操作系统中&#xff0c;Delay 函数和空…

stm32+FreeRTOS遇到的坑

问题 最近把项目移植进FreeRTOS时&#xff0c;发现开始任务都不能启动&#xff1b; 机器是stm32f407&#xff0c;使用的arm固件和FreeRTOS都是最新版本&#xff1b; 裸机运行没有问题&#xff0c;但是使用任务运行就运行不了&#xff1b; 排查 首先尝试了教程用的点灯代码…

FreeRTOS:队列

目录 前言一、队列简介1.1数据存储1.2多任务访问1.3出队阻塞1.4入队阻塞1.5队列操作过程图示1.5.1创建队列1.5.2向队列发送第一个消息1.5.3向队列发送第二个消息1.5.4从队列中读取消息 二、队列结构体三、队列创建3.1创建函数3.2函数xQueueCreateStatic()3.3函数xQueueCreate()…

(二)移植FreeRTOS到STM32中

一、概念 &#xff08;1&#xff09;任务&#xff08;线程&#xff09;&#xff1a;根据功能的不同&#xff0c;将一个系统分割成一个个独立且无法返回的函数&#xff0c;这个函数就被称为任务 &#xff08;2&#xff09;任务栈&#xff1a;静态创建的任务保存在栈中 &#xf…

FreeRTOS中断管理与CPU使用率

文章目录 异常与中断中断简介运作机制中断延迟中断管理 CPU使用率CPU使用率统计 异常与中断 异常&#xff1a;异常是指任何打断处理器正常执行&#xff0c;并且迫使处理器进入一个由有特权的特殊指令执行的事件。可以分为同步异常和异步异常。 同步异常&#xff1a;由内部事件…

FreeRTOS 软件定时器的使用

FreeRTOS中加入了软件定时器这个功能组件&#xff0c;是一个可选的、不属于freeRTOS内核的功能&#xff0c;由定时器服务任务&#xff08;其实就是一个定时器任务&#xff09;来提供。 软件定时器是当设定一个定时时间&#xff0c;当达到设定的时间之后就会执行指定的功能函数&…

FreeROTS 任务通知和实操 详解

目录 什么是任务通知&#xff1f; 任务通知值的更新方式 任务通知的优势和劣势 任务通知的优势 任务通知的劣势 任务通知相关 API 函数 1. 发送通知 2. 等待通知 任务通知实操 1. 模拟二值信号量 2. 模拟计数型信号量 3. 模拟事件标志组 4. 模拟消息邮箱 什么是任务…

FreeRTOS中的任务与任务切换(笔记)

这里写目录标题任务的定义栈和任务栈任务控制块任务初始化函数初始化任务栈任务创建函数pxTopOfStack任务的定义 在多任务系统中&#xff0c;根据功能的不同&#xff0c;把整个系统分割成一个个独立的且无法返回的函数&#xff0c;这个函数我们称为任务。 栈和任务栈 在裸机…

FreeRTOS深入教程(任务创建的深入和任务调度机制分析)

文章目录 前言一、深入理解任务的创建二、任务的调度机制1.FreeRTOS中任务调度的策略2.FreeRTOS任务调度策略实现的核心3.FreeRTOS内部链表源码解析4.如何通过就绪链表管理任务的执行顺序 三、一个任务能够运行多久1.高优先级任务可抢占低优先级任务一直运行2.相同优先级的任务…

FreeRTOS中的xQueueCreate,xQueueSend,xQueueReceive

xQueueCreate&#xff1a; 创建一个新的队列。为新的队列分配所需的存储内存&#xff0c;并返回一个队列处理。 原型&#xff1a; xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBASE_TYPE uxItemSize ); uxQueueLength队列中包含最大项目…

全志R128软件配置——RTOS 软件包配置

RTOS 软件包配置 本文将介绍 RTOS 软件包、地址&#xff0c;内核配置等。 Kconfig 简介 有过 linux 内核开发经验的人&#xff0c;对 menuconfig 不会陌生。对于各类内核&#xff0c;只要是支持 menuconfig 配置界面&#xff0c;都是使用 Kconfig。 换言之&#xff1a; me…

【ESP32+freeRTOS学习笔记之“ESP32环境下使用freeRTOS的特性分析(3-多核环境下的调度)”】

目录1、不同核心上分别调度2、tick中断3、关于抢占4、关于同优级的任务按时间片调度5、空闲任务6、调度程序暂停7、启动和终止8、 禁用中断9、总结Vanilla FreeRTOS调度器是具有时间切片的固定优先级抢占调度器&#xff0c;这意味着&#xff1a; 每个任务在创建时都有一个固定的…

FreeRTOS的软件定时器配置与使用

配置FreeRTOSConfing.h文件 #define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) //计数时间周期1ms #define configUSE_TIMERS 1 //开启定时器 #define configTIMER_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) //设置软件定时器优先级…

GPT对话知识库——Systick中断-滴答定时器、PendSV中断-任务切换、SVC中断-系统底层分别是什么?优先级设置,使用场景,之间的联系

提问模型&#xff1a;GPT-4-TURBO-PREVIEW 提问时间&#xff1a;2024.03.06 1&#xff0c;问&#xff1a; 在实时操作系统freertos中&#xff0c;为什么需要把systick中断优先级设置成最低&#xff1f;systick和pendsv哪一个的中断优先级更低&#xff0c;为什么&#xff1f;举…

AWTK实现汽车仪表Cluster/DashBoard嵌入式GUI开发(七):FREERTOS移植

前言: 一般的GUI工程都需要一个操作系统,可能是linux,重量级的,也可能是FreeRTOS,轻量级的。 一句话理解那就是工程就是FreeRTOS task任务的集合。 一个main函数可以看到大框架: 很显然,除了第一个是硬件配置的初始化,中间最重要的部分就是要创建任务,把AWTK的应用…

freerots启动过程分析(qemu仿真RISC-V架构为例)

1、前言 本文是基于qemu上virt板子适配的freertos系统源码进行讲解qemu安装可参考博客&#xff1a;《qemu源码下载和安装》&#xff1b;freertos移植到qemu上运行可参考博客&#xff1a;《移植freertos到qemu上运行》&#xff1b; 2、汇编代码部分 汇编文件&#xff1a;FreeR…

【FreeRTOS】中断管理

中断前言中断和任务的API区别为什么需要任务切换&#xff1f;如何进行任务切换&#xff1f;使用CubeMX创建工程配置时钟配置调试模式配置串口配置按键外部中断&#xff1b;配置中断服务函数配置按键触发模式配置FreeRTOS配置时钟生成工程示例外部中断按键&#xff08;任务通知的…

STM32FreeRTOS消息队列(STM32Cube高效开发)

文章目录 一、队列&#xff08;一&#xff09;简介&#xff08;二&#xff09;FreeRTOS队列特点1、入队阻塞&#xff1a;队列满了&#xff0c;此时无法继续写入数据2、出队阻塞&#xff1a;队列为空&#xff0c;此时无法读出数据3、入队阻塞解除&#xff0c;有多个任务等待时&a…

详解FreeRTOS:FreeRTOS时间片调度(进阶篇—7)

目录 1、基础知识 2、实验:FreeRTOS时间片调度 FreeRTOS 支持多个任务同时拥有一个优先级,那么这些同优先级的任务是如何调度的呢? 1、基础知识 在 FreeRTOS 中允许一个任务运行一个时间片(一个时钟节拍的长度)后让出 CPU 的使用权,让拥有同优先级的下一个任务运行,FreeRT…

详解FreeRTOS:FreeRTOS任务创建过程源码分析(进阶篇—1)

目录 1、任务创建函数分析 2、任务初始化函数分析 3、任务堆栈初始化函数分析

FreeRTOS常用API函数(动态内存分配下)

前言 FreeRTOS有其特殊的变量命名和函数命名&#xff1a; 比如 char 型变量的前缀是 c&#xff0c;short型变量的前缀是s&#xff0c;long 型变量的前缀是l&#xff0c;portBASE_TYPE 类型变量的前缀是x。还有其他的数据类型&#xff0c;比如数据结构&#xff0c;任务句柄&…

【全网唯一】 自己动手实现 FreeRTOS-metal-SU

前言 FreeRTOS 是一个开源的实时操作系统&#xff08;RTOS&#xff09;&#xff0c;适用于微控制器和小型嵌入式系统。它提供了多任务处理、内存管理、定时器、软件定时器、消息队列和信号量等功能&#xff0c;以帮助开发人员构建可靠和高效的嵌入式系统。 FreeRTOS 的设计原则…

FreeRTOS中断优先级测试

目录 资源配置 测试方案 易出 bug 测试代码 资源配置 1、定时器3中断优先级为3 2、定时器4中断优先级为4 3、FreeRTOS中断配置 OS系统管理不高于中断优先级4的中断。 #ifdef __NVIC_PRIO_BITS /* __NVIC_PRIO_BITS 已经在stm32f1xx.h里面定义为4 */#define configPRIO_B…

FreeRTOS多任务处理Arduino版PLC

工业 Arduino IDE 和环境有许多触手可及的驱动程序和库&#xff0c;但 Arduino 环境仅限于 setup() 和 loop() 并且不能有效地支持多任务处理。 大多数操作系统似乎允许多个程序或线程同时执行。 这称为多任务处理。 实际上&#xff0c;每个处理器内核在任何给定时间点只能运行…

【FreeRTOS】【应用篇】消息队列【下篇】

前言 本篇文章主要对 FreeRTOS 中消息队列的概念和相关函数进行了详解消息队列【下篇】详细剖析了消息队列中发送、接收时队列消息控制块中各种指针的行为&#xff0c;以及几个发送消息和接收消息的函数的运作流程笔者有关于 【FreeRTOS】【应用篇】消息队列【上篇】——队列基…

5 - FreeRTOS内存管理

FreeRTOS提供了几个内存堆管理方案&#xff0c;有复杂的也有简单的。其中最简单的管理策略也能满足很多应用的要求&#xff0c;比如对安全要求高的应用&#xff0c;这些应用根本不允许动态内存分配的。FreeRTOS也允许你自己实现内存堆管理&#xff0c;甚至允许你同时使用两种内…

9 - FreeRTOS任务应用API

任务应用函数是一组辅助类函数&#xff0c;一般用于调试信息输出、获取任务句柄、获取任务状态、操作任务标签值等等。 获取任务系统状态 函数描述 UBaseType_t uxTaskGetSystemState(TaskStatus_t * constpxTaskStatusArray,const UBaseType_tuxArraySize,unsigned long * c…

13 - 可视化追踪调试

使用RTOS编程&#xff0c;为每个任务分配多大的堆栈空间就成了一项技术活&#xff1a;分配多了浪费系统资源&#xff0c;分配少了又恐怕会发生堆栈溢出。由于中断和抢占式调度器的存在&#xff0c;我们要估算出一个任务需要多少堆栈是非常困难的&#xff0c;今天我们就介绍一种…

16 - FreeRTOS信号量

信号量简介 FreeRTOS的信号量包括二进制信号量、计数信号量、互斥信号量&#xff08;以后简称互斥量&#xff09;和递归互斥信号量&#xff08;以后简称递归互斥量&#xff09;。我们可以把互斥量和递归互斥量看成特殊的信号量。互斥量和信号量在用法上不同&#xff1a; 信号…

GPT对话知识库——FreeRTOS中寄存器BASEPRI的作用

提问模型&#xff1a;GPT-4-TURBO-PREVIEW 提问时间&#xff1a;2024.03.02 1&#xff0c;问&#xff1a; 举例详细说明寄存器BASEPRI在freertos中作用 1&#xff0c;答&#xff1a; 在使用FreeRTOS这样的实时操作系统时&#xff0c;确保系统的实时性和响应能力至关重要。其中…

freertos简介与移植

freertos是一个可裁剪的小型rtos系统&#xff0c;特点&#xff1a; 支持抢占式&#xff0c;合作式和时间片调度saferos衍生自freertos&#xff0c;更完整提供了一个用于低功耗的tickless模式系统的组件在创建时可以选择动态或者静态的ram&#xff0c;例如任务&#xff0c;消息…

STM32cubeMX配置FreeRTOS----软件定时器

从这篇文章开始就为大家介绍 FreeRTOS&#xff0c; 让大家快速入门 FreeRTOS。 文章目录 前言一、软件定时器的概念&#xff0c;特性1. 概念 &#xff1a;2. 特性 &#xff1a; 二、STM32cubeMX配置软件定时器三、软件定时器函数1. 创建2. 开启3. 停止4. 删除 四、软件定时器实…

FreeRTOS 内存管理

文章目录 一、FreeRTOS 内存管理简介二、 内存碎片三、heap_1 内存分配方法1. 分配方法简介2. 内存申请函数详解3. 内存释放函数详解 四、heap_2 内存分配方法1. 分配方法简介2. 内存块详解3. 内存堆初始化函数详解4. 内存块插入函数详解5. 内存申请函数详解6. 内存释放函数详解…

FreeRtos自学笔记2----参考正点原子视频

任务的四种状态&#xff1a; 1.运行态&#xff1a;正在执行的任务&#xff0c;该任务就处于运行态&#xff1b;注在STM32中同一时刻只能有一个任务处于运行态。 2.就绪态&#xff1a;如果一个任务能够被执行&#xff0c;而又没有被执行&#xff0c;则该任务就处于就绪态。只有就…

FreeRTOS内核:详解Task各状态(GPT4帮写)

FreeRTOS内核&#xff1a;详解Task各状态&#xff08;GPT4帮写&#xff09; 1. 背景2. Task顶层状态区分3. 运行状态&#xff08;Running&#xff09;4. 非运行状态4.1 阻塞态&#xff08;Blocked&#xff09;&#xff1a;4.2 挂起态&#xff08;Suspended&#xff09;4.3 就绪…

第27章_瑞萨MCU零基础入门系列教程之freeRTOS实验

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取&#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总&#xff1a; ht…

详解FreeRTOS中的软件定时器

软件定时器用于让某个任务定时执行&#xff0c;或者周期性执行。比如设定某个时间后执行某个函数&#xff0c;或者每隔一段时间执行某个函数。由软件定时器执行的函数称为软件定时器的回调函数。 参考资料&#xff1a; 《Mastering the FreeRTOS™ Real Time Kernel》——Cha…

详解FreeRTOS:SystemView监测FreeRTOS任务运行状态和CPU占有率(拓展篇—11)

目录 1、下载SystemView 2、移植SystemView 3、修改相关文件 4、SystemView上位机监测RTOS 5、问题解决

FreeRTOS 列表和列表项

文章目录一、什么是列表和列表项&#xff1f;二、列表和列表项初始化三、列表项插入四、列表项末尾插入五、列表项的删除六、列表的遍历七、列表项的插入和删除实验一、什么是列表和列表项&#xff1f; 1. 列表 列表是 FreeRTOS 中的一个数据结构&#xff0c;概念上和链表有点…

FreeRTOS学习五(信号量)

信号量是操作系统中重要的一部分&#xff0c;信号量一般用来进行资源管理和任务同步。信号量分为二值信号量、计数型信号量、互斥信号量。不同信号量的应用场景也不同&#xff0c;但是有些应用场景是可以互换着使用的。 信号量简介 信号量常常用于控制对共享资源的访问和任务同…

freertos信号量之二值信号量

freertos信号量之二值信号量 简介例程 简介 FreeRTOS的二值信号量&#xff08;Binary Semaphore&#xff09;是用于实现进程间同步和临界资源保护的重要工具。以下是一些二值信号量的常用函数及其说明&#xff1a; 1&#xff09;xSemaphoreCreateBinary() 创建一个二值信号量…

FreeRTOS入门基础

RTOS是为了更好地在嵌入式系统上实现多任务处理和时间敏感任务而设计的系统。它能确保任务在指定或预期的时间内得到处理。FreeRTOS是一款免费开源的RTOS&#xff0c;它广泛用于需要小型、预测性强、灵活系统的嵌入式设备。 创建第一个任务 任务函数&#xff1a;任务是通过函数…

FreeRTOS 互斥量 优先级反转(翻转)和优先级继承 详解

目录 什么是互斥量&#xff1f; 什么是优先级反转&#xff08;翻转&#xff09;和优先级继承 互斥量相关 API 函数 优先级反转&#xff08;翻转&#xff09;示例 使用互斥量优化优先级反转&#xff08;翻转&#xff09;问题示例 什么是互斥量&#xff1f; 在多数情况下&a…

AIR32F103(五) FreeRTOSv202112核心库的集成和示例代码

目录 AIR32F103(一) 合宙AIR32F103CBT6开发板上手报告AIR32F103(二) Linux环境和LibOpenCM3项目模板AIR32F103(三) Linux环境基于标准外设库的项目模板AIR32F103(四) 27倍频216MHz,CoreMark跑分测试AIR32F103(五) FreeRTOSv202112核心库的集成和示例代码 关于 先贴一下已经集…

2023最新版本 FreeRTOS教程 -3-消息队列-验证(动态创建)

队列概述 一块可读写的特殊缓冲区,读取空会导致任务挂起,以此来优化MCU的使用率 API函数 创建 g_xQueuePlatform xQueueCreate(10, //队列长度sizeof(struct input_data)//队列中每一个块的大小); 写入 xQueueSend(g_xQueuePlatform, &idata, 0);读取 xQueueReceive(g…

第9章_freeRTOS入门与工程实践之任务管理

本教程基于韦东山百问网出的 DShanMCU-F103开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id724601559592 配套资料获取&#xff1a;https://rtos.100ask.net/zh/freeRTOS/DShanMCU-F103 freeRTOS系列教程之freeRTOS入…

ZYNQ连载08-Lwip网络组件

ZYNQ连载08-Lwip网络组件 1. 添加Lwip包 2. Lwip配置 我这里关闭ipv6和dhcp。 3. tcp客户端 #include "include/my_tcp.h" #include "lwip/ip.h"#define THREAD_STACKSIZE 1024 #define SERVER_PORT 8000 #define SERVER_ADDR "192.168.3.190&qu…

FreeRTOS 任务基础知识

文章目录一、什么是多任务系统&#xff1f;二、FreeRTOS 任务与协程三、任务状态四、任务优先级五、任务实现六、任务控制块七、任务堆栈RTOS 系统的核心就是任务管理&#xff0c;FreeRTOS 也不例外&#xff0c;而且大多数学习 RTOS 系统的工程师或者学生主要就是为了使用 RTOS…

FreeRTOS实时操作系统(五)临界区及任务调度器

系列文章目录 文章目录 系列文章目录临界区代码保护任务调度器的挂起与保护 临界区代码保护 临界区&#xff1a;是指那些必须要完整运行的&#xff0c;不能被打断的代码 适用于&#xff1a; 1.外设初始化 2.操作系统的代码有很多不能被打断 3.用户自己的需求 一般在中断、任…

FreeRTOS教程10 低功耗

目录 1、准备材料 2、学习目标 3、前提知识 3.1、HAL 库基础时钟 3.1.1、使用 SysTick 定时器 3.1.1.1、工作原理 3.1.1.2、中断处理 3.1.2、使用其他定时器 3.1.2.1、工作原理 3.1.2.2、中断处理 3.2、FreeRTOS 基础时钟 3.2.1、工作原理 3.2.2、中断处理 3.3、…

FreeRtos任务创建分析

以xTaskCreateStatic为例。 xTaskCreateStatic中调用了两个函数&#xff1a;prvInitialiseNewTask 和prvAddNewTaskToReadyList 一、prvInitialiseNewTask分析 初始化栈&#xff1a; 1、1 把栈都初始化成了0xa5&#xff0c;可以通过打印任务栈来确定是不是被用过了&#xf…

AWTK实现汽车仪表Cluster/DashBoard嵌入式GUI开发(六):FREERTOS移植

前言: 一般的GUI工程都需要一个操作系统,可能是linux,重量级的,也可能是FreeRTOS,轻量级的。 一句话理解那就是工程就是FreeRTOS task任务的集合。 一个main函数可以看到大框架: 很显然,除了第一个是硬件配置的初始化,中间最重要的部分就是要创建任务。而一个任务主…

Arduino中使用FreeRTOS多任务处理

RTOS工作原理 内核是操作系统的核心组件。 Linux 等操作系统使用内核&#xff0c;允许用户同时访问计算机。 每个正在执行的程序都是操作系统控制下的任务&#xff08;或线程&#xff09;。 如果一个操作系统能够以这种方式执行多个任务&#xff0c;则可以说是多任务处理。 多…

ESP-IDF学习——1.环境安装与hello-world

ESP-IDF学习——1.环境安装与hello-world 0.前言一、环境搭建1.官方IDE工具2.vscode图形化配置 二、示例工程三、自定义工程四、点灯五、总结 0.前言 最近在学习freertos&#xff0c;但由于买的书还没到&#xff0c;所以先捣鼓捣鼓ESP-IDF&#xff0c;因为这个比Arduino更接近底…

NXP iMX8MM Cortex-M4 核心 GPT Capture 测试

By Toradex秦海 1). 简介 NXP i.MX8 系列处理器均为异构多核架构 SoC&#xff0c;除了可以运行 Linux 等复杂操作系统的 Cortax-A 核心&#xff0c;还包含了可以运行实时操作系统比如 FreeRTOS 的 Cortex-M 核心&#xff0c;本文就演示通过 NXP i.MX8MM 处理器集成的 Cortex-…

ZYNQ连载03-Vivado创建工程

ZYNQ连载03-Vivado创建工程 1. 硬件参数 名称参数主控xc7z020clg400-2DDRMT41J256M16RE-125 2. 创建工程 3. 串口配置 4. DDR配置 5. SD配置 6. ETH配置 7. USB配置 8. 导出硬件 Generate Output ProductsCreate HDL WrapperExport Hardware Platform 执行以上步骤后&#…

FreeRTOS qemu mps2-an385 bsp 移植制作 :串口打印篇

相关文章 FreeRTOS qemu mps2-an385 bsp 移植制作 &#xff1a;环境搭建篇 FreeRTOS qemu mps2-an385 bsp 移植制作 &#xff1a;系统启动篇 FreeRTOS qemu mps2-an385 bsp 移植制作 &#xff1a;系统运行篇 开发环境 Win10 64位 VS Code&#xff0c;ssh 远程连接 ubuntu …

【11】FreeRTOS的延时函数

目录1.延时函数-介绍2.相对延时函数-解析2.1函数prvAddCurrentTaskToDelayedList-解析2.3滴答定时器中断服务函数xPortSysTickHandler()-解析2.4函数taskSWITCH_DELAYED_LISTS() -解析3.延时函数-实验4.总结1.延时函数-介绍 函数描述vTaskDelay()相对延时xTaskDelayUntil()绝对…

【ESP32+freeRTOS学习笔记之“ESP32环境下使用freeRTOS的特性分析(4-多核下的临界区)”】

目录关于临界区API的更改临界区API的工作过程使用临界区的限制和注意事项关于临界区API的更改 Vanilla FreeRTOS通过禁用中断来实现临界区域&#xff0c;这可以防止抢占式上下文切换和在临界区域提供ISR&#xff08;中断服务程序&#xff09;服务。因此&#xff0c;进入临界区…

FreeRTOS 任务切换

文章目录一、PendSV 异常二、FreeRTOS 任务切换场合1. 执行系统调用 taskYIELD()2. 系统滴答定时器(SysTick)中断 SysTick_Handler三、PendSV 中断服务函数 PendSV_Handler()四、查找下一个要运行的任务 vTaskSwitchContext()五、FreeRTOS 时间片调度六、时间片调度实验RTOS 系…

FreeRTOS的二值信号量和互斥量之间的区别和联系

目录 1. 二值信号量和互斥量的作用 1.1 二值信号量的作用 1.2 互斥量的作用 2. FreeRTOS二值信号量和互斥锁关系 2.1 不同点 2.2 相同点 3. 如何选择 3.1 根据场景选择合适的同步机制 3.2 根据优先级设计同步机制 FreeRTOS是一款广泛应用于嵌入式系统中的实时操作系统…

FreeRTOS实时操作系统(三)任务挂起与恢复

系列文章目录 FreeRTOS实时操作系统&#xff08;一&#xff09;RTOS的基本概念 FreeRTOS实时操作系统&#xff08;二&#xff09;任务创建与任务删除&#xff08;HAL库&#xff09; 文章目录 系列文章目录前言任务挂起与恢复普通挂起恢复实例中断恢复实例 前言 继续跟着正点…

FreeRTOS 队列

1. 简介 1.1 FreeRTOS 中所有的通信与同步机制都是基于队列实现的

FreeRTOS学习十(低功耗)

低功耗实现概念 RTOS在一般的应用中&#xff0c;处理器大量的时间都在处理空闲任务&#xff0c;此时可以考虑让处理器在空闲任务的时候进入低功耗模式。当需要处理应用层代码的时候就将处理器从低功耗模式唤醒。FreeRTOS就是通过在处理器处理空闲任务的时候将处理器设置为低功耗…

学习FreeRTOS(3):两种中断

学习FreeRTOS(3)&#xff1a;两种中断 典型情况下&#xff0c;程序进入临界区将关闭所有中断。FreeRTOS则提供了一种机制&#xff0c;在进入临界区时仅关闭部分中断&#xff0c;另一部分中断可以继续响应。这种机制让系统享有多任务特性的同时保证极高的实时性。 http://blog…

Arduino IDE将FreeRTOS用于STM32

介绍 适用于STM32F103C8的FreeRTOS STM32F103C是一种能够使用FreeRTOS的ARM Cortex M3处理器。 我们直接在Arduino IDE中开始使用STM32F103C8的FreeRTOS。 我们也可以使用Keil&#xff0c;但是在这种情况下&#xff0c;我们需要下载文件并将其粘贴到Keil路径中&#xff0c;与…

FreeRTOS(任务管理的创建、删除、挂起、恢复)

目录 一、任务的基本概念 二、任务状态的概念 1、Running—运行态&#xff1a; 2、Ready—就绪态 3、Blocked—阻塞态 4、Suspended—挂起态 三、任务状态的切换 四、系统启动 1、vTaskStartScheduler()函数 1.1 作用 1.2 启动函数介绍 2、空闲任务 2.1 空闲任务的作…

详解FreeRTOS:FreeRTOS任务管理程序设计思路(基础篇—9)

目录 1、中断服务函数 2、任务 3、空闲任务 4、任务的执行时间 作为一位RTOS程序开发者,要对自己设计的嵌入式系统要了如指掌,任务的优先级信息,任务与中断的处理,任务的运行时间、逻辑、状态等都要知道,才能设计出好的系统,所以,在设计的时候需要根据需求制定框架。…

FreeRTOS( 任务与中断优先级,临界保护)

资料来源于硬件家园&#xff1a;资料汇总 - FreeRTOS实时操作系统课程(多任务管理) 目录 一、中断优先级 1、NVIC基础知识 2、FreeRTOS配置NVIC 3、SVC、PendSV、Systick中断 4、不受FreeRTOS管理的中断 5、STM32CubeMX配置 二、任务优先级 1、任务优先级说明 2、任务…

FreeRTOS(事件组)

资料来源于硬件家园&#xff1a;资料汇总 - FreeRTOS实时操作系统课程(多任务管理) 目录 一、事件的概念与应用 1、事件的概念 2、事件的应用 二、事件的运作机制 1、FreeRTOS中事件组的句柄 2、FreeRTOS 任务间事件标志组的实现 3、FreeRTOS 中断方式事件标志组的实现…

STM32 FLASH 读写数据

1. 《STM32 中文参考手册》&#xff0c;需要查看芯片数据手册&#xff0c;代码起始地址一般都是0x8000 0000&#xff0c;这是存放整个项目代码的起始地址 2. 编译信息查看代码大小&#xff0c;修改代码后第一次编译后会有这个提示信息 2.1 修改代码后编译&#xff0c;会有提示…

FreeRTOS基础七:资源管理

简介 在多任务环境下&#xff0c;多个任务访问同一个资源会面临挑战。若不加防护机制&#xff0c;多个任务或者中断对同一个资源的访问可能会导致错误。 例如&#xff0c;任务A需要在屏幕显示“Hello world”&#xff0c;他向屏缓冲区幕写入字符串"Hello w"时被任务…

FreeRTOS入门教程(空闲任务和钩子函数及任务调度算法)

文章目录 前言一、空闲任务概念二、钩子函数概念三、任务调度算法四、任务调度算法实验1.实验代码2.是否抢占3.时间片是否轮转4.空闲任务让步 总结 前言 本篇文章将带大家学习一下什么是空闲任务以及钩子函数&#xff0c;以及学习FreeRTOS中的任务调度算法&#xff0c;了解在F…

FreeRTOS入门教程(同步与互斥)

文章目录 前言一、同步与互斥概念二、在FreeRTOS中如何实现同步和互斥三、同步和互斥各类方法对比总结 前言 前几篇文章一直在围绕FreeRTOS中的任务创建&#xff0c;删除&#xff0c;优先级&#xff0c;调度算法进行讲解&#xff0c;那么从本篇文章开始将围绕同步与互斥来展开…

FreeRTOS入门教程(队列详细使用示例)

文章目录 前言一、队列基本使用二、如何分辨数据源三、传输大块数据总结 前言 上篇文章我们已经讲解了队列的概念和队列相关的API函数&#xff0c;那么本篇文章的话就开始带大家来学习使用队列。 一、队列基本使用 这个例子将会创建三个任务&#xff0c;其中两个任务用来发送…

freertos信号量之递归互斥信号量

freertos信号量之递归互斥信号量 简介例程 简介 递归互斥信号量&#xff08;Recursive Mutex Semaphore&#xff09;是一种特殊类型的互斥信号量&#xff0c;允许持有互斥信号量的任务多次重新获取这个互斥信号量。以下是递归互斥信号量的常用函数及其说明&#xff1a; 1&…

FreeRTOS 计数型信号量 详解

目录 什么是计数型信号量&#xff1f; 计数型信号量相关 API 函数 1. 创建计数型信号量 2. 释放二值信号量 3. 获取二值信号量 计数型信号量实操 什么是计数型信号量&#xff1f; 计数型信号量相当于队列长度大于1 的队列&#xff0c;因此计数型信号量能够容纳多个资源&a…

X2000 freeRTOS UVC Camera

一、修改config文件 进入SDK的tools/iconfigtool/IConfigToolApp目录&#xff0c;执行./IConfigTool指令&#xff0c;进入配置界面&#xff1a; Config.in 是生成配置界面的文件&#xff0c;Config是需要修改的配置文件&#xff0c;选择之后点击Open。 1、使能USB UVC功能 选…

FreeRtos Queue (一)

本篇主要讲队列的数据结构和初始化 一、队列的数据结构 二、队列初始化完是什么样子的 队列初始化的函数调用关系&#xff1a;xQueueGenericCreate->prvInitialiseNewQueue->xQueueGenericReset 所以&#xff0c;最终初始化完的队列是这样的 假设申请了4个消息体&…

FreeRTOS系列补充1:重点记忆知识点

1、FreeRTOS的调度策略、内部原理 FreeRTOS采用抢占式优先级调度策略。任务根据其优先级进行调度&#xff0c;优先级高的任务会抢占优先级低的任务的执行权。FreeRTOS使用任务控制块&#xff08;Task Control Block&#xff0c;简称TCB&#xff09;来管理任务信息和状态。调度…

freeRTOS内部机制——栈的作用

上图中*pa 和*pb分别为R0&#xff0c;R1&#xff0c;调用C函数时&#xff0c;第一个参数保存在R0中第二个参数保存在R1中。这是约定。 指令保存在哪里&#xff1f; 指令保存在flash上面 LR等于什么? LR是返回地址&#xff0c;函数执行完了过后LR等于下一条指令的地址 运行…

详解FreeRTOS:FreeRTOS消息队列(高级篇—1)

目录 1、队列简介 2、队列的运行机制 3、队列的阻塞机制 4、队列结构体 5、创建队列

08_FreeRTOS列表和列表项讲解

目录 列表和列表项的简介 列表 列表项 迷你列表项 列表和列表项的关系 列表相关API函数介绍 初始化列表vListInitialise函数详解 列表项的初始化函数vListInitialiseItem函数 列表项的插入vListInsert函数 列表项末尾插入vListInsertEnd函数 列表项的删除函数uxLis…

FreeRTOS学习第10篇--队列使用示例

FreeRTOS学习第10篇–队列使用示例 本文目标&#xff1a;FreeRTOS学习第10篇–队列使用示例 按照本文的描述&#xff0c;可以进行简单的使用队列。 本文实验条件&#xff1a;拥有C语言基础&#xff0c;装有编译和集成的开发环境&#xff0c;比如&#xff1a;Keil uVision5 …

18_FreeRTOS任务通知

目录 任务通知的简介 任务通知值的更新方式 任务通知的优势 任务通知的劣势 任务通知值和通知状态 发送通知相关API函数 接收通知相关API函数 任务通知模拟信号量实验 任务通知模拟消息邮箱实验 任务通知模拟事件标志组实验 任务通知的简介 任务通知:用来通知任务的…

STM32F103 移植FreeRTOS (附FreeRTOS源码和移植工程)

文章目录前言1. 移植FreeRTOS2. 测试FreeRTOS3. 移植工程前言 该篇环境为&#xff1a;STM32F103ZET6、Keil 库函数版本 F4、F7、H7移植同理。 FreeRTOS源码&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/10l8TmseEJKkFdwFY3qZc1Q?pwd8uqw 提取码&#xff1a;8uqw…

【FreeRTOS学习 - vTaskDelay 与 xTaskGetTickCount】相对延时与绝对延时

跟着韦东山老师FreeRTOS教学资料的学习记录 FreeRTOS全部项目代码链接&#xff08;更新中&#xff09; https://gitee.com/chenshao777/free-rtos_-study 1. 相对延时函数 void vTaskDelay( const TickType_t xTicksToDelay )TickType_t 实际上是 uint32_t 的宏 如果定时10…

GD32移植FreeRTOS+CLI过程记录

背景 之前我只在STM32F0上基于HAL库和CubeMX移植FreeRTOS&#xff0c;但最近发现国产化替代热潮正盛&#xff0c;许多项目都有国产化器件指标&#xff0c;而且国产单片机确实比意法的便宜&#xff0c;所以也买了块兆易创新的GD32F303开发板&#xff0c;试一试它的优劣。虽然GD…

STM32F4+FreeRTOS+LVGL实现嵌入式快速开发(缝合怪)

极速进行项目开发&#xff0c;只需要懂一款芯片架构一个操作系统一个GUI。各种部件程序全靠抄 &#xff0c;成为究极缝合怪。本文用stm32f407FreeRTOSlvgl演示一些demo。 原文链接&#xff1a;STM32F4FreeRTOSLVGL实现快速开发(缝合怪) lvgl官方的音乐播放器demo&#xff1a;…

FreeRTOS中的任务延时列表(笔记)

在引入延时列表之前&#xff0c;为了实现任务的阻塞延的方式&#xff1a; 是在任务控制块中内置了一个延时变量xTicksToDelay。每次任务需要延时的时候是将优先级图位表uxTopReadyPriority中对应的位清零&#xff08;即将任务挂起&#xff09;&#xff0c;并不会将任务从就绪列…

FreeRTOS多任务系统

FreeRTOS 文章目录 FreeRTOS1 单任务和多任务系统1.1 单任务系统1.2 多任务系统 2 FreeRTOS 任务状态3 FreeRTOS 任务优先级4 Free RTOS 任务调度方式4.1 抢占式调度4.2 时间片调度 5 FreeRTOS 任务控制块6 FreeRTOS 任务栈 1 单任务和多任务系统 1.1 单任务系统 单任务系统的…

手把手 S32K344移植FreeRTOS

版本信息 RTD:2.0.0.2022 S32DS:3.4.0.2020 下载 从S32K3参考软件下载FreeTROS FreeRTOS安装链接&#xff1a;https://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catidSW32K3-REFSW-D 根据S32DS版本和S32K3 RTD 2.0.0 Package找到对应的FreeRTOS的zip安装…

FreeRTOS学习笔记——FreeRTOS中断管理

精华总结&#xff1a; 中断优先级0为最高&#xff0c;任务优先级0为最低 中断优先级分组中为方便rtos管理4bit全部设置成抢占优先级 32单片机的中断管理是由3个寄存器完成&#xff08;名字忽略&#xff0c;具体功能忽略&#xff09;&#xff0c;三个寄存器都是32bit&#xff0c…

QEMU 仿真RISC-V freeRTOS 程序

1. 安裝RISC-V 仿真環境 --QEMU 安裝包下載地址: https://www.qemu.org/ 安裝命令及安裝成功效果如下所示, target-list 設定爲riscv32-softmmu, $ cat ~/project/qemu-8.0.4/install.sh sudo apt-get install libglib2.0-dev sudo apt-get install libpixman-1-dev ./co…

解决FreeRTOS程序跑不起来,打印调试却提示“Error:..\FreeRTOS\port\RVDS\ARM_CM3\port.c,244“的方法

前言 今天来分享一个不会造成程序编译报错&#xff0c;但会使程序一直跑不起来&#xff0c;并且通过调试会发现有输出错误提示的错误例子分析&#xff0c;话不多说&#xff0c;我们就直接开始分析~ 首先&#xff0c;我们说过这个例子在编译时候没有明示的错误提示&#xff0c…

STM32FreeRTOS任务通知(STM32cube高效开发)

文章目录 一、任务通知(一&#xff09;任务通知概述1、任务通知可模拟队列和信号量2、任务通知优势和局限性 (二) 任务通知函数1、xTaskNotify&#xff08;&#xff09;发送通知值不返回先前通知值的函数2、xTaskNotifyFromISR&#xff08;&#xff09;发送通知函数ISR版本3、x…

FreeRTOS系统配置

一、前言 在实际使用FreeRTOS 的时候我们时常需要根据自己需求来配置FreeRTOS&#xff0c;而且不同架构 的MCU在使用的时候配置也不同。FreeRTOS的系统配置文件为FreeRTOSConfig.h&#xff0c;在此配置文件中可以完成FreeRTOS的裁剪和配置&#xff0c;这是非常重要的一个文件&a…

沁恒 CH32V208(五): CH32V208 运行FreeRTOS示例的说明

目录 沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟沁恒 CH32V208(三): CH32V208 Ubuntu22.04 Makefile VSCode环境配置沁恒 CH32V208(四): CH32V208 网络DHCP示例代码分析沁恒 CH32V208(五): CH32V2…

FreeRTOS入门教程(队列的概念及相关函数介绍)

文章目录 前言一、队列概念二、队列的使用方法1.创建队列动态创建静态创建 2.复位队列3.删除队列4.写队列5.读队列6.查询队列7.覆盖/查看覆盖查看 总结 前言 本篇文章将带大家学习FreeRTOS中的队列&#xff0c;掌握什么是队列&#xff0c;并且学习如何使用队列&#xff0c;在什…

FreeRTOS 任务的创建与删除

目录 1. 什么是任务&#xff1f; 2. 任务创建与删除相关函数 任务创建与删除相关函数有如下三个&#xff1a; 任务动态创建与静态创建的区别&#xff1a; xTaskCreate 函数原型​编辑 vTaskDelete 函数原型 3. 创建两个任务进行点灯实操 使用CubeMX快速移植 1.增加两个…

FreeRtos 任务切换深入分析

一、背景知识&#xff1a; 1、任务切换包含三个基本流程&#xff1a;保护现场、更新TCB、恢复现场并跳转 2、freertos的任务切换是在xPortPendSVHandler 中断函数中完成的 3、中断函数在调用之前&#xff0c;硬件已经保存了r0,r1,r2,r3,r12,r14(LR),r15(pc)&#xff0c;恢复…

【RTOS】快速体验FreeRTOS所有常用API(10)资源管理

目录 十、资源管理10.1 基本概念10.2 关任务调度器10.3 关中断10.4 实例 十、资源管理 该部分在上份代码基础上修改得来&#xff0c;代码下载链接&#xff1a; https://wwzr.lanzout.com/iqBYJ1lauxof 密码:9adb 该代码尽量做到最简&#xff0c;不添加多余的、不规范的代码。 内…

使用GCC和FreeRTOS开发STM32

特点 使用 FreeRTOS 和 libopencm3 开发STM32 多任务应用程序学习如何使用 GCC 下载和设置 libopencm3 FreeRTOS 开发环境利用 FreeRTOS 创建任务、队列和互斥锁学习使用 I2C 总线使用 PCF8574 芯片添加 GPIO使用硬件定时器为 RC 控制创建 PWM 输出使用外部 Winbond W25Q32 闪…

ZYNQ7000---FLASH读写

提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Flash是什么&#xff1f;二、Flash的分类1、内部结构&#xff08;接口&#xff09;区分&#xff1a;2、外部接口区分&#xff1a;SPIQPSI Flash: QSPI 控制…

加上boot程序,FreeRTOS就跑不起来了

一、问题描述 bootloader跳转到APP时&#xff0c;app执行完初始化程序后死机 二、分析问题 第一步&#xff0c;执行app时死机死到哪里&#xff1f;通过DEBUG调试发现死到hardfault_handler()函数中&#xff0c;硬件错误&#xff0c;导致硬件错误的原因一般都是中断异常引起的。…

FreeRTOS 任务调度及相关函数详解(一)

文章目录一、任务调度器开启函数 vTaskStartScheduler()二、内核相关硬件初始化函数 xPortStartScheduler()三、启动第一个任务 prvStartFirstTask()四、中断服务函数 xPortPendSVHandler()五、空闲任务一、任务调度器开启函数 vTaskStartScheduler() 这个函数的功能就是开启任…

ESP8266 FreeRTOS开发环境搭建

1 ESP8266 FreeRTOS Linux环境设置 1) Download the mandatory tools sudo apt-get install autoconf gperf bison flex texinfo gawk libtool libncurses5-dev expat 2) mkdir /home/rdadmin/esp 3) cd /home/rdadmin/esp 4) git clone -b lx106 git://github.com/jcmvbkbc/cr…