RTX
创建一个RTX项目
Create an RTX5 Project
创建一个新的项目,并选择单片机设备。
Create a new project and select a microcontroller device.
设置 CMSIS::CORE 和 CMSIS::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):
添加启动文件 Device::Startup
一个示例代码
1
2
3
4osKernelInitialize();/ /初始化RTX
NVIC_SetPriorityGrouping (3);/ /设置优先级分组
tread_id =osThreadNew(tread_func,空,空);/ /创建一些线程
osKernelStart();/ /开始RTX内核注:
添加RTX特定功能的支持
如果你需要一些的RTX特定功能在您的应用程序代码中,# include头文件rtx_os.h。 如使能低功耗和tick-less操作模式。
添加事件记录器
打开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内核执行配置足够的堆栈。