1.数据类型的定义
为了保证uC/OS-Ⅲ在STM32上移植的可靠性,在移植时需要先统一定义各数据类型的长度。为了使用堆栈方便,uC/OS-Ⅲ定义了一个32位堆栈数据类型。
typedef charCPU_CHAR; /*字符型变量*/
typedef unsigned charCPU_BOOLEAN;/*布尔型变量*/
typedef unsigned charCPU_INT08U;/*无符号8位整型变量*/
typedef signed charCPU_INT08S;/*有符号8位整型变量*/
typedef unsigned short CPU_INT16U;/*无符号16位整型变量*/
typedef signed short CPU_INT16S;/*有符号16位整型变量*/
typedef unsigned intCPU_INT32U;/*无符号32位整型变量*/
typedef signed intCPU_INT32S;/*有符号32位整型变量*/(www.daowen.com)
typedeffloat CPU_FP32;/*32位单精度浮点数*/
typedefdouble CPU_FP64;/*64位双精度浮点数*/
typedef CPU_INT32UCPU_STK;/*32位堆栈*/
2.机器人控制任务的划分
按照Saridis提出的三层模型,将机器人的控制任务划分为三个任务。各个任务的优先级以及主要功能如图5.14所示。
图5.14 控制任务划分
3.uC/OS-Ⅲ的移植
首先要宏定义各个任务的优先级和堆栈大小,定义控制块和堆栈,声明任务函数。在主函数中,需要对延时进行初始化,并对中断分组进行配置,还需要对舵机驱动、测距传感器驱动、直流电动机驱动、姿态传感器驱动以及无线串口驱动进行初始化。在主函数中创建了一个优先级为3的开始任务。在开始任务的函数中,创建了控制的三个任务。在三个控制任务的任务函数中,分别编写了实现其相应功能的程序,每个控制任务的执行时间可通过编程实现。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。