FreeRTOS 任务函数里面的死循环

2023-05-16

        任务函数是一个无限循环且不带返回值的函数

        任务必须是死循环,否则任务将经过 LR 返回,如果 LR 指向了非法内存就会产生HardFault_Handler,而 FreeRTOS 指向一个死循环,那么任务返回以后就在死循环中执行,这样子的任务是不安全的。

        编程时应避免这种状况,任务通常都是死循环而且无返回值的。

        若是单次任务,执行一次以后就进行删除,则不影响系统运行,所以,只执行一次的任务在执行完毕要记得及时删除。即就是在任务结束的时候,加上 vTaskDelete(NULL)

        循环任务里面的延时函数必须使用 FreeRTOS 里面提供的延时函数,并不能使用咱们裸机编程中的那种延时。这两种延时的区别是 FreeRTOS 里面的延时是阻塞延时,即调用vTaskDelay()函数的时候,当前任务会被挂起,调度器会切换到其它就绪的任务,从而实现多任务。若是仍是使用裸机编程中的那种延时,那么整个任务就成为了一个死循环,若是刚好该任务的优先级是最高的,那么系统永远都是在这个任务中运行,比它优先级更低的任务没法运行,根本没法实现多任务。

        当任务进入延时的时候,由于没有另外就绪的用户任务,那么系统就会进入空闲任务,空闲任务是 FreeRTOS 系统本身启动的一个任务,优先级最低。当整个系统都没有就绪任务的时候,系统必须保证有一个任务在运行,空闲任务就是为这个设计的。当用户任务延时到期,又会从空闲任务切换回用户任务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FreeRTOS 任务函数里面的死循环 的相关文章

  • 【FreeRtos学习笔记】STM32 CubeMx——Timers(定时器)

    目录 1 软件定时器 2 示例程序 2 1 例程功能 2 2 步骤 2 3 实验结果 2 4 函数讲解 1 软件定时器 定时器是MCU常用的外设 我们在学习各种单片机时必然会学习它的硬件定时器 但是 MCU自带的硬件定时器资源是有限的 而且
  • FreeRTOS内核配置说明---FreeRTOS Kernel V10.2.1

    FreeRTOS内核是高度可定制的 使用配置文件FreeRTOSConfig h进行定制 每个FreeRTOS应用都必须包含这个头文件 用户根据实际应用来裁剪定制FreeRTOS内核 这个配置文件是针对用户程序的 而非内核 因此配置文件一般
  • STM32CubeMX+FreeRTOS学习笔记(一)

    嵌入式实时操作系统FreeRTOS 基本概述 在嵌入式领域当中 实时操作系统的应用越来越广泛了 目前嵌入式操作系统种类很多 例如 Clinux C OS II C OS III FreeRTOS RT Thread等等 这篇文章所记录的就是
  • FreeRTOS-内核控制函数

    FreeRTOS 内核控制函数 FreeRTOS中有一些内核函数 一般来说这些内核函数在应用层不会使用 但是内核控制函数是理解FreeRTOS中断的基础 接下来我们逐一分析这些内核函数 taskYIELD 该函数的作用是进行任务切换 这是一
  • FreeRTOS学习笔记 6 - 互斥量

    目录 1 创建 2 获取 3 释放 4 测试 FreeRTOS不支持调度方式的设置 所以下面2个宏定义可以随意设置值 define RTOS IPC FLAG FIFO 0x00 define RTOS IPC FLAG PRIO 0x01
  • 一文教你学会keil软件仿真

    仿真在我们调试代码中是非常重要的 通过仿真 我们可以快速定位到错误代码 或者错误逻辑的地方 这里我就以上一篇博客为例 教大家如何软件仿真 软件仿真不需要单片机 直接通过keil软件进行代码调试 一 打开工具 二 选择软件仿真 三 开始仿真
  • 【FreeRTOS开发问题】FreeRTOS内存溢出

    FreeRTOS内存溢出 如下图所示 FreeRTOS编译完成后可以看到 系统提示无法分配内存到堆 Objects Template axf Error L6406E No space in execution regions with A
  • STM32移植FreeRTOS的Tips

    转自 http bbs armfly com read php tid 7140 1 在FreeRTOS的demo文件夹中拷贝对应的FreeRTOSConfig h文件后 需要加入一行 define configUSE MUTEXES 1
  • ZYNQ中FreeRTOS中使用定时器

    使用普通的Timer中断方式时 Timer中断可以正常运行 但是UDP通信进程无法启动 其中TimerIntrHandler是中断服务程序 打印程序运行时间与从BRAM中读取的数据 void SetupInterruptSystem XSc
  • FreeRTOS学习笔记<中断>

    中断概念 Cortex M的NVIC最多支持240个IRQ 中断请求 1个不可屏蔽中断 NMI 1个Systick 滴答定时器 定时器中断和多个系统异常 Cortex M处理器有多个用于管中断和异常的可编程寄存器 这些寄存器大多数都在 NV
  • FreeRTOS记录(九、一个裸机工程转FreeRTOS的实例)

    记录一下一个实际项目由裸机程序改成FreeRTOS 以前产品的平台还是C8051单片机上面的程序 硬件平台改成了STM32L051 同时使用STM32CubeMX生成的工程 使用FreeRTOS系统 EEPROM数据存储读取函数修改更新 2
  • 【FreeRTOS】任务通知的使用

    作者主页 凉开水白菜 作者简介 共同学习 互相监督 热于分享 多加讨论 一起进步 专栏资料 https pan baidu com s 1nc1rfyLiMyw6ZhxiZ1Cumg pwd free 点赞 收藏 再看 养成习惯 订阅的粉丝
  • freertos————互斥锁

    线程安全 多线程程序处于一个多变的环境 可访问的全局变量和堆数据随时可能被其他的线程改变 多个线程同时访问一个共享数据 可能造成严重的后果 出现问题的是之前移植了一个freemodbus的从站 多个任务访问全局变量保持寄存器区 导致最后读出
  • stm32f103zet6移植标准库的sdio驱动

    sdio移植 st官网给的标准库有给一个用于st出的评估板的sdio外设实现 但一是文件结构有点复杂 二是相比于国内正点原子和野火的板子也有点不同 因此还是需要移植下才能使用 当然也可以直接使用正点原子或野火提供的实例 但为了熟悉下sdio
  • 啊哈C的简单使用

    打开啊哈C 新建一个程序输出hello world include
  • 基于STM32的FreeRTOS学习之中断测试实验(五)

    记录一下 方便以后翻阅 本章内容是接着上一章节进行的实际演练 1 实验目的 FreeRTOS可以屏蔽优先级低于configMAX SYSCALL INTERRUPT PRIORITY的中断 不会屏蔽高于其的中断 本次实验就是验证这个说法 本
  • freeRTOS出现任务卡死的情况。

    最近在做一个产品二代升级的项目 代码是上一任工程师留下的 很多BUG 而且融合了HAL库和LL库 以及github上下载的GSM源码 很不好用 我这边是将2G模块换成了4G 且添加了单独的BLE模块 因此只在源码的基础上 去除2G和BLE代
  • FreeRTOS 配置TICK_RATE_HZ

    我使用的是带有 5 4 版 FreeRTOS 的 MSP430f5438 我有一个有趣的问题 我无法弄清楚 基本上 当我将 configTICK RATE HZ 设置为不同的值时 LED 闪烁得更快或更慢 它应该保持相同的速率 我将 con
  • 防止GCC LTO删除函数

    我使用 GCC ARM Embedded 和 FreeRTOS FreeRTOS具有的功能vTaskSwitchContext 仅在某些情况下使用 内联汇编代码 问题是 当我使用LTO时 GCC不考虑内联汇编代码并认为该函数没有被使用 因此
  • 有关 CMake 错误的问题:没有为目标提供源

    我正在尝试使用 cmake 和 eclipse 将 FreeRtos 添加到我的项目中 但出现错误 我运行的是 debian 10 我的 cmake 版本是 3 13 4 cmake 的文件可以在以下位置找到这个 git 仓库 https

随机推荐

  • HTTP请求首部——Authorization

    前几天的任务需要用到Authorization认证 xff0c 任务比较急 xff0c 就照着给的例子写好了 xff0c 现在任务结束了 xff0c 还是来了解一下这个Authorization Authorization 是一个HTTP安
  • 如何真正理解用户标签体系?

    对用户标签的理解不够透彻 xff1f 用户标签体系创建的方法论总是三头两绪 xff1f 具体业务场景中 xff0c 经常找不到数据分析的思路 xff1f 本文根据神策数据业务咨询师钟秉哲以 构建用户标签体系 xff0c 助力企业精细化运营
  • ubuntu设置tightvncserver自动启动

    vi etc init d vnc bin bash PATH 61 34 PATH usr bin 34 export USER 61 34 root 34 DISPLAY 61 34 1 34 DEPTH 61 34 24 34 GEO
  • 毕业设计小车搭建(1)测试思岚A1雷达数据

    采用的思岚A1型号的雷达 ubuntu系统上采集雷达数据并rviz显示 主要是根据官网给的教程步骤一步一步走下来的 思岚激光雷达 首先下载对应的官方功能包GitHub Slamtec rplidar ros 功能包创建结束后注意环境变量写入
  • 如何关闭docker容器里的进程

    如何关闭docker容器里的进程 1 使用docker exec 容器名 ps ef命令查看进程信息 示例 xff1a 创建名为 34 redis 34 的容器 xff0c 并在容器内部和宿主机中查看容器中的进程信息 xff1a 2 然后进
  • 浅谈嵌入式与互联网(详细)

    纲要 一 什么叫嵌入式 xff0c 以及与人工智能的关系 xff1f 二 嵌入式岗位 三 浅谈嵌入式开发优缺点 四 与互联网 CS相关的 xff0c 如平台服务器 xff0c 前端 APP 软件 对比 五 能力要求和薪资 参考知乎 以下均采
  • 那一年读过的技术经典书

    转载请注明 xff1a http blog csdn net xinzhangyanxiang article details 10199757 大学刚毕业 xff0c 总结起来读过的书并不算多 xff0c 而且主要集中在大四的时期读的 x
  • 关于Ubuntu的串口链接上但接收不了数据问题

    作为开始小白的我 xff0c 一开始链接串口以为按装了CuteCom就能使用 xff0c 不知道使用串口前是需要打开权限的 xff0c 所以我在CuteCom的时候链接上但收不了数据 xff0c 后来才知道打开权限 首先第一步 1 打开你的
  • 进程的调用

    每个进程都有一个非负整数的唯一ID xff0c 用pid t结构表示其ID xff0c 其中ID为0的是调度进程 xff0c 常被称为交换进程 是内核的一部分为系统进程 xff0c ID为1的是init进程 xff0c 他是一个普通用户进程
  • Oracle VM VirtualBox UUID already exists 问题解决

    当我们在VirtualBox下装完系统 xff0c 想拷贝一份备用的时候 xff0c 导入备份的虚拟磁盘的会提示VirtualBox UUID already exists问题 xff0c 其实这个问题在网络上早就有各种不同的解决方案了 x
  • Mac下将文件复制到移动硬盘

    现象分析 xff1a 如果你在使用Mac系统时 xff0c 发现Mac系统和移动硬盘之间无法拷贝数据 xff0c 很有可能你的移动硬盘是NTFS格式的 xff0c 因为目前苹果系统的硬盘格式暂时不兼容这样的格式拷贝 xff0c 只能从NTF
  • Maven打包时报Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war解决方案

    问题现象 xff1a 用Maven打包时 xff0c 报Failed to execute goal org apache maven plugins maven war plugin 2 2 war错误 原因分析 xff1a 打包时在We
  • mac系统中怎么把显示在桌面上的磁盘图标取消掉?

    问题现象 xff1a 安装一些软件时 xff0c 桌面上总会出现外置磁盘图标如图1 下面就简单介绍下怎样取消这种外置图标 图1 解决方案 xff1a finder xff0d 偏好设置 xff0d 通用 xff0d 外置设置 取消前面对话框
  • tensorflow深度学习实战笔记(三):使用tensorflow lite把训练好的模型移植到手机端,编译成apk文件

    目录 一 准备工作 1 1模型训练 1 2模型固化和pb转tflite 1 3下载tensorflow源码 1 4安装android studio 二 在Android studio中进行开发 2 1修改app的build gradle文件
  • nvidia和cuda对应以及cuda和cuDNN对应版本

  • 修改spring Boot启动时的默认图案Banner

    一 修改Banner spring Boot启动的时候会有一个默认的启动图案 如下图 39 39 39 39 96 39 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • Java线程池自学手册Executor的使用

    准备做一个系列文章 xff0c 将零散的知识整理起来分享给大家 xff0c 希望给大家的工作和学习带来帮助 目录 1 Executor 2 ExecutorService 3 Executors 4 ThreadPoolExecutor 5
  • 常用开发资源整理(更新日:2017/4/26)

    说明 xff1a 为了方便 xff0c 今后将工作中用到一些常用的资源链接进行整理 xff0c 初衷是想发些各版本的冷资源 xff0c 免得在需要的时候花大量时间寻找 一 开发语言 1 Spring各版本压缩包下载 http repo sp
  • 博客地址迁移www.xiangquba.cn

    大家好 xff0c 非常感谢大家一直以来对我的关注 xff0c 博客有一年时间没有更新了 xff0c 其实我并没有停止分享 xff0c 只是这一年时间并没有在csdn上更新 xff0c 原因是因为起初csdn有一个自己给csdn发送短信绑定
  • FreeRTOS 任务函数里面的死循环

    任务函数是一个无限循环且不带返回值的函数 任务必须是死循环 xff0c 否则任务将经过 LR 返回 xff0c 如果 LR 指向了非法内存就会产生HardFault Handler xff0c 而 FreeRTOS 指向一个死循环 xff0