摘要: 消息传递是线程之间的另一种基本通信模型。在消息传递模型中,一个线程显式地发送数据,而另一个线程接收数据。操作更像是某种I/O,而不是直接访问要共享的信息。在 CMSIS-RTOS 中,这种机制称为消息队列。和fifo的操作类似,数据从一个线程传递到另一个线程。使用消息队列功能,您可以控制、发送、接收 阅读全文
posted @ 2021-10-04 19:49 Ivan0512 阅读(2335) 评论(0) 推荐(0) 编辑
摘要: 信号量用于管理和保护对共享资源的访问。信号量非常类似于互斥锁。互斥锁一次只允许一个线程访问一个共享资源,而信号量可以用来允许固定数量的线程/ISR访问共享资源池。通过使用信号量,可以管理对一组相同外设的访问(例如多个DMA通道)。 信号量对象应该初始化为可用令牌的最大数量。可用资源的数量被指定为 o 阅读全文
posted @ 2021-10-04 18:52 Ivan0512 阅读(1852) 评论(0) 推荐(0) 编辑
摘要: 互斥锁(Mutex)可用于同步资源访问。 互斥(通常称为Mutex)用于各种操作系统的资源管理。微控制器设备中的许多资源可以被重复使用,但一次只能被一个线程使用(例如通信通道、内存和文件)。互斥锁用于保护对共享资源的访问。创建一个互斥锁,然后在线程之间传递(它们可以获取和释放互斥锁)。 互斥锁是信号 阅读全文
posted @ 2021-10-04 18:16 Ivan0512 阅读(1402) 评论(0) 推荐(0) 编辑
摘要: 软件定时器可以配置为一次性定时器one-shot、或者周期性定时器periodic。 RTX在线程osRtxTimerThread 中管理定时器,回调函数在此线程的控制下运行。 回调可以在专用计时器线程中执行,也可以在中断上下文中执行。因此,建议在回调函数中只使用ISR可调用函数。回调函数的优先级继 阅读全文
posted @ 2021-10-03 22:52 Ivan0512 阅读(963) 评论(0) 推荐(0) 编辑
摘要: 事件标志组用于线程间同步,每一个事件标志组都有31个时间标志位(除最高位)。 osEventFlagsId_t osEventFlagsNew (const osEventFlagsAttr_t *attr): 创建一个事件标志组,返回时间标志ID 或者 NULL。不可在中断中调用。 osEvent 阅读全文
posted @ 2021-10-03 18:42 Ivan0512 阅读(1984) 评论(0) 推荐(0) 编辑
摘要: 线程标志组是在线程创建的时候,一起创建的一种专用事件标志组,包含在线程控制块内。线程标志组可以用于线程同步,而不需要花费额外的资源。 uint32_t osThreadFlagsSet (osThreadId_t thread_id, uint32_t flags) 设置线程thread_id的标志 阅读全文
posted @ 2021-10-03 18:08 Ivan0512 阅读(1081) 评论(0) 推荐(0) 编辑
摘要: osStatus_t osDelay (uint32_t ticks):相对时间延时 osStatus_t osDelayUntil (uint32_t ticks):绝对时间延时 1 static void 2 _Led1Task(void *argument) 3 { 4 (void)argum 阅读全文
posted @ 2021-10-02 10:54 Ivan0512 阅读(529) 评论(0) 推荐(0) 编辑
摘要: Thread states RUNNING:thread正在运行 READY:线程准备就绪,等待执行 BLOCKED:线程处于阻塞状态,可能在延时、等待时间的发生或者挂起 TERMINATED:终止状态,资源还未释放 INACTIVE:线程还未创建或者已经终止,并且资源已经释放 1 enum osT 阅读全文
posted @ 2021-10-02 10:53 Ivan0512 阅读(658) 评论(0) 推荐(0) 编辑
摘要: 创建RTX5项目工程比较简单,RTX5源码已经内置在keil安装目录下。下面一步一步创建工程。 1.Create a new project,选择一个器件,在Manage Run-TIme Environment 窗口选择 CMSIS::CORE and CMSIS::RTOS2 (API)::Ke 阅读全文
posted @ 2021-10-01 23:07 Ivan0512 阅读(1227) 评论(0) 推荐(0) 编辑
摘要: Keil RTX是一款专为ARM和Cortex-M设备设计的免专利、确定性实时操作系统。具有以下特点: 1. 开源:Keil RTX5(包括源代码)包含在Arm Keil MDK中。这个全功能,商用级RTOS是完全可配置的,没有限制。它是在Apache 2.0许可下发布的,完全在GitHub上开发。 阅读全文
posted @ 2021-09-30 23:35 Ivan0512 阅读(771) 评论(0) 推荐(0) 编辑