中断变轮询的一种机制

前言

MCU中断嵌套中断很容易引起问题,例如我们在MCU中引入串口shell,封装一些指令,如果这些指令中需要调用其他中断,例如I2C发送中断等,就很容易引起问题,这个时候我们就需要搞一个缓冲机制

思考

那么应该采用哪种缓冲机制呢?

  1. 消息队列:中断中的数据送入消息队列中,线程去轮询消息队列数据,对数据进行处理
  2. 缓冲区buff:中断往环形缓冲区扔数据,线程去轮询缓冲区数据,对数据进行处理
  3. 轮询中断标志位:这种方案,自己在使用过程中很容易丢数据,因为中断是很快的,在周期性很长的程序里,靠轮询中断标志位去读数据,很容易出现问题

总结

中间搞一层buff作为缓冲,在中断和业务层建立buff,有效解决中断嵌套的问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/34819.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

element 问题整合

没关系,凡事发生必有利于我 文章目录 一、el-table 同级数据对齐及展开图标的位置问题二、el-table 勾选框为圆角及只能勾选一个 一、el-table 同级数据对齐及展开图标的位置问题 element 官方提供的扩展tree型数据在表格里默认是靠左边对齐,项目需求需要…

超越边界:探索深度学习的泛化力量

深度学习的泛化能力 一. 简介1.1 深度学习的定义1.2 什么是泛化能力1.3 深度学习模型的泛化能力1.4 提升深度学习模型的泛化能力 二. 泛化能力的重要性2.1 深度学习中泛化能力的作用2.1.1 防止过拟合2.1.2 处理噪声和不完整数据2.1.3 对于数据分布的变化具有适应性 2.2 泛化能力…

Gitlab合并代码并解决冲突演示

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

【SQL】数据操作语言(DML) - 删除数据:精细管理数据的利刃

目录 前言 DELETE语句的基础使用 删除指定记录 清空表与删除表数据的区别 注意 前言 在数据库管理的日常工作中,数据的删除是一项需要格外小心的操作,因为一旦数据被删除,往往难以恢复。数据操作语言(DML)中的DELETE语句&am…

景区智能厕所系统让旅游更便捷、更舒适

在旅游业蓬勃发展的今天,游客对于旅游体验的要求越来越高,而景区的基础设施建设也在不断创新和完善。其中,景区智能厕所系统的出现,无疑为游客带来了更加便捷、舒适的旅游体验。 一、智能厕所系统首先体现在其精准的定位和引导功能…

20个你必须知道的Linux小命令

20个你必须知道的Linux小命令 Linux系统强大的命令行工具让我们可以高效地管理和监控系统。本文将介绍20个分门别类的小命令,它们的安装方式和使用技巧,希望能提升你的工作效率。 系统监控 1. htop 简介:htop 是一个交互式的进程查看器,比 top 更友好且功能更强大。 特…

three.js 第六节 - 纹理以及贴图【.hdr文件(hdr贴图)】- 色彩空间

素材 这是素材 更多素材、案例、项目 好几个G一共,加我q178373168,60大洋拿走 源码 源码 // ts-nocheck // 引入three.js import * as THREE from three // 导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls…

C# 判断值是否在枚举里

你还在代码里面通篇通过数字的定义类型。比如type为1 表示xx,type为2 表示yy吗?然后程序里面通过数字1和2来判断吗?比如下面类似的代码: if(type1){ //.... } else if(type2){ //... } else if(type3){ //... } 老鸟们一般都会用枚举来定义…

MySQL索引,事务

一.MySQL索引介绍 索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址。在数据十分大的时候,索引可以大大加快查询的速度。这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数…

【LeetCode 274】H指数

1. 题目 2. 分析 这题没啥难度,需要熟练运用Python API。 sort(reverseTrue)可以用于排序List,并且倒序排序。 3. 代码 class Solution:def hIndex(self, citations: List[int]) -> int:citations.sort(reverseTrue)res 0for idx,cite in enume…

前端面试题(十)答案版

1. HTTPS 一次会发送几次请求? HTTPS 一次会发送至少 2 次请求: - 第一次是客户端发送 HTTP 请求,服务器返回 HTTP 状态码 301 或 302,要求客户端访问 HTTPS。 - 第二次是客户端根据重定向请求,发送 HTTPS 请求,并完成 SSL/TLS 握手等流程。 2. 一个搜索框,多个页面共用,但每个…

动态规划2

目录 121 买卖股票的最佳时机 打家劫舍 62 不同路径 64 最小路径和 53 最大子数组和 (动归 普通数组部分) 152 乘积最大子数组 300 最长递增子序列 1143 最长公共子序列 72 编辑距离 121 买卖股票的最佳时机 给定一个数组 prices ,…

【C++】 ubuntu下获取屏幕尺寸、分辨率

1. 给/dev/fb0权限 sudo chmod 0777 /dev/fb0 注意:不执行这一条权限,无法获取任何数据 2. 获取屏幕尺寸 int fd; struct fb_var_screeninfo screenInfo; fd open("/dev/fb0",O_RDWR); ioctl(fd,FBIOGET_VSCREENINFO,&screenInfo); pr…

【毛毛虫案例-拖拽 Objective-C语言】

一、这个毛毛虫案例啊,是这个样子的, 1.首先,你这个脑袋,这个蓝色的脑袋,它是可以拽起来的, 下面的红色球,一个一个中心点之间,相互去附着, 其他的红色球,是拖不起来的, 只有这个蓝色的东西,可以拽起来,这个蓝色的View,还有重力, 这个蓝色的View,我在拖动它…

[深度学习] 变分自编码器VAE

变分自编码器(Variational Autoencoders, VAEs)是一种生成模型 Tutorial on Variational Autoencoders,它结合了概率图模型和深度学习,通过学习数据的潜在表示来生成新的数据样本。VAEs在数据生成、异常检测、数据压缩等领域具有广…

如何应对UI测试自动化的不稳定循环!

以下为作者观点: 当我加入UI自动化团队时,我很高兴能为新功能的自动化测试用例开发做出贡献。然而,我很快意识到团队花费了大量时间来修复之前迭代中不稳定的测试。这种情况让我感到困惑,因为当自动化测试脚本已知不稳定时&#…

git使用中 error: pathspec ‘XXX‘ did not match any file(s) known to git 报错解决方法

报错原因 本人在本地开发中,切换线上新创建分支时: $ git checkout master01 error: pathspec master01 did not match any file(s) known to git解决方式 $ git branch -a | grep master * masterremotes/origin/HEAD -> origin/masterremotes/or…

python开发api接口框架

在现代软件开发领域中,API接口框架扮演着非常重要的角色。它可以帮助开发者快速搭建和部署API,提供数据交换的接口,使得不同系统之间可以进行通信和数据传输。Python作为一门功能强大且易于学习的编程语言,被广泛应用于API接口的开…

【Windows 常用工具系列 17 -- windows bat 脚本多参数处理】

请阅读【嵌入式开发学习必备专栏】 文章目录 bat 脚本命令行参数使用示例多参数处理使用示例遍历所有参数 bat 脚本命令行参数 在Windows批处理(.bat)脚本中接收命令行参数是一个常见的需求,这样的脚本能够根据提供的参数执行不同的操作。命…

Kubernetes之Controller详解

本文尝试从Kubernetes Controller的种类、交互逻辑、最佳实践、伪代码示例及历史演进5个方面对其进行详细阐述,希望对您有所帮助! 一、Kubernetes Controller种类 Kubernetes Controller Manager 是 Kubernetes 集群的核心组件之一,负责管理…