生成函数

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

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. 5个前端开源项目带你在Web上体验Windows

    本文来分享五个 yyds 的开源项目,这些项目把 Windows 带到了 Web 平台上.让我们一起感受这些项目带来的回忆和创新,重温 Windows 93.98.XP 和 7 的经典界面,甚至探索现 ...

  2. Tire树 学习笔记

    定义与基本求法 定义 又称字典树,用边表示字母,从根节点到树上某一节点路径形成一个字符串. 例如 \(charlie:\) 基本求法 廷显然的,往树中存就行了,查询也是显然的,通过一道例题来理解吧: ...

  3. 极限挑战:使用 Go 打造百亿级文件系统的实践之旅

    JuiceFS 企业版是一款为云环境设计的分布式文件系统,单命名空间内可稳定管理高达百亿级数量的文件. 构建这个大规模.高性能的文件系统面临众多复杂性挑战,其中最为关键的环节之一就是元数据引擎的设计. ...

  4. AI自动生成视频保姆级教程,还能赚包辣条哦~

    友友们,小卷今天给大家分享下如何通过AI自动生成视频,只需要3分钟就能做出一个视频,把视频发到B站.抖音.西瓜上,还能赚包辣条哦~ 文末给大家准备了AI变现的案例及AIGC知识库,记得领取哦! 1.收 ...

  5. 设计模式 - 创建型模式 - 单例模式(C++)

    1.前言 单例模式属于创建型模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方 ...

  6. .NET中使用BootstrapBlazor组件库Table实操篇

    前言 Table表格在后台管理应用中使用的是相当频繁的,因此找一个功能齐全的前端框架对于我们而言是非常必要的,因为封装完善的前端框架能够大大提升我们的工作对接效率.今天我们主要来讲解一下在.NET中使 ...

  7. CF1295

    A 用计算器式显示数字,可以显示 \(n\) 段.可以显示的最大数字是多少? 如果用了一个需要至少四段的数字,一定不如把这个替换成两个 \(1\) 好. 如果一共可以用偶数个,一定是全部 \(1\). ...

  8. Windows 10 快捷键大全|日常办公效率加倍

    ## 复制.粘贴及其他常规     Ctrl + X 剪切选定项. Ctrl + C(或 Ctrl + Insert) 复制选定项. Ctrl + V(或 Shift + Insert) 粘贴选定项. ...

  9. NC17247 H、Diff-prime Pairs

    题目链接 题目 题目描述 Eddy has solved lots of problem involving calculating the number of coprime pairs withi ...

  10. Python 装饰器解析(一)

    装饰器用于在源码中"标记"函数,以增强函数的行为. 我们先来看下面的例子,现有一个求和函数add,现在要求统计函数执行的时长 def add(a, b): print(a+b) 最 ...