uC/OS-II中断及时钟节拍

2024-01-17 18:08
文章标签 中断 ii os uc 及时 节拍

本文主要是介绍uC/OS-II中断及时钟节拍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

中断

uC/OS-II的中断服务子程序要用汇编程序来编写。下面是用户中断服务子程序的一般处理过程的伪代码:

保存全部CPU寄存器;

调用OSIntEnterOSIntNesting直接加1

中断服务;

调用OSIntExit

恢复所有CPU寄存器;

执行中断返回指令;

uC/OS-II的中断处理与PC的中断处理类似。当发生中断时,首先保护现场,CPU寄存器入栈,再执行中断服务子程序,之后恢复现场,CPU寄存器出栈,最后执行中断返回。但是uC/OS-II需要知道用户在做中断服务,因此用户应该调用OSIntEnter(),或者将全局变量OSIntNesting直接加1.内核通过判断OSIntNesting的值来了解中断嵌套的情况。中断服务子程序退出时要调用脱离中断函数OSIntExit(),OSIntExit()首先应该将OSIntNesting1,如果中断服务程序使更高优先级的任务就绪且没有中断嵌套,还必须进行中断级的任务调度,使高优先级的就绪任务运行。

uC/OS-II的时钟节拍

uC/OS需要用户提供周期性信号源,用于实现时间延时和确认超时。uC/OS-II的时钟节拍(clock tick)是特定周期性中断。中断之间的时间间隔取决于不同的应用,一般在10ms20ms之间。时钟的节拍中断使得内核可以将任务延时若干个整数时钟节拍,以及当任务等待事件发生时,提供等待超时的依据。uC/OS-II的时钟节拍中断类似于一个定时器中断,事实上在移植到特定的处理器上时,通常都用目标处理器的定时器做时钟节拍源。每个时钟节拍中断到来时调用时钟节拍中断服务将任务延时做一次裁决。

OSTimtick()是时钟节拍中断服务函数,函数中大量的工作是给每个用户任务控制块OS_TCB中的时间延时项OSTCBDly1(如果该项不为0的话)。OSTimTick()从OSTCBList开始,沿着OS_TCB链表做,一直到空闲任务。当任务的任务控制块中的时间延时项OSTCBDly减到了0,这个任务就进入了就绪态。而被挂起的任务则不会进入就绪状态。OSTimTick()的执行时间直接与应用程序中建立了多少任务成正比。

这篇关于uC/OS-II中断及时钟节拍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/616802

相关文章

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

python中os.stat().st_size、os.path.getsize()获取文件大小

《python中os.stat().st_size、os.path.getsize()获取文件大小》本文介绍了使用os.stat()和os.path.getsize()函数获取文件大小,文中通过示例代... 目录一、os.stat().st_size二、os.path.getsize()三、函数封装一、os

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

从0到1,AI我来了- (7)AI应用-ComfyUI-II(进阶)

上篇comfyUI 入门 ,了解了TA是个啥,这篇,我们通过ComfyUI 及其相关Lora 模型,生成一些更惊艳的图片。这篇主要了解这些内容:         1、哪里获取模型?         2、实践如何画一个美女?         3、附录:               1)相关SD(稳定扩散模型的组成部分)               2)模型放置目录(重要)

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

FreeRTOS学习笔记(四)Freertos的中断管理及临界保护

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Cortex-M 中断管理1.1 中断优先级分组1.2 相关寄存器1.3 相关宏定义1.4 FreeRTOS 开关中断 二、临界段及其保护2.1 taskENTER_CRITICAL( ) 和 taskEXIT_CRITICAL( )2.2 taskENTER_CRITICAL_FROM_ISR( )

LeetCode:3177. 求出最长好子序列 II 哈希表+动态规划实现n*k时间复杂度

3177. 求出最长好子序列 II 题目链接 题目描述 给你一个整数数组 nums 和一个非负整数k 。如果一个整数序列 seq 满足在下标范围 [0, seq.length - 2] 中 最多只有 k 个下标i满足 seq[i] != seq[i + 1] ,那么我们称这个整数序列为好序列。请你返回 nums中好子序列的最长长度。 实例1: 输入:nums = [1,2,1,1,3],

代码训练营 Day26 | 47.排序II | 51. N-皇后 |

47.排序II 1.跟46题一样只不过加一个树层去重 class Solution(object):def backtracking(self,nums,path,result,used):# recursion stopif len(path) == len(nums):# collect our setresult.append(path[:])return for i in range(

Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.B

一个bug日志 FATAL EXCEPTION: main03-25 14:24:07.724: E/AndroidRuntime(4135): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.syyx.jingubang.ky/com.anguotech.android.activity.Init