首页 > 其他分享 >6 定时器 &中断管理&资源管理

6 定时器 &中断管理&资源管理

时间:2023-09-21 21:25:40浏览次数:32  
标签:定时器 优先级 函数 中断 调度 队列 资源管理

生成函数

周期,多久触发一次定时器(从定时器启动开始计算)  触发什么呢? 回调函数被调用,被谁调用呢

1,tick中断去调用timer函数  Linux中使用这个  (定时器回调函数若执行时间过长,会阻碍其他定时器函数执行)

2,freeRTOS中

一般定时器守护函数设置优先级比较高

使用定时器的话,需要定义宏(守护任务的优先级、队列的长度、栈的深度)

队列的作用:在守护任务中执行timer函数

别的任务(用户程序)设置timer,通过队列发消息来实现,唤醒右下方的守护任务

 定时器状态=  休眠-运行

创建定时器-启动定时器,定时器到点就工作(优先级高会抢占其他任务),可看作是独立于业务逻辑的一套,

 使用定时器去除抖动:

抖动的话会进入中断,中断函数里面初始化定时器(没有超过定时器周期),抖动过程中会一直初始化定时器直到状态稳定后,定时器周期结束,计次+1

 

 

中断管理

区别:

ISR(Interrupt Service Routine)的函数不能阻塞,没有对应的等待时间,队列没满会进入,会唤醒等待队列的任务A,但不调度,只记录需要发起调度,队列满的话直接报错;为什么不在_ISR那种函数中调用呢?因为没有意义

 若是在上图中的。。。_ISR函数中,FOR循环多次调度,会调度不成功,因为优先级永远中断的比较高,所以for循环就浪费了时间,不如等到循环结束后,一次性的读取对应的标志位来触发是否进行调度(不是立刻调度),【是设置了一个优先级比较低的中断B,等到当前的正式中断执行完毕后,再执行B中断,在其中执行真正的调度】

 

没有ISR后缀的函数,写队列后会唤醒等待队列的任务A,若A的优先级更高的话,会发起调度(先运行A?); 队列满的话可以即可返回和进行阻塞(直接调度)

 

资源管理

解决的问题:多个任务使用同一通道的时候,同一时间互斥访问

 禁止任务调度,暂停任务调度器,使用一个函数即可

恢复函数后,会先检查有没有更高优先级的任务,有的话就先调度执行它

屏蔽中断(优先级比较低的那一’段位‘所有的中断,数值越低,优先级越高)

 对于具体的芯片,优先级可能没有256那么多,这数值到时会以线性映射

 在中断中屏蔽中断会记录当前时刻中断的状态,屏蔽解除后,回复其之前的状态

标签:定时器,优先级,函数,中断,调度,队列,资源管理
From: https://www.cnblogs.com/liujinmeng/p/17715749.html

相关文章

  • java定时器
    好多朋友用过Windows的任务计划,也有不少程序迷自己曾写过时钟报警、系统自动关机等趣味程序,可却很少有朋友在Web工程中实现过类似功能。  有人说Timer只能规定从现在开始的多长时间后,每隔多久做一次事或在什么时间做一次事,那我想在每月1号或每天12点做一项工作如何做呢?你只要......
  • 定时器简单配置
    @Configuration@EnableSchedulingpublicclassScheduleConfigimplementsSchedulingConfigurer{@OverridepublicvoidconfigureTasks(ScheduledTaskRegistrartaskRegistrar){taskRegistrar.setScheduler(Executors.newScheduledThreadPool(5));......
  • INT13H 是一个基本的硬盘控制器中断,用于在实模式下进行对硬盘的读写操作。它提供了多
    INT13H是一个基本的硬盘控制器中断,用于在实模式下进行对硬盘的读写操作。它提供了多个功能来操控硬盘,包括磁盘读、磁盘写、磁盘参数查询等。以下是一些常见的INT13H功能:磁盘读取:功能号2:从磁盘上读取扇区到内存缓冲区。寄存器AH=02h,AL表示要读取的扇区数量,CH表示磁道号......
  • 中断-CH32V103如何关闭全局中断
    CH32V103相较于其他RISCV芯片,无法关闭全局中断。目前EVT源码工程中只预留了关闭单个线中断的函数,如下图所示:实现CH32V103关闭全局中断的操作方式如下:1、替换使用特定的起始文件和core_riscv.h文件,因博客无法上传附件,可在此链接下获取:https://www.wch.cn/bbs/thread-109625-1.ht......
  • Systick定时器详解
    目录一.SysTick简介1.SysTick概念2.Systick寄存器二.代码详解1.寄存器方式驱动2.固件库方式驱动一.SysTick简介1.SysTick概念Systick属于系统内核中的外设,其详细使用说明和寄存器介绍都在M3权威指南手册中.Systick内嵌在NVIC中,系统定时器是一个24bit的向下递......
  • RTU遥测终端机,提升水资源管理效率!
    2023年水利部发布的《关于推进水利工程配套水文设施建设的指导意见》,强调要聚焦保障水利工程安全高效运行、完善风险监测预警体系、提高防灾减灾能力和水资源水环境水生态综合治理能力、推动新阶段水利高质量发展的要求,加强水利工程配套水文设施建设。遥测终端机在现代水利行业中扮......
  • 【TinyWebServer】08定时器处理非活动连接(下)
    定时器处理非活动连接模块,主要分为两部分,其一为定时方法与信号通知流程,其二为定时器及其容器设计、定时任务的处理。本篇对第二部分进行介绍,具体的涉及到定时器设计、容器设计、定时任务处理函数和使用定时器。定时器设计,将连接资源和定时事件等封装起来,具体包括连接资源、超时......
  • 07_IO外部中断
    IO外部中断cubemx上拉,用杜邦线,将PA11连接GND,将打印gpioisinputcubemx下拉,用杜邦线,将PA11连接V3.3,将打印gpioisinput......
  • 05_定时器
    定时器HAL_Delay定时HAL_Delay(1000);//延时1秒缺点:这一秒不能做其他事情tim定时中断优点:可以在延时时做一些其他的事情......
  • Windows打开资源管理器后出现两个D盘是什么原因?
    Windows打开资源管理器后出现两个D盘是什么原因?登陆管理者账号同时按【win键+R】,输入regedit,打开【注册表】前往【HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\DelegateFolders】找到【{F5FB2C77-0E2F-4A16-A381......