为什么中断子程序中不能使用延时和过长的程序?

2023-05-16

A回答:
通常在中断子程序中是不调用延时子程序的,这样会增加中断处理时间,如果有其它低级中断了,就会延误响应中断了。

所以,中断子程序中不要写调用延时子程序,中断子程序也不要写得过长,处理过多的任务,要尽快处理后及时返回,如果中断一次有很多任务需要执行完全,可以在中断子程序中设置一个标志位,在主程序中查这个标志位,当标志为1时,就在主程序中完成这些任务,这样就不会影响其它中断源的中断,也不会使中断产生混乱。

首先,对于CPU频率的理解,1Mhz的频率CPU周期就是1us(1 / 1000000秒)
B回答:
1、既然1Mhz对应1us(也就是1us对应一个指令周期,不考虑流水线的单指令周期),这样,一个指令周期就对应一条指令。

2、假设每条指令都有2个字节大小(16位指令),这样,1ms时间内1Mhz的CPU可以大约运行2KB的代码。因此如果中断处理函数的代码越接近2KB,则越容易对中断。

3、假设一个10Khz外设,中断处理程序允许的最大安全尺寸是多少?

易Cortex M3为例,支持16/32位指令操作(大部分为单周期指令),假设主频为72Mhz,100Khz相当于100us 。

则如果是16位指令(前面算过1ms 2KB代码),72 * 100 * 2到72 * 100 * 4之间(14.4~28.8),去最小14.4KB。

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

为什么中断子程序中不能使用延时和过长的程序? 的相关文章

随机推荐

  • vue初始化项目结构,并引入ant-design

    前提 xff1a node已经安装好 npm install cnpm g 安装淘宝镜像 npm可能速度不快 xff0c 所以可以使用cnpm来替代 cnpm install vue 安装vue cnpm install global vu
  • Argument for @NotNull parameter ‘quickFixes‘ of com/intellij/ope

    项目启动不了 idea 报错 xff1a Argument for 64 NotNull parameter quickFixes of com intellij ope 未配置jdk
  • 在同类中方法互调事务失效

    同类中A方法未加 64 Transactional xff0c B方法加 64 Transactional A调用B B的事务注解并未生效 众所周知 xff0c 事务是通过Aop动态代理实现的 xff0c 当A方法不加 64 Transac
  • @PropertySource和@ImportResource

    person properties person name 61 admin person address 61 shanghai person email 61 123 64 qq com person user card 61 3213
  • jdk1.8中HashMap的扩容,从新增第一个元素开始

    置灰部分在当前场景下不考虑 1 新增第一个元素 新增第一个元素总结 xff1a 先进行数组容量初始化 xff0c 初始大小为16 xff0c 扩容界限为12 xff0c 再找出数组对应位置 xff0c 将新增的值放入 2 继续新增元素 xf
  • redis解决分布式定时任务问题

    场景分析 xff1a 多服务器针对于定时任务带来的问题 xff0c 保证任务只在一个服务器上在执行 解决方案1 xff1a 只对一个服务器上的应用开启定时任务 xff0c 通过配置文件参数来设置 xff0c 不推荐 解决方案2 xff1a
  • Java堆中的分区

    Java堆分区 1 新生代 xff1a 新生代中分为Eden xff0c ServicorTo xff0c ServicorFrom区 Eden俗称伊甸区 xff0c 顾名思义 xff0c 就是新对象首次存在的区域 之后 xff0c 对象会
  • 打好基础之try-catch-finally执行顺序

    try catch finally是用来捕获异常 xff0c 保证程序的执行 先看一小段代码 xff1a public class TryCatchDemo public static void main String args div 4
  • Flask

    文章目录 Flask简介学习资料基本概念部署环境配置安装 Python3在Linux中配置Python3的虚拟环境配置Git安装第三方包 开始部署部署方式一 xff1a 直接启动部署方式二 xff1a gunicorn部署方式三 xff1a
  • iOS本地数据搜索 - UISearchController的简单实用

    在页面数据很多的时候我们通常会被要求加一个本地的搜索功能 xff0c 苹果给我们提供了一个封装的很好的控件UISearchController xff0c 下边介绍一下他的简单使用 定义需要的全局变量并初始化 span class hljs
  • 矩阵遍历问题

    这里记录些常见的矩阵遍历问题 xff0c 矩阵遍历没有什么简单的方法 xff0c 必须要遍历矩阵的每个元素 xff0c 因此在时间复杂度上没有什么简单的方法 xff0c 不过遍历时的方式可以不同 首先看下面例题 leetcode54 给定一
  • ubuntu系统添加环境变量3种方法

    说明 工作中 xff0c 我们自己编译安装的软件 xff0c 在系统中是无法在全局目录下自动识别的 xff0c 只能进入到相关目录下才能运行 xff0c 如在命令行下运行编译安装的php程序 xff0c 就得 usr local LAMP
  • Codeforces 897C(递归)

    点击打开链接 扎心题 xff0c 当时想法完全正确 xff0c 姿势不对 xff08 思维不够细腻 xff09 没过 题意 xff1a 给出四个字符串x y f0 z xff0c 并且给出递推公式 xff1a fi 61 x 43 fi 1
  • 天气预报API汇总

    目录 文章目录 一 天气预报平台 1 中国气象平台 2 心知天气 3 实况天气 4 YY天气 5 聚合天气 6 和风天气 7 彩云天气 8 咕咕天气 9 彩云天气 总结 一 天气预报平台 1 中国气象平台 优点 xff1a 中国气象局对外提
  • ResizeObserve 在 Echarts 的使用

    前言 前端图表经常要进行 resize 操作 xff0c 一般我们会想到监听 window resize event xff0c 但是这个事件只能监听 window 窗口大小的改变 xff0c 没有办法监听到某个div大小的改变 目前解决方
  • 运行java命令出现 Error: Invalid or corrupt jarfile XXX.jar

    运行java命令出现 Error Invalid or corrupt jarfile XXX jar 基本可以断定 xff0c 是jar不完整导致的 不完整 xff01 xff01 xff01 记住关键字 检查1 xff1a 检查是不是传
  • 页面间传值的方式

    从一个页面转向另一个页面的请求方式有两种 xff0c Post和Get 如果从原理上来探究他们的区别 xff0c 涉及到Http传输协议的细节 xff0c 这样深究下去 xff0c 就成华为人干的事了 xff0c 有空可以请教一下华为高人
  • 你现在无法访问 xxx.xxxx.com,因为网站使用的是 HSTS。网络错误和攻击通常是暂时的,因此该页面以后可能会恢复正常

    你现在无法访问 xxx xxxx com xff0c 因为网站使用的是 HSTS 网络错误和攻击通常是暂时的 xff0c 因此该页面以后可能会恢复正常 自己本地通过openSSL和nginx 搭建https证书 xff0c 过段时间通过域名
  • VMware通过vmdk安装Kali linux

    1 根据官网指引下载VMware专用kali linux版本 2 打开虚拟机 xff0c 文件 gt 扫描虚拟机 3 文件路径选择kali压缩包解压出来的文件夹的路径 4 点击下一步 xff0c 点击完成即可 5 这个就是我们刚刚创建的ka
  • 为什么中断子程序中不能使用延时和过长的程序?

    A回答 xff1a 通常在中断子程序中是不调用延时子程序的 xff0c 这样会增加中断处理时间 xff0c 如果有其它低级中断了 xff0c 就会延误响应中断了 所以 xff0c 中断子程序中不要写调用延时子程序 xff0c 中断子程序也不