论文部分内容阅读
[摘要]:ARM嵌入式的应用开发需要借助于目标板,但部分应用开发一开始难以获得配套的合适的目标板,为了解决该问题,本文提出了基于keil4编程环境和Proteus仿真环境的进行应用开发,并以μC/OS-II和LPC2124为例详细阐述了其应用开发过程,解决了修改硬件设备带来的不便与麻烦,提高开发的效率。
[关键词]:μC/OS-II LPC2124 keil4 Proteus 仿真
中图分类号:TN812 文献标识码:TN 文章编号:1009-914X(2013)01- 0237-02
1.引言
ARM嵌入式是当前嵌入式应用的一个重要分支,是嵌入式开发的主流,其应用开发通常采用一项嵌入式编程软件编译生产目标代码,而后将其下载入目标板,不断测试修改,最终得到能够符合要求的目标代码;其开发过程必需嵌入式开发板,这给部分应用开发工程师的前期开发带来了比较大的麻烦,本文主要从应用开发的角度解决该问题,其思想过程为在keil4编程环境下编写好应用程序,然后编译生成目标代码,将其装载入在Proteus环境中的LPC2124[1]芯片,进行仿真,直至测试无误。
2.在keil4环境中编写应用程序[2][3]
移植μC/OS-II是为了在自己的系统中使用μC/OS-II。而要在自己的系统使用μC/OS-II编写自己的应用程序,就必须遵守μC/OS-II的编程规范。该编程规范主要包括主函数和用户任务,其关系框图如图1所示。
图 1 主函数和用户任务关系框图
打开Keil μVision4软件,在Project菜单栏中点击New μVision Project菜单栏新建一个工程,选择Device对应当芯片为NXP(founded by Philips)中的LPC2124芯片,然后新建一个C源文件,添加入工程,并且将与本应用程序相关的头文件”config.h、lpc2124.h、target.h”添加入工程,其C源文件为:
/***************************主函数*****************
***********/
#include “config.h”
OS_STK TaskStartStk[TASK_STK_SIZE]; /* 定义任务的堆栈 */
OS_STK TaskStk[TASK_STK_SIZE]; /* 定义任务的堆栈 */
int main(void)
{
/*初始化操作系统, 并建立空闲任务 */
OSInit();
/*创建根任务 */
OSTaskCreate(Task1,(void *)0,&TaskStartStk[TASK_STK_SIZE-1],0);
/*启动多任务环境 */
OSStart();
return 0;
}
/************************任务Task1 (启动并处理按键事物)*********/
void Task1(void *pdata)
{
pdata=pdata; /* 避免编译报警 */
TargetInit(); /* 目标板初始化 */
for(;;) /* 执行任务循环 */
{
OSTimeDly(OS_TICKS_PER_SEC /50);
if (GetKey()!=KEY1)
{
continue;
}
OSTimeDly(OS_TICKS_PER_SEC/50);
if (GetKey()!=KEY1);
{
Continue;
}
/* 创建其他的任务,将该任务放在循环中创建,是因为该任务执行一次后会自行删除*/
OSTaskCreate(Task2,(void *)0,&TaskStk[TASK_STK_SIZE-1],10);
while(GetKey()!=0)
{
OSTimeDly(OS_TICKS_PER_SEC/50);
}
}
}
/***********************任务Task2******************
***********/
//任务功能:鸣叫两声,然后删除自己
void Task2(void *pdata)
{
pdata=pdata; /* 避免编译警告 */
BeeMoo(); /* 使蜂鸣器鸣叫 */
OSTimeDly(OS_TICKS_PER_SEC /8); /* 延時 */
BeeNoMoo();
OSTimeDly(OS_TICKS_PER_SEC /4); /* 延时 */
BeeMoo(); /* 使蜂鸣器鸣叫 */
OSTimeDly(OS_TICKS_PER_SEC /8); /* 延时 */
BeeNoMoo(); /* 使蜂鸣器停止鸣叫 */
OSTaskDel(OS_PRIO_SELF); /* 删除自己 */
}
将上述源文件编译后生成HEX文件,然后装载入Proteus仿真图中的LPC2124芯片中进行仿真。
[关键词]:μC/OS-II LPC2124 keil4 Proteus 仿真
中图分类号:TN812 文献标识码:TN 文章编号:1009-914X(2013)01- 0237-02
1.引言
ARM嵌入式是当前嵌入式应用的一个重要分支,是嵌入式开发的主流,其应用开发通常采用一项嵌入式编程软件编译生产目标代码,而后将其下载入目标板,不断测试修改,最终得到能够符合要求的目标代码;其开发过程必需嵌入式开发板,这给部分应用开发工程师的前期开发带来了比较大的麻烦,本文主要从应用开发的角度解决该问题,其思想过程为在keil4编程环境下编写好应用程序,然后编译生成目标代码,将其装载入在Proteus环境中的LPC2124[1]芯片,进行仿真,直至测试无误。
2.在keil4环境中编写应用程序[2][3]
移植μC/OS-II是为了在自己的系统中使用μC/OS-II。而要在自己的系统使用μC/OS-II编写自己的应用程序,就必须遵守μC/OS-II的编程规范。该编程规范主要包括主函数和用户任务,其关系框图如图1所示。
图 1 主函数和用户任务关系框图
打开Keil μVision4软件,在Project菜单栏中点击New μVision Project菜单栏新建一个工程,选择Device对应当芯片为NXP(founded by Philips)中的LPC2124芯片,然后新建一个C源文件,添加入工程,并且将与本应用程序相关的头文件”config.h、lpc2124.h、target.h”添加入工程,其C源文件为:
/***************************主函数*****************
***********/
#include “config.h”
OS_STK TaskStartStk[TASK_STK_SIZE]; /* 定义任务的堆栈 */
OS_STK TaskStk[TASK_STK_SIZE]; /* 定义任务的堆栈 */
int main(void)
{
/*初始化操作系统, 并建立空闲任务 */
OSInit();
/*创建根任务 */
OSTaskCreate(Task1,(void *)0,&TaskStartStk[TASK_STK_SIZE-1],0);
/*启动多任务环境 */
OSStart();
return 0;
}
/************************任务Task1 (启动并处理按键事物)*********/
void Task1(void *pdata)
{
pdata=pdata; /* 避免编译报警 */
TargetInit(); /* 目标板初始化 */
for(;;) /* 执行任务循环 */
{
OSTimeDly(OS_TICKS_PER_SEC /50);
if (GetKey()!=KEY1)
{
continue;
}
OSTimeDly(OS_TICKS_PER_SEC/50);
if (GetKey()!=KEY1);
{
Continue;
}
/* 创建其他的任务,将该任务放在循环中创建,是因为该任务执行一次后会自行删除*/
OSTaskCreate(Task2,(void *)0,&TaskStk[TASK_STK_SIZE-1],10);
while(GetKey()!=0)
{
OSTimeDly(OS_TICKS_PER_SEC/50);
}
}
}
/***********************任务Task2******************
***********/
//任务功能:鸣叫两声,然后删除自己
void Task2(void *pdata)
{
pdata=pdata; /* 避免编译警告 */
BeeMoo(); /* 使蜂鸣器鸣叫 */
OSTimeDly(OS_TICKS_PER_SEC /8); /* 延時 */
BeeNoMoo();
OSTimeDly(OS_TICKS_PER_SEC /4); /* 延时 */
BeeMoo(); /* 使蜂鸣器鸣叫 */
OSTimeDly(OS_TICKS_PER_SEC /8); /* 延时 */
BeeNoMoo(); /* 使蜂鸣器停止鸣叫 */
OSTaskDel(OS_PRIO_SELF); /* 删除自己 */
}
将上述源文件编译后生成HEX文件,然后装载入Proteus仿真图中的LPC2124芯片中进行仿真。