生成函数

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

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那么多,这数值到时会以线性映射

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

6 定时器 &中断管理&资源管理的更多相关文章

  1. STM32学习笔记——定时器中断(向原子哥学习)

    定时器中断 STM32 的定时器功能十分强大,有 TIME1 和 TIME8 等高级定时器,也有 TIME2~TIME5 等通用定时器,还有 TIME6 和TIME7 等基本定时器.在本章中,我们将利 ...

  2. STM32-NVIC中断管理实现[直接操作寄存器]

    源:stm32 NVIC中断管理实现[直接操作寄存器]     cortex-m3支持256个中端,其中包含了16个内核中断,240个外部中断.stm32只有84个中断,包括16个内核中断和68个可屏 ...

  3. Linux中断管理 (2)软中断和tasklet

    目录: <Linux中断管理> <Linux中断管理 (1)Linux中断管理机制> <Linux中断管理 (2)软中断和tasklet> <Linux中断管 ...

  4. 嵌入式02 STM32 实验10 定时器中断

    优秀文章 https://blog.csdn.net/qq_38351824/article/details/82619734 一.STM32通用定时器(TIM2.TIM3.TIM4和TIM5共四个通 ...

  5. 灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置

    灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置 目录: 1.Timer1高级定时器Timer3通用定时器Timer14基本定时器简介 2.Timer1高级 ...

  6. (stm32f103学习总结)—stm32定时器中断

    一.定时器介绍 STM32F1的定时器非常多,由2个基本定时器(TIM6.TIM7).4个通 用定时器(TIM2-TIM5)和2个高级定时器(TIM1.TIM8)组成.基本定 时器的功能最为简单,类似 ...

  7. 4-MSP430定时器_定时器中断

    一开始没写好就上传了,,,,,,,,这次来个全的 自己学MSP430是为了写一篇关于PID的文章,需要430在proteus上做仿真,一则认为在自动控制算法上PID真的很经典,PLC设备上大多是模块式 ...

  8. stm32定时器中断类型分析

    一直在用的stm32定时器的中断都是TIM_IT_Update更新中断,也没问为什么,直到碰到有人使用TIM_IT_CC1中断,才想到这定时器的中断类型究竟有什么区别,都怪当时学习stm32的时候不够 ...

  9. STM32中断管理函数

    CM3 内核支持256 个中断,其中包含了16 个内核中断和240 个外部中断,并且具有256 级的可编程中断设置.但STM32 并没有使用CM3 内核的全部东西,而是只用了它的一部分. STM32 ...

  10. 提升效率(时间准确性),减少时间和资源的消耗——由89C52/89C51的定时器中断引出的一些问题

    尽量用最少的文字描述清楚问题. 事情起因是这样的: 要做遥控小车的平台迁移,STM32开发板无法方便地供电,因此又拿出了尘封的51(STC89C52RC),搭配上最小系统板就可以用排针加杜邦线供电了. ...

随机推荐

  1. SpringBoot实现动态数据源配置

    场景描述: 前一阵子接手的新项目中需要使用2个数据源. 一个叫行云数据库,一个叫OceanBase数据库. 就是说,我有时候查询要查行云的数据,有时候查询要查 OceanBase 的数据,咋办? 废话 ...

  2. SqlSugar Code First

      注意点 1.SqlSugar Code First可以快速开发,使用起来也要分阶段使用,比如早期随便搞,中后期需要禁用一些功能保证数据安全(标题6和7 ) 2.数据库账号需要有比较高的权限, 3. ...

  3. Metasploit 生成带SSL加密载荷

    1.下载证书.Impersonate_SSL模块,下载指定网站的证书. msf6> use auxiliary/gather/impersonate_ssl msf6 auxiliary(gat ...

  4. 予力八六三软件应用现代化,提升DevSecOps效能,探索交付之路

    本文分享自华为云社区<予力八六三软件应用现代化,提升DevSecOps效能,探索全球交付之路>,作者: HuaweiCloudDeveloper. 来源:<华为云DTSE>期刊 ...

  5. 又学了一招:微软科普Windows 11电脑自动清理释放硬盘

    你是不是每次都等到电脑内存被占满,磁盘"红"成一片,才想起来去清理那些没用的程序or文件? 今天微软官方科普了一个小技巧:既然都用上了Windows 11 ,为什么不让电脑帮你自动 ...

  6. 性价比超频我都要 两大内存绝技带来20%性能提升!技嘉雪雕Z790 AORUS LITE AX-W主板评测

    一.前言:主打性价比.两大内存绝技加持的技嘉Z790主板 要说现在最主流的装机方案,那必然是13代酷睿+700系主板.我们此前曾测试过技嘉的Z790钛雕主板,独有的顶级表现让人印象深刻,不过近6K的价 ...

  7. PHP常用类

    PHP常用类 一.分页类 <?php /** * 分页类 * 调用方式: * $p=new Page(总条数,显示页码链接数量,当前页码,每页显示条数,[链接]); * print_r($p-& ...

  8. P4396 [AHOI2013] 作业 题解

    题目链接:作业 其实可以类似"HH的项链"转化为偏序问题再 cdq 分治.不过这题感觉莫队然后值域分块很好写啊,基本不用动脑. 考虑查询的两个信息: \(a \le x\le b\ ...

  9. TDBLookupComboboxEh 一些设置项,自己总结

    注意:如果top_seller_nick有重复的值的时候,keyfield 也为top_seller_nick的话,就会造成,选中最下面的那个阿里巴巴的,默认也是第一个天猫的各项值. 因为选后是根据k ...

  10. Python Rich:美化终端显示效果

    Rich库的功能就像它的名字一样,使Python编程更加丰富(rich),它帮助开发者在控制台(命令行)输出中创建丰富.多彩和具有格式化的文本. 本篇总结了如何使用Rich库让我们的命令行工具更加美观 ...