关于CodeWarrior Processor Expert的简要说明

时间:2022-03-22 10:26:51

摘要:文章首先介绍了codewarrior processor expert程序设计的概念,接着将其与传统程序设计进行比较,并分析了其优点,然后介绍了PE的运行界面,最后提供了2个PE程序设计实例。

关键词:单片机;S12;CodeWarrior;Processoer Expert;编程

中图分类号:TP311.1 文献标识码:A文章编号:1007-9599 (2011) 07-0000-02

Brief Description of CodeWarrior Processor Expert

Yuan Haodong,Wu Yanfeng,Wang Jiawei

(Southwest Jiaotong University,Chengdu611756,China)

Abstract:This article introduces the CodeWarrior Processor Expert programming concepts,and then be compared with the traditional program design and analysis of its merits,and then introduced the operation of PE interface,and finally PE program provides two design examples.

Keywords:MCU;S12;CodeWarrior;Processoer Expert;Programming

Processor Expert(以下简称PE)是一个快速的程序设计工具[1],它是集成在CodeWarrior中的一个插件,适用于基于HC(S)08/RS08,HCS12(X),56800/E,ColdFire和mobileGT架构的程序设计。它将一种易于使用并且基于组件的程序创建方式与专家知识系统相结合。借助PE,开发者无须掌握微控制器各项寄存器的功能,就可以进行快速的开发。

由于该软件并没有中文版,为了保持文章内容与软件的一致性,文章没有对软件中的英文进行翻译,仍保留其英文名称。

一、PE程序设计的概念

PE的主要任务是管理CPU和其他硬件资源,并且为创建虚拟原型以及设计提供可能。PE通过从“集成组件”生成相应的程序代码,使得开发人员能够有效地对代码进行维护,而基于事件的程序架构也使得编程更为轻松。

Component是一种对功能的封装。比如TimerInt组件封装了所有在CPU上的时间中断的硬件资源。集成组件则是PE的组件库中已有的组件。这些组件基本涵盖了微控制器上经常用到的功能。

Component提供了一个用户交互界面。通过对Properties进行设置,用户能够定义该组件在运行时的行为。通过Component Inspector,用户能够在设计时调整组件的Properties。通过Methods,用户能够在运行时控制组件。Events则是由用户程序代码触发的软件或硬件中断。

用PE进行程序设计是非常便捷的。首先选择并设置一个CPU组件,然后添加其他组件,修改其属性,定义事件,最后生成代码。PE就会根据之前的设定,自动生成程序源代码。但这些代码仅仅是“空代码”,它并没有任何解决问题的功能,用户必须要在事件的代码中和在main函数中添加自己的代码,然后通过传统的方式进行编译。调试无误后再下载至芯片中。

二、PE程序设计与传统程序设计的区别及优点

在传统的程序设计过程中,开发人员通过对微控制器的各项寄存器进行数据读写,来达到控制的目的。用户的直接控制对象就是微控制器的引脚。这就要求开发人员必须对该微控制器的硬件资源分配有很深入的了解。

在PE程序设计过程中,开发人员通过PE内建的“集成组件”对硬件资源进行间接地控制。用户的直接控制对象是PE内建的“集成组件”,“集成组件”再对微控制器的硬件资源进行直接控制。这样一来,即便开发人员对该微处理器的引脚分配并不熟悉,也能快速地进行开发。

每年微处理器制造商都会开发出许多新的微处理器,随着微处理器复杂成都的增加,开发人员必须掌握越来越多的寄存器。传统的开发工具不支持快速原型法开发,并且不能有效地描绘出芯片上的硬件资源的结构。而使用PE进行程序设计,则能很好地消除这种硬件依赖性。

三、PE的运行界面

图 1 CodeWarrior Processor Expert程序界面

打开CodeWarrior IDE并创建一个PE工作环境之后,可见到如图程序界面。其中,左侧的面板为Project Panel,中间的面板为Component Inspector,右侧的面板为Target Cpu。

Project Panel下显示了PE工程中用到了程序源文档。Component Inspector能够对在Project Panel下选择的组件进行编辑。Target CPU面板显示了微控制器的引脚和寄存器分配。

四、PE程序设计实例

(一)通过定时器中断实现小灯的闪烁

程序功能:通过定时器中断,实现小灯的闪烁。

引脚接线:PORTB_PB0接LED灯。

1.程序设计

Processor Expert工作环境的创建

(1)打开CodeWarrior IDE,依次选择File|New Project,创建新的工程。(2)在弹出的向导菜单中,选择相应的微控制器芯片,并选择连接方式为“TBDML”,然后单击“下一步”。(3)编程语言一栏选择“C”,工程名称一栏输入“PE_LEDtest”,单击“下一步”。(4)由于不需要添加附加文件,因此直接单击“下一步”即可。(5)选择“Processor Expert”,单击完成。

2.引脚的初始化

(1)LED的初始化:在Target CPU窗口中,点击 (Show CPU block diagram),将鼠标移到PORTB_PB0上,单击右键,选择Add Component/Template|BitIO。(2)设置初始值:在Component Inspector中,将Direction设置为Output,Init.value设置为1。这两个属性即为PB0引脚的方向和初始电平。然后打开Medthods标签,点击“NegVal”后面的 按钮,生成该方法的代码。(3)新建时间中断:在Target CPU窗口中,将鼠标移到Tim_Counter下的TC0上,单击右键,选择Add Component/Template|TimerInt。(4)设置中断时值:将Interrupt period设置为500ms。该值即为定时器中断的间隔。(5)生成代码:在项目面板中,单击 按钮(Make),生成代码。

中断事件的程序编写

在中断事件中添加代码:代码生成完成后,在项目面板中展开TI1:TimerInt,双击TI1_OnInterrupt,打开Event.c文件,该文件中包含所有的中断事件。然后展开项目面板中的Bit1:BitIO,将NegVal拖到中断函数中。

3.程序运行

点击 (Debug),进行调试。

(二)串口通讯

程序功能:通过RS232串口,接收电脑发送给单片机的字符串,并将该字符串发送回电脑。

引脚接线:PS0接串口RxD,PS1接串口TxD。

1.程序设计

(1)创建Processor Expert工作环境,设置项目名称为“PE_COM”。

(2)在Target CPU面板内,将鼠标移动到SCI0上,单击右键,选择Add Component/Template | AsynchroSerial。

(3)在Component Inspector AS1面板中,将Baud rate(波特率)设置为9600。

(4)在项目面板中,单击 (Make),生成代码。

(5)将鼠标移到User Modules文件夹上,单击右键,如图新建一个用户模块的c文件,并将文件命名为SerialCom。

(6)再次单击(Make),生成代码。

(7)在项目面板中,点击Files标签,打开Users Modules文件夹,双击SerialCom.h,在该头文件中添加如下代码,并保存。

#include "Cpu.h"

#include "Events.h"

#include "AS1.h"

void uart_putchar(unsigned char ch);

void Send_DATA(char* data);

void Recieve_DATA(char* data);

(8)双击SerialCom.c,添加如下代码,并保存。

#include "SerialCom.h"

void uart_putchar(unsigned char ch)

{

if (ch=='\n')

{

while(AS1_SendChar(0x0d)); //output'CR'

return;

}

while(AS1_SendChar(ch)); //keep waiting when not empty

}

void Send_DATA(char* data)

{

unsigned char ptr=0;

while(data[ptr]){

uart_putchar((unsigned char)data[ptr++]);

}

}

void Recieve_DATA(char* data){

byte ptr=1,data_now;

while(data[ptr]!='\n'){

while(AS1_RecvChar(&data_now));

data[ptr]=data_now;

ptr++;

}

}

(9)点击Processor Expert标签,双击PE_COM.c:main。在弹出的PE_COM.c文件中添加代码如下,并保存。

byte string[16];

for(;;){

Recieve_DATA(string);

Send_DATA(string);

}

(10)点击 (Debug),进行调试。

参考文献:

[1]Freescale.CodeWarrior for Microcontrollers V10 Processor Expert[z],2011

上一篇:浅谈提高小学计算机教学效果的方法与途径 下一篇:现代变电站中的自动化系统