单片机RTOS“实时响应时间”的定义与测量方法

单片机RTOS"实时响应时间"的定义与测量方法
(1)众所周知对于单片机RTOS的最重要指标是对事件发生的" 实时响应时间 ",但是什么是RTOS的" 实时响应时间",业界有各种说法。笔者先用逻辑排除两个可能:
首先不可能是正在运行的用户任务对事件的响应时间,比如用循环语句不断地检测某个条件(来判断事件是否发生)成立进而做出相应的处理。因为用户任务是用户自己编写的程序,其响应时间长短不属于RTOS系统本身。
其次不可能是"中断响应时间"。当一个事件发生后,对应的中断是否能够发生,依赖于很多硬件和软件条件,比如事件中断的优先级高低和用户是否关闭了中断,这些也不属于RTOS系统本身。
(2)因此笔者任务单片机RTOS对事件发生的" 实时响应时间 " 指的是将"休眠的任务"唤醒到执行状态的时间
唤醒任务分为两种情况:一种情况是中断内唤醒,比如事件发生导致对应的中断发生,在ISR内利用"中断唤醒"功能将高优先级的正在等待的休眠任务唤醒。比如异步通信(CAN...)接收到一帧数据产生中断需要唤醒相应的任务来处理。
另一种情况是中断外由当前正在执行的任务唤醒。比如要调用异步通信(CAN...)发送程序来发送控制信息。
(3)下面是测量被中断唤醒任务所需要的时间的RTOS程序:

任务A休眠等待在第24行程序处。P01是中断唤醒测量端口标志,任务A被唤醒后的第一行程序(26行)将其清零。
下图是中断内唤醒任务的ISR程序:

其中第71行设置P01=1,第72和73行是调用"OSTaskResume(2)"函数来唤醒任务A,第76行是调用"uCx51_IntSched()"函数来进行中断内任务切换,实现唤醒任务A的功能。测试P01端口的正脉冲宽度就可以得到" 单片机RTOS的中断实时响应时间"
(4)下面是测量 非中断唤醒任务所需要的时间的RTOS程序:

其中任务B休眠等待在第45行程序处。P03是非中断唤醒测量端口标志,任务B被唤醒后的第一行程序(47行)将其清零。
(5)在任务C中第71行设置P03=1,第72是调用"OSTaskResume(3)"函数来实现唤醒任务B的功能,由于任务B的优先级3高于任务C的优先级4,所以任务就被RTOS任务调度程序调度到任务B开始继续执行。因此测试P03端口的正脉冲宽度就可以得到" 单片机RTOS的任务切换实时响应时间"

(6)下面是对微山x51 uC/OS-II 进行实测的波形:

对第1和第3通道的正脉冲进行测量得到:主频为33.1776MHz
中断实时响应时间为10.125微秒。

任务切换实时响应时间为10.125微秒。
单片机RTOS实时响应时间排行榜重大宣布:STC32G12K128单片机 全面碾压 STM32F103C

https://www.stcaimcu.com/thread-7724-1-1.html

(出处: 国芯人工智能技术交流网站)

相关推荐
gscsded2 小时前
C2000 GPIO 配置笔记
单片机
Sakuyu434682 小时前
STM32基础
stm32·单片机·嵌入式硬件
gscsded2 小时前
C2000 CPU Timer 学习笔记
单片机
iCxhust4 小时前
AD0808调试笔记
笔记·单片机·嵌入式硬件·操作系统·微机原理·8088单板机
木子单片机4 小时前
基于51单片机的步进电机调速系统设计
单片机·嵌入式硬件·51单片机·keil
三易串口屏5 小时前
实验10 物理按键实验
单片机·51单片机·串口屏·串口协议·uart 通信·嵌入式 ui
深圳光特通信豆子5 小时前
10Mb/s TTL单模双纤光收发模块技术规格手册
单片机·嵌入式硬件
一路往蓝-Anbo5 小时前
第六章:RTOS 任务 —— 任务逻辑与并发的 TDD 路径
网络·stm32·单片机·嵌入式硬件·tdd
星夜夏空995 小时前
STM32单片机学习(20) —— 利用中断实现串口通信(填前面的坑)
stm32·单片机·学习
wengqidaifeng5 小时前
2026年电赛校赛备战MSPM0G3507+keil讲解(上)-----2025年电赛E题小车篇
单片机·嵌入式硬件·电赛