FreeRtos-重要概念

devtools/2024/11/14 13:00:31/

1、任务优先级和中断优先级的区别

中断是MCU的硬件特性,由硬件事件或软件信号引起中断,运行哪个ISR是由硬件决定的。中断的优先级数字越低表示优先级别越高,所以中断的最高优先级为0

 FreeRTOS的任务是一个纯软件的概念,与硬件系统无关。任务的优先级是编程者在软件中赋予的,任务的优先级数字越低表示优先级越低,所以任务的最低优先级为0。FreeRTOS的任务调度算法决定哪个任务处于运行状态

注意:

 任务只有在没有ISR运行的时候才能运行,即使优先级最低的中断也可以抢占高优先级的任务的执行,而任务不能抢占ISR的运行【这一句需要重点解释】

2、中断屏蔽和临界代码段

 一个任务函数在执行的时候,可能会被其他高优先级的任务抢占CPU,也可能被任何一个中断的ISR函数抢占CPU。在某些时候,任务的某段代码可能很关键,需要连续执行完,不希望被其他任务或中断打断,这种程序段称为临界段(Critical Section)

 

3、在ISR函数中使用FreeRTOS API函数注意事项 

 在中断的ISR里调用普通的API函数可能会存在问题,例如调用一个API函数使一个任务进入阻塞状态,因为ISR执行的时候是不能进行任务调度的。
为此,FreeRTOS的API函数分为两个版本:一个称为“任务级”,也就是普通名称的API函数;另一个称为“中断级”,即带后缀“FromISR”的函数或带后缀“FROM ISR”的宏函数,中断级API函数也被称为中断安全API函数。

 注意:

在ISR中绝对不能使用任务级API函数,但是在任务函数中可以使用中断级API函数。而且,在FreeRTOS不能管理的高优先级中断的ISR里,连中断级API函数也不能用

4、中断及其ISR程序设计原则

中断的优先级和ISR函数程序设计应该遵循如下的原则:
【1】中断分为FreeRTOS不可屏蔽中断和可屏蔽中断,要根据中断的重要性和功能为其设置合适的中断优先级。
【2】ISR函数的代码应该尽量简短,将处理功能延迟到任务里去实现。
【3】在可屏蔽中断的ISR函数里能调用中断级的FreeRTOS API函数,绝对不能调用普通的FreeRTOS API函数。在不可屏蔽中断的ISR函数里,不能调用任何的FreeRTOSAPI函数。

 


http://www.ppmy.cn/devtools/114524.html

相关文章

十.在vue中,发送axios请求应该放在created里还是mounted里?详解

在vue中,发送axios请求应该放在created里还是mounted里?详解 在回答这个问题之前,我们需要知道vue的生命周期钩子顺序:beforecreated(组件创建前,dom元素、data都为undefined) created&#xf…

Java ERP系统源码深度解析:Spring Cloud Alibaba和Spring Boot的微服务实战

在当今数字化时代,企业对高效、稳定且易于扩展的管理系统的需求日益增长。为了满足这一需求,我们精心打造了一款基于Java技术的ERP(Enterprise Resource Planning)管理系统。该系统充分利用了Spring Cloud Alibaba、Spring Boot、…

Nginx 在处理大规模分布式系统时有哪些性能优化技巧?

在处理大规模分布式系统时,Nginx 可以通过多种方式进行性能优化。以下是一些有效的性能优化技巧: 优化 Worker 进程与连接数: 根据服务器的 CPU 核数设置 worker_processes 参数,通常设置为自动检测或等于 CPU 核心数。调整 worke…

003InputSystem新输入系统学习工作笔记

InputSystem新输入系统学习工作笔记 一、概述及理论学习 一种新的输入系统,可以用作UnityEngine.Input 中针对 Unity 典型输入系统的更具扩展性和可自定义的替代方案。 二、Demo案例学习 1**、首先是导入InputSystem包** 打开Package Manager面版,面…

服务器连接不上怎么办?

服务器连接不上怎么办?服务器连接问题对于依赖网络服务的企业来说可能是一场灾难,因为它可能导致业务中断和数据访问困难。当遇到服务器连接不上的情况时,迅速而准确地诊断问题并采取相应措施至关重要。聚名网将介绍一些常见的故障排查步骤和…

VSCode 渲染 markdown md , 设置插件的背景颜色 Markdown Preview Enhanced

起因, 目的: VSCode 中, 安装 Markdown Preview Enhanced 这个插件之后,能渲染,但是背景颜色太亮了。 最近正在学习 css, 所以一试身手。 先看效果: 过程: Ctrl Shift P 打开命令面板。输入: Markdown Preview…

firewalld实现NAT端口转发

1、准备工作 # 开启 NAT 转发 firewall-cmd --permanent --zonepublic --add-masquerade # 开放 DNS 使用的 80 端口,tcp# 必须,否则其它机器无法进行域名解析 firewall-cmd --zonepublic --add-port80/tcp --permanent # 检查是否允许 NAT 转发 f…

荣耀时刻|Anzo Capital 闪耀2024国际金融产业博览会

【2024年9月5日-6日,中国香港】由数汇金融和汇友网主办的2024年国际金融产业博览会香港峰会在香港康得思酒店举行,Anzo Capital 昂首资本作为顶级赞助商和重磅受邀嘉宾出席了本次展会。 此次展会汇聚了众多行业领军企业、知名专家以及投资机构&#xff…