CMSIS-RTOS 多重实例化Multiple Instances

为了简便起见,从这篇文章开始,题目不再增加ARM官方《CMSIS-RTOS教程》几个字。

多重实例化Multiple Instances

RTOS的一个有趣功能就是可以针对一个线程进行多个实例化,例如你可以基于一个线程代码创建多个用于控制UART的实例,此时,每个UART的实例都会管理一个不同的UART硬件。

首先我们要创建线程结构体,并设置线程实例个数为2:

osThreadDef(thread1, osPriorityNormal, 2, 0);

练习:线程的多重实例化

在本练习中,我们将创建一个线程,并针对这线程创建多个运行实例。

打开Pack Installers,选择“Ex 4 Multiple Instances ”并复制到你的指定路径

这个工程实现和LED闪烁相同的功能,但是这里增加了一个带参数的led切换函数,这个参数用了决定是哪个LED闪烁:

void ledSwitcher (void const *argument) {
    for (;;) {
        LED_On((uint32_t)argument);
        delay(500);
        LED_Off((uint32_t)argument);
        delay(500);
    }
}

在定义线程的位置,我们把实例个数设置为2:

osThreadDef(ledSwitcher, osPriorityNormal, 2, 0);

然后我们在main线程里创建两个线程,这个两个线程拥有相同的代码,但是却是不同的实例,我们给不同的实例传递不同的参数来实现不同的LED闪烁:

led_ID1 = osThreadCreate(osThread(ledSwitcher),(void *) 1UL);
led_ID2 = osThreadCreate(osThread(ledSwitcher),(void *) 2UL);

编译工程,并启动仿真环境

运行代码,并打开RTX任务和系统窗口

这里写图片描述

查看右下角的Call stack + locals 窗口

这里写图片描述

从图中我们可以看到ledSwitcher的两个实例,还有它们的所有变量状态,还可以看到每个实例被传递了不同的参数。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
CMSIS-RTOS》是一本PDF文档,本文将以300字回答有关此文档的问题。 《CMSIS-RTOS》是一本关于Cortex微控制器软件接口标准(CMSIS)中的实时操作系统(RTOS)的PDF文档。该文档详细介绍了CMSIS-RTOS的特性、结构、API和使用方法。 CMSIS-RTOS是一种用于嵌入式系统的实时操作系统,它提供了一套标准化的API和接口,用于编写和管理多任务、多线程和中断驱动的应用程序。该文档介绍了如何使用CMSIS-RTOS构建可靠和高效的嵌入式系统。 文档首先介绍了CMSIS-RTOS的基本概念,包括任务、线程、中断和事件。然后,它详细描述了每个概念的特性和用法,包括任务管理、内存管理、同步和互斥机制等。 此外,文档还介绍了CMSIS-RTOS的结构和组件,如内核、调度器和定时器。它说明了每个组件的功能和使用方法,以及它们之间的关系和依赖关系。 最后,文档提供了一些示例代码和实践指南,以帮助读者更好地理解和应用CMSIS-RTOS。它演示了如何创建、启动和管理任务,以及如何使用互斥锁和信号量进行任务间的数据共享和同步。 总而言之,《CMSIS-RTOS》是一本全面且实用的PDF文档,它为开发人员提供了使用CMSIS-RTOS构建嵌入式系统的详细指南和参考资料。无论是初学者还是有经验的开发人员,都能从中获得关于实时操作系统的深入了解和实际应用的指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值