转rtx操作系统 本章节为大家讲解RTX操作系统的时钟节拍和时间管理函数,其中时间管理函数是RTX的基本函数,初学者务必要掌握。
本章教程配套的例子含Cortex-M3内核的STM32F103和Cortex-M4内核的STM32F407。
12.1 RTX的时钟节拍
12.2 RTX的时间管理
12.3 实验例程说明
12.4 总结
12.1 RTX的时钟节拍
任何操作系统都需要提供一个时钟节拍,以供系统处理诸如延时,超时等与时间相关的事件。
时钟节拍是特定的周期性中断。这个中断可以看做是系统心跳。中断之间的时间间隔取决于不同的应用,一般是1ms – 100ms。时钟的节拍中断使得内核可以将任务延迟若干个时钟节拍,以及当任务等待事件发生时,提供等待超时等依据。时钟节拍率越快,系统的额外开销就越大。
1
|
|
|
|
程序设计:
u 任务栈大小分配:
staticuint64_t AppTaskUserIFStk[512/8]; /* 任务栈 */
staticuint64_t AppTaskLEDStk[256/8]; /* 任务栈 */
staticuint64_t AppTaskMsgProStk[512/8]; /* 任务栈 */
staticuint64_t AppTaskStartStk[512/8]; /* 任务栈 */
将任务栈定义成uint64_t类型可以保证任务栈是8字节对齐的,8字节对齐的含义就是数组的首地址对8求余等于0。如果不做8字节对齐的话,部分C语言库函数,浮点运算和uint64_t类型数据运算会出问题。
u 系统栈大小分配:
|
|
|
|
|
RTX初始化:
复制代码
/*
*********************************************************************************************************
* 函 数 名: main
* 功能说明: 标准c程序入口。
* 形 参: 无
* 返 回 值: 无
*********************************************************************************************************
*/
int main (void)
{
/* 初始化外设 */
bsp_Init();
/* 创建启动任务 */
os_sys_init_user (AppTaskStart, /* 任务函数 */
4, /* 任务优先级 */
&AppTaskStartStk, /* 任务栈 */
sizeof(AppTaskStartStk)); /* 任务栈大小,单位字节数 */
while(1);
}
|
|
|
|
|
RTX任务创建:
复制代码
/*
*********************************************************************************************************
* 函 数 名: AppTaskCreate
* 功能说明: 创建应用任务
* 形 参: 无
* 返 回 值: 无
*********************************************************************************************************
*/
static void AppTaskCreate (void)
{
HandleTaskUserIF = os_tsk_create_user(AppTaskUserIF, /* 任务函数 */
1, /* 任务优先级 */
&AppTaskUserIFStk, /* 任务栈 */
sizeof(AppTaskUserIFStk)); /* 任务栈大小,单位字节数 */
HandleTaskLED = os_tsk_create_user(AppTaskLED, /* 任务函数 */
2, /* 任务优先级 */
&AppTaskLEDStk, /* 任务栈 */
sizeof(AppTaskLEDStk)); /* 任务栈大小,单位字节数 */
HandleTaskMsgPro = os_tsk_create_user(AppTaskMsgPro, /* 任务函数 */
3, /* 任务优先级 */
&AppTaskMsgProStk, /* 任务栈 */
sizeof(AppTaskMsgProStk)); /* 任务栈大小,单位字节数 */
}
|
|
|
|
|
头像被屏蔽
· 2016-10-5 09:13:44
|
|
|
|
|
12.4 总结
本章节主要为大家讲解了RTX操作系统的时钟节拍和时间管理函数,其中时间管理函数是RTX的基本函数,初学者务必要掌握。
|
|
|
|
|