RTX

创建一个RTX项目

Create an RTX5 Project

  1. 创建一个新的项目,并选择单片机设备。

    Create a new project and select a microcontroller device.

  2. 设置 CMSIS::CORECMSIS::RTOS2 (API)::Keil RTX5,在下拉框中你可以选择添加RTX库或者添加完整源代码。

    In the Manage Run-Time Environment window, select CMSIS::CORE and CMSIS::RTOS2 (API)::Keil RTX5. You can choose to either add RTX as a library (Variant: Library) or to add the full source code (Variant: Source - required if using the Event Recorder):

  3. 添加启动文件 Device::Startup

  4. 一个示例代码

    1
    2
    3
    4
    osKernelInitialize();/ /初始化RTX
    NVIC_SetPriorityGrouping (3);/ /设置优先级分组
    tread_id =osThreadNew(tread_func,空,空);/ /创建一些线程
    osKernelStart();/ /开始RTX内核

    注:

    1. 添加RTX特定功能的支持

      如果你需要一些的RTX特定功能在您的应用程序代码中,# include头文件rtx_os.h。 如使能低功耗tick-less操作模式。

    2. 添加事件记录器

      • 打开MRTE(Manage Run-Time Environment)窗口

      • 确保RTX5使用的是源代码(Source)模式

      • 打开 Compiler::Event Recorder

中断 (Cortex-M)

Cortex-M处理器,RTX5内核使用以下异常中断。 下面的表格还列出了必须分配给这些中断的优先级。

处理程序优先级中断/异常
SysTick最低内核系统定时器中断产生周期性的计时器滴答声
PendSV最低PendSV(系统级服务请求)当调用某些RTX功能处理程序模式
SVC最低+ 1主管叫用来输入RTOS内核线程模式

可以使用其他设备中断没有限制。 ARM Cortex-M3 / M4 / M7 / M23 / M33 / M35P处理器,从未被RTX禁用中断内核。

使用中断的优先级分组

  • 在调用函数osKernelStart()之前,应使用CMSIS-Core函数NVIC_SetPriorityGrouping配置中断优先级分组。RTX内核使用优先级组值来设置SysTick和PendSV中断的优先级。
  • RTX内核为上表中列出的中断/异常设置优先级,并使用最低的两个优先级。
  • 不要更改RTX内核使用的优先级。如果无法避免,请确保SysTick / PendSV的抢占优先级低于SVC。
  • 允许的优先级组值为0到6.优先级组值7将导致RTX失败,因为只有一个可用优先级。
  • main函数堆叠被用于运行RTX功能。因此,需要为RTX内核执行配置足够的堆栈。

RTX
https://www.oikiou.top/2020/2b1e625a/
作者
Oikiou
发布于
2020年8月21日
许可协议