欢迎来到天天文库
浏览记录
ID:52304557
大小:1.04 MB
页数:44页
时间:2020-04-04
《基于uCOS-II的嵌入式应用程序开发.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八章基于µC/OS-II的嵌入式应用程序开发目录8.1嵌入式应用程序开发的特点8.2µC/OS-II应用程序结构分析8.3µC/OS-II程序设计技术8.4µC/OS-II在ARM微处理器上的移植8.5应用程序设计及实例28.1嵌入式应用程序开发的特点8.1.1开发调试环境的建立在嵌入式系统开发中,典型的调试环境一般通常由三部分构成:一是通用计算机(用来运行调试软件,称为调试主机);二是协议转换器(连接调试主机发出的高级命令与微处理器JTAG接口的低级命令之间的接口);三是调试目标。硬件调试环境如下图:38.1嵌入式应
2、用程序开发的特点8.1.2基于嵌入式处理器的直接编程技术如果针对硬件电路直接设计应用程序,那么应用程序的代码必须包括以下几个部分:①启动部分:硬件加电后首先运行(硬件检测和资源分配)②处理器管理部分:实现处理器状态转换和寄存器使用等③外围设备访问部分:外围设备(如串口)的初始化等④程序功能部分:实现程序所要完成的具体功能这样设计程序对设计人员的能力要求是很高的。48.1嵌入式应用程序开发的特点8.1.3基于嵌入式操作系统的编程技术随着嵌入式微处理器和程序设计技术的发展,人们把一个大的程序从功能上可划分为三个部分:①板级支
3、持包(BSP):其目的是屏蔽下层硬件,主要由BootLoader和Drivers两部分构成。②嵌入式实时操作系统(RTOS)。③应用程序:基于相应操作系统、在相应开发环境下设计的并最终运行在相应目标机上的程序。这里,可由掌握不同技术的人去设计不同的部分,并在三部分之间设计相应的接口以供三部分之间相互调用。58.2µC/OS-II应用程序结构分析下面以一个简单实例来说明基于µC/OS-II操作系统设计的嵌入式应用程序的结构。程序清单8.1两个LED交替闪烁#include“config.h”(1)#defineLED1(1
4、<<18)//定义LED1,P1.18控制LED1(2)#defineLED2(1<<19)//定义LED2,P1.19控制LED2(3)#defineTASK_STACK_SIZE128//定义用户任务的堆栈长度(4)OS_STKtask1Stk[TASK_STACK_SIZE];//定义任务LED1的堆栈(5)OS_STKtask2Stk[TASK_STACK_SIZE];//定义任务LED2的堆栈(6)voidtask1(void*pdata);//LED1任务函数声明(7)voidtask2(void*pdata
5、);//LED2任务函数声明(8)68.2µC/OS-II应用程序结构分析7intmain(void)//主函数(9){OSInit();//初始化µC/OS-II(10)OSTaskCreate(task1,(void*)0,//创建LED1任务&task1Stk[TASK_STACK_SIZE-1],4);//优先级为4(11)OSTaskCreate(task2,(void*)0,//创建LED2任务&task2Stk[TASK_STACK_SIZE-1],5);//优先级为5(12)OSStart();//启动µ
6、C/OS-II,任务开始执行(13)return(0);(14)}//main函数中所调用的OSInit、OSTaskCreate和OSStart,是//µC/OS-II操作系统提供的API函数。//main函数并没有直接调用task1和task2,只是在main中调用//OSTaskCreate创建两个任务时分别把task1和task2作为参数。8.2µC/OS-II应用程序结构分析8voidtask1(void*pdata)//任务LED1函数定义(15){pdata=pdata;//防止出现编译警告(16)Targ
7、etInit();//目标板初始化,包括初始化中断系统(17)PINSEL2&=~0x08;//选择管脚P1.18~25为GPIO(18)IO1DIR
8、=0x03<<18;//设置LED(P1.18、P1.19)为输出(19)IO1SET=0x03<<18;//LED1和LED2熄灭(20)while(1)//超级循环(21){IO1CLR=LED1;//点亮LED1(22)OSTimeDly(OS_TICKS_PER_SEC/4);//延时1/4秒(23)IO1SET=LED1;//熄灭LED1(24)OSTimeDl
9、y(OS_TICKS_PER_SEC/4);//延时1/4秒(25)}}8.2µC/OS-II应用程序结构分析9voidtask2(void*pdata)//任务LED2函数定义(26){pdata=pdata;(27)while(1)//超级循环(28){IO1CLR=LED2;//点亮LED2(29)OSTime
此文档下载收益归作者所有