配置自己的UC/OS―II操作系统
l 说明:需要时配置为1.否则配置为0。
4>OS_MBOX_POST_EN:
l 作用:设定程序中是否使用OSMboxPost()函数
l 说明:需要使用时配置为1.否则配置为0.
5>OS_MBOX_OPST_OPT_EN:
l 作用:设定程序中是否使用OSMboxPostOpt()函数
l 说明:需要是配置为1.否则配置为0.
6>OS_MBOX_QUERY_EN:
l 作用:设定程序中是否使用OSMboxQuery().
l 说明:需要时配置为1.否则配置为0.
5.关于消息队列服务功能的裁剪
1> OS_Q_EN
l 作用:设定程序中是否使用消息队列函数及其相关数据结构。
l 说明:如果要使用,则必须将其设置为1;否则设置为0.关闭此常量以节省内存。
注:若该配置为0时,所有有关消息队列的函数均不能使用,即使对应的常量配置为1。
2> OS_Q_ACCEPT_EN
l 作用:设定程序中是否使用OSQAccept()
l 说明:需要时设置为1,否则配置为0.
3> OS_Q_DEL_EN
l 作用:设定程序中是否使用OSQDel()
l 说明:需要使用时配置为1,否则配置为0.
4> OS_Q_FLUSH_EN
l 作用:设定程序中是否使用OSQFlush()(清空消息队列函数)
l 说明:需要使用时配置为1,否则配置为0.
5> OS_Q_POST_EN:
l 作用:设定程序中是否使用按FIFO规则向消息队列发送消息函数OSQPost()函数。
l 说明:需要使用时配置为1,否则配置为0
6> OS_Q_POST_FRONT_EN
l 作用:设定程序中是否使用按LIFO规则向消息队列发送消息函数OSQPostFront()函数
l 说明:需要是使用配置为1,否则配置为0.
7> OS_Q_POST_OPT_EN
l 作用:设定程序中是否使用按FIFO或LIFO规则向消息队列发送消息函数OSQPostOpt().
l 说明: 若需要时配置为1,否则配置为0.
注:该函数功能灵活,可以替代上面两个消息发送函数。
8> OS_Q_QUEAY_EN
l 作用:设定程序中是否使用OSQQuery()函数。
l 说明:需要时配置为1,否则配置为0.
6. 有关内存管理服务功能的裁剪
1> OS_MEM_EN
l 作用:设置程序中是否使用内存块管理函数及其相关数据结构。
l 说明:如果要使用,则必须将其设为1;否则将其置为0.关闭此常量以节省内存。
注:当配置为0时。所有有关内存管理功能的函数均不能使用,即使对应的常量配置为1.
2> OS_MEM_QUERY_EN
l 作用:设定程序中是否使用OSMemQuery()函数(查询内存分区状态函数)
l 说明:需要时配置为1.否则配置为0。
2 其它功能的裁剪
1. OS_TIME_DLY_HMSM_EN
l 作用:设定程序中是否使用OSTimeDlyHMSM()函数。
l 说明:需要时配置为1,否则配置为0。
2. OS_TIME_DLY_RESUME_EN:
l 作用:设定应用系统是否需要使用OSTimeDlyResume()函数。
l 说明:需要时配置为1,不需要时配置为0.
3. OS_TIME_GET_SET_EN
l 作用:设定应用系统中是否使用OSTimeGet()函数。
l 说明:需要时配置为1,否则配置为0.
4. OS_CPU_HOOKS_EN
l 作用:设定是否在文件OS_CPU_C.C中实现各钩子函数(Hook Function).如果要实现钩子函数,则常量OS_CPU_HOOKS_EN必须设置为1.
l 说明:UC/OS中提供了5个对外接口函数:
? OSTaskCreateHook();
? OSTaskDelHook();
? OS TaskStatHook();
? OSTaskSwHook();
? OSTimeTickHook();
这五个钩子函数即可以在文件OS_CPU_C.C中声明,也可以在用户代码中声明。
5. OS_ARG_CHK_EN:
l 作用:设定系统中是否使用参数检查功能。
l 说明:需要时配置为1,不需要时配置为0.
一. 数据结构功能的配置:
2 与任务有关的数据结构
1.OS_MAX_TASKS
l 作用:设置用户程序中可以使用的最多任务数。
l 说明:该值不能超过62.
l 举例: 若程序中用到了三个任务,则该值的最小值
为3(因为UC/OS操作系统目前保留了两个任务(统计任务和空闲任务)。
注:若设定OS_MAX_TASKS的值应该比实际任务数大一些,以便于以后程序的扩展。当不能设置太大,会造成内存的浪费。
2 .OS_LOWEST_PRIO
l 作用:设置程序中最低任务的优先级。
l 说明: 设定该值可以节省操作系统使用RAM的空间。
任务的最低优先级和最大任务数是没有直接关系的。
注:
1>UC/OS操作系统中优先级分别从(0)最高优先级~(63)最低优先级。其中OS_LOWEST_PRIO留给系统的空闲任务OSTaskIdle();OS_LOWEST_PRIO-1留给统计任务OSTaskStat()。操作系统留给用户可分配的优先级为:从0~OS_LOWEST_PRIO-2.
2>OS_LOWEST_PRIO和OS_MAX_TASKS是相互独立的两个配置常量。例如:可以设OS_MAX_TASKS为10,而OS_LOWEST_PRIO为32。此时,系统最多可有10个任务,用户任务的优先级级别可以是0~30.
3. OS_TASK_IDLE_STK_SIZE
l 作用:设置UC/OS操作系统中空闲任务堆栈的容量
l 说明:设置这个常量时,要注意堆栈容量的单位不是字节,而是OS_STK
注:在UC/OS操作系统中堆栈统一用OS_STK声明,根据不同的硬件环境,OS_STK可为不同的长度。
4. OS_TASK_STAT_STK_SIZE
l 作用:设定统计任务的任务堆栈容量。
l 说明:堆栈容量单位不是字节,而是OS_STK。统计任务堆栈的容量取决于所使用的处理器类型,以及如下的操作:
? 进行32位算术运算所需的堆栈空间;
? 调用OSTimeDly()所需的堆栈空间;
? 调用OSTaskStatHook()所需的堆栈空间
? 预计最大的中断嵌套数
注:若想在统计任务中进行堆栈检查,判断实际的堆栈使用,则需要设OS_TASK_CREATE_EXT_EN为1,并使用函数OSTaskCreateExt()建立任务。
5.TASK_STK_SIZE
l 作用:设定任务堆栈的容量。
l 说明:该容量不在系统配置文件OS_CFG.H中定义,而在用户程序中定义。堆栈容量的单位(OS_STK)与CPU类型有关。
评论