瑞萨嵌入式系统专题实验指导书(修改版)_第1页
瑞萨嵌入式系统专题实验指导书(修改版)_第2页
瑞萨嵌入式系统专题实验指导书(修改版)_第3页
瑞萨嵌入式系统专题实验指导书(修改版)_第4页
瑞萨嵌入式系统专题实验指导书(修改版)_第5页
已阅读5页,还剩24页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式系统专题实验指导书西安交通大学电信学院“嵌入式系统专题实验”课程组2010年5月目 录第一章 嵌入式系统专题实验概述 1第二章 M16C/62P嵌入式系统实验箱及嵌入式C语言的基本编程方法 4第三章 M16C/62P嵌入式系统的集成编译环境和仿真调试环境实验 .5第四章 基础模块设计实验 .14第五章 综合设计实验 25第一章 嵌入式系统专题实验概述1、实验概貌中文名称:嵌入式系统专题实验英文名称:Experiment of Embedded System课程编号:COMP4329实验学时:32学时 学分:1学分适用专业:自动化、信息、电信(硕)先修课程:程序设计基础、微机原理与接口技术

2、开课学院:自动化系开课学期:第6学期2、实验课性质、目的和任务嵌入式系统专题实验是以培养学生动手能力为主的实践性教学环节,提高学生对程序设计技术、微机原理与接口技术等知识的综合应用能力,加深对嵌入式系统知识的理解和掌握。本专题实验具有工程实践性和较强的综合性等特点,旨在培养学生分析问题、解决问题的能力,培养学生的创新意识。性质:以培养学生动手能力和创新意识为主的综合性实验。目的:使学生加深对嵌入式系统知识的理解和掌握,对renesas嵌入式系统有总体的认识。熟悉并掌握renesas嵌入式系统的开发和调试环境,掌握各基础模块的编程和调试方法。能够利用以上知识,设计并实现综合实验任务。通过本专题实

3、验,为学生以后从事嵌入式系统开发和设计奠定实践技术基础。任务:熟悉renesas嵌入式系统的集成开发环境HEW和仿真调试环境KD30;掌握嵌入式C语言的编程方法;编写各基础模块的应用程序,掌握这些模块的使用和编程方法,进行系统调试并分析运行结果;综合利用各基础模块,实现较为复杂的综合实验任务,完成调试并得到正确的实验结果;观察调试结果,解释实验中出现的问题,给出解决思路和方法,写出实验报告。3、实验教学基本要求和实验内容基本要求:l 掌握renesas嵌入式系统原理及嵌入式C语言的编程方法。l 熟悉并掌握renesas嵌入式系统的集成编译环境和仿真调试环境。l 掌握M16C/62P系列嵌入式微

4、控制器的基本程序设计方法。实验内容:实验一:熟悉M16C/62P嵌入式系统实验箱及嵌入式C语言的基本编程方法实验目的:了解renesas嵌入式系统,掌握嵌入式C语言的编程方法。基本要求:学会使用M16C/62P嵌入式系统实验箱;熟悉嵌入式C语言的编程方法,了解嵌入式C语言和普通C语言的异同。 内容提要:了解renesas嵌入式系统的组成结构,熟悉M16C/62P嵌入式系统实验箱。嵌入式C语言的变量定义;程序结构设计;外围输入、输出设备的控制指令的使用等。 实验二:M16C/62P嵌入式系统的集成编译环境和仿真调试环境实验实验目的:掌握M16C/62P的集成编译HEW和仿真调试环境KD30的使用

5、方法。基本要求:能够熟练使用renesas嵌入式设备的集成编译环境HEW和仿真调试环境KD30。内容提要:熟悉renesas嵌入式设备的编程环境HEW和调试环境KD30。能够根据实验要求在编程环境HEW下设计相应的工程项目,包括文件定义、变量定义、程序结构设计、算法实现等;在KD30环境下,掌握程序的调试步骤,如何排除程序中的错误等。实验三:基础模块设计实验实验目的:掌握各基础模块的使用和编程方法。基本要求:熟悉功能函数库library中的函数,通过对各基础模块(如LCD、LED、键盘、定时器和中断等)的学习,了解其工作原理。并能根据实验要求编制相应的控制程序。 内容提要:完成7段LED模块、

6、LCD16*2和LCD128*64显示模块、键盘的使用模块,定时器的使用、定时中断的使用、AD和DA等模块基本实验环节。 实验四:综合设计实验实验目的:全面掌握M16C/62P系列嵌入式微控制器的程序设计技术。基本要求:利用实验一三的积累,完成综合实验任务。内容提要:1)设计程序查找一维数组的最大(小)值、中值和均值;2)实现具有简单人机界面的加、减、乘、除、开方和幂运算计算器;3)分别采用定时中断和定时器,设计秒表和倒计时表,并能显示日历。4、主要仪器与工具软件计算机、M16C/62P嵌入式系统实验箱;集成开发环境HEW和仿真调试环境KD30。5、实验中用到的资料:瑞萨网站:http:/cn

7、.1) RENESAS M16C/62嵌入式微控制器程序设计,黄一夫,黄立,邱邦能编著,华中科技大学出版社,20042) 嵌入式C语言教材(PPT电子版)3) 瑞萨M16C硬件手册(pdf电子版)4)瑞萨嵌入式系统介绍讲义(PPT电子版),5)参考例程R-Experiment,工具Tools。以上资料均除1)外均在 RenesasM16C62P中。6、实验结果的验收与成绩评定办法l 本专题实验从以下几个方面进行考核:学习态度和积极性;程序设计及规范性;调试结果及问题分析;实验完成情况;实验报告撰写情况。对平时实验过程中表现突出的学生,适当给予加分。l 实验完成后,要求通过

8、老师的验收并回答老师的提问;最后根据实验验收情况及实验报告按评分标准给出最终成绩。l 实验报告需要包括以下内容:采用的实验设备、编译环境,实验内容和结果,调试中遇到的问题及解决办法,实验心得,对本专题实验的建议。实验报告为A4规格,双面打印,书写格式应规范。l 评分标准:优、良、中、及格、不及格。无实验报告者无成绩。第二章 M16C/62P嵌入式系统实验箱及嵌入式C语言的基本编程方法1、实验目的:了解renesas嵌入式系统,掌握嵌入式C语言的编程方法。2、基本要求:学会使用M16C/62P嵌入式系统实验箱;熟悉嵌入式C语言的编程方法,了解嵌入式C语言和普通C语言的异同。 3、内容提要:了解r

9、enesas嵌入式系统的组成结构,熟悉M16C/62P嵌入式系统实验箱。嵌入式C语言的变量定义;程序结构设计;外围输入、输出设备的控制指令的使用。 4、步骤:1)授课:结合M16C/62P嵌入式系统实验箱,介绍瑞萨嵌入式系统;2)自学:嵌入式C语言教材(电子版)。第三章 M16C/62P嵌入式系统的集成编译环境和仿真调试环境实验1、实验目的:掌握M16C/62P的集成编译HEW和仿真调试环境KD30的使用方法。2、基本要求:能够熟练使用renesas嵌入式设备的集成编译环境HEW和仿真调试环境KD30。3、内容提要:熟悉renesas嵌入式设备的编程环境HEW和调试环境KD30。能够根据实验要

10、求在编程环境HEW下设计相应的工程项目,包括文件定义、变量定义、程序结构设计、算法实现等;在KD30环境下,掌握程序的调试步骤,如何排除程序中的错误等。4、实验步骤:1)安装集成编译环境HEW:l 单击nc30wav530r02_setup.exe即可完成安装。安装是Autoupdate不选。用keymaker.exe来获取安装密码。l 安装好后利用hewv40003update.exe进行升级。2)安装KD30仿真调试软件:l 单击KD30V400R1_E_20040615.EXE即可完成安装。注:上述nc30wav530r02_setup.exe,keymaker.exe,hewv4000

11、3update.exe和KD30V400R1_E_20040615.EXE文件均在目录Tools中。3)在HEW环境下,建立新的workspace:l 启动HEW后,如图3-1,选择create a new project workspace后,单击OK。图3-1l 图3-2将会出现。在Directory处写入路径,如E:。在Workspace Name处写入workspace名,如test。这时,Project Name和Directory处会相应发生变化。Directory处不要动,Project Name处改为test1。因为在test这个workspace下可能建多个project。单

12、击OK。图3-2l 出现如图3-3的建立projcet的帮助窗口。不要做修改。单击Next。图3-3l 出现如图3-4的窗口。Target type处选择M16C/60。Startup file type处选择USER。单击Next。图3-4l 出现如图3-5的窗口。不要做修改。单击Next。图3-5l 出现如图3-6的窗口。不要做修改。单击Next。图3-6l 出现如图3-7的窗口。不要做修改。单击Next。图3-7l 出现如图3-8的窗口。不要做修改。单击Finish。图3-8l 出现如图9的窗口。不要做修改。单击OK。这时,HEW会生成test这个workspace的框架。图3-9l 在

13、E:WorkSpace根目录下有一个test目录。test目录中的内容如图3-10。图3-10l 将R_experiment文件夹中的library文件夹复制到本目录下。如图3-11。图3-11l 新建的workspace的框架如图3-12。双击击project名test1。l图3-12l 双击workspace框架下的test1.c文件名。test1.c文件会出现在编辑窗口。如图3-13加入文件包含编译预处理指令#include .librarysfr62p.h #include .librarydefs.h,就可以编写main()函数代码并编译。图3-134)使用KD30仿真器调试工程:l

14、 用KD30调试时,先断电,然后S11拨到kd30,同时S11拨到232。再上电。启动kd30后,出现:l 单击refer选择mcu类型M30626FHP,波特率选择9600。l 程序下装:在以下页面下,filedownloadload module中选择每个工程debug目录下的*.x30文件,写入后按go按钮即可运行。注意:如果在使用KD30时,闪存中有mot文件,或初次使用KD30,则在使用KD30之前,需要用flashsta(此时先断电,S11拨到flash位置,再上电。)将mon62p_384k_pll4.mot文件(该文件在Toolsflashsta目录中)重新写入闪存。步骤是启动

15、flashsta,选择mon62p_384k_pll4.mot文件,然后先erase,再program,退出后再启动KD30(此时先断电,S11拨到kd30位置,再上电)。5)程序写入闪存1、用flashsta.exe写入mot文件,先断电,S11拨到flash,同时S11拨到232,再上电。启动flashsta后,出现:按ok进入以下页面:如果filepath为空,则按refer按钮,选择要写入执行的*.mot文件(该文件在项目的debug目录中)。请注意,如果ID不匹配或者出现can not found the ID file,则ID全部设为00(或者全FF)。按ok则进入以下画面: 先e

16、rase,然后program,此时选定的mot写入闪存。退出即可。断电后,将S11拨到KD30位置,重新上电嵌入式系统后即可脱离计算机单独使用。注意:连接KD30或使用flashsta时,如果连接不上,先断电,察看S11和S10的位置后,再上电。第四章 基础模块设计实验1、实验目的:掌握各基础模块的使用和编程方法。2、基本要求:通过对各基础模块参考示例程序的学习,了解其工作原理,并能根据实验要求修改或扩充示例程序。 3、内容提要:发光二极管按照某种规律点亮或熄灭;7段LED显示、LCD16*2和LCD128*64显示;键盘输入;定时器的使用;定时中断的使用;AD/DA的使用。 4、实验步骤:以

17、上每个实验,请结合参考例程进行,参考例程在R_experiment目录下。1)发光二极管按照某种规律点亮或熄灭实验功能:对8个发光二极管按照某种规律点亮或熄灭,比如跑马灯。参考例程见R_experiment中的diode#include .librarysfr62p.h #include .librarydefs.h#include .libraryLED_7seg.h#include .librarylcd12864.hvoid _lcd12864_wait(unsigned int t); /*software wait for t*100us */const unsigned char

18、runtable = 0xFE, 0xFD, 0xFB, 0xF7, 0xEF,0xDF, 0xBF, 0x7F; /跑马灯数组 void main(void)int i; InitLED_7seg(); /初始化for (i=0;i+) _lcd12864_wait(200000); /* software wait for 200000*100us */ i=i%8; p2 = runtablei; /p2为发光二极管输出端口 2)7段LED显示实验:功能:在4块LED上按某种规律显示09四位数字。参考例程见R_experiment中的LED。例程片段如下:#include .librar

19、ysfr62p.h #include .librarydefs.h#include .libraryled_7seg.h/ 7 segment LED utility header file/* 在LED上显示,软件定时*/int count = 0;long Tcount=0;void main(void)InitLED_7seg(); /LED初始化while(1)count+;if (count 4)count = 1;SetLED_7seg(count, count); /依次在4块LED上显示1234for(Tcount=0;Tcount 4)count = 1;/*FUNC COM

20、MENT* 以下是TimerA1处理函数 * * function name : void init_timerC(void); 定时器A1初始化void INT_TimerA1(void);定时器A1中断处理函数void set_busy(unsigned int time);定时器A1重载及计数启动函数* notice : interrupt function called by interrupt program*FUNCCOMMENT END*/voidinit_TimerA1(void)/*- initialize timer A1- */ta1mr = 0x80;/* set ti

21、mer A1 mode register */* ?0000 */* |+ timer mode */* |+- ta0out is I/O */* |+- ta0in is I/O */* |+- reserved */* +- select f32(24MHz/32:1.43us) */ta1ic = 0x02;/* set interrupt (priority level:2) */ta1= 6993; /* set timer 0.01s = 6993*1.43us */ta1s = 1; /* start count */void INT_TimerA1(void)void INT

22、_TimerA0(void)6)定时中断的使用实验功能:每隔1秒,在LED上显示19,在LCD上显示120。参考例程见R_experiment中的timing_int,程序片段如下:#include .librarysfr62p.h #include .librarylcd12864.h#include .librarydefs.h#include .libraryled_7seg.h/ 7 segment LED utility header file#include .librarylcdutl.h/* 使用定时中断方式显示。注意:晶振频率为24Mhz,由硬件6M晶振4倍频获得 */voi

23、dinit_TimerA1(void);unsigned int countLED = 0;unsigned int countLCD = 0;unsigned int Tcount=0;void main(void)di(); /*关中断*/Lcd12864_init_lcd();Lcd12864_clear_lcd();Lcd12864_light_on();Lcd12864_set_cursol(0,0);init_LCD(); /* initialize LCD module */LCD_clear(); /* clear LCD */LCD_setcursol(0, 0); /* d

24、ecide display position */InitLED_7seg();init_TimerA1();ei(); /*开中断*/while(1)/*每隔1秒,在LED上显示19,在LCD上显示120*/if (Tcount=100)Tcount=0;countLCD+;countLED+;if(countLCD=20)countLCD=0;if(countLED=10)countLED=0;SetLED_7seg(countLED, 4);Lcd12864_clear_lcd();Lcd12864_set_cursol(0,0);Lcd12864_putdec(countLCD);LC

25、D_clear(); LCD_setcursol(0, 0);LCD_putdec(countLCD);/*FUNC COMMENT* 以下是TimerA1处理函数 * * function name : void init_timerC(void); 定时器A1初始化void INT_TimerA1(void);定时器A1中断处理函数void set_busy(unsigned int time);定时器A1重载及计数启动函数* notice : interrupt function called by interrupt program*FUNCCOMMENT END*/voidinit_

26、TimerA1(void) /*- initialize timer A1- */ta1mr = 0x80;/* set timer A1 mode register */* ?0000 */* |+ timer mode */* |+- ta0out is I/O */* |+- ta0in is I/O */* |+- reserved */* +- select f32(24MHz/32:1.43us) */ta1ic = 0x02;/* set interrupt (priority level:2) */ta1= 6993; /* set timer 0.01s = 6993*1.4

27、3us */ta1s = 1; /* start count */void INT_TimerA1(void)ir_ta1ic=0;Tcount+;void INT_TimerA0(void)7)AD/DA使用实验功能:DA:键盘输入0255的数值(DA为8位,码值0255对应为05V),在LCD上显示,可用万用表在对应的管脚处(见资料:瑞萨M16C硬件手册)测量。AD:在相应的管脚处(见资料:瑞萨M16C硬件手册)接入信号,转换后显示在LCD上。参考例程见R_experiment中的AD和DA,程序片段如下:DA程序:#include .librarydefs.h#include .libr

28、arysfr62p.h#include .librarylcd12864.h#include .libraryda1utl.h#include .librarylcdutl.h#include .libraryswutl.hvoid delay(int tset);void main(void) / int hh; di();/* 关中断 */ init_DA1();/* 使用da1通道 */ SW_initialize1();/* 键盘初始化*/ init_TimerA0(); init_LCD(); ei();/* 开中断 */ Lcd12864_init_lcd(); Lcd12864_

29、clear_lcd(); Lcd12864_light_on();while(1) /* 键盘输入,可重复输入 */Lcd12864_set_cursol(0, 0);Lcd12864_write_lcd(input DA1 255:); da1 = SW_getdec(); delay(200); Lcd12864_set_cursol(0, 1); Lcd12864_write_lcd(DA1:); Lcd12864_putdec(da1); void delay(int tset)/* 延迟程序 */ int t=0; while(ttset) t+;void INT_TimerA1(v

30、oid)AD程序:#include .librarysfr62p.h #include .librarydefs.h#include .libraryad0utl.h#include .libraryLED_7seg.h#include .librarylcd12864.h#include .librarylcdutl.hvoid delay(int tset);/* 延迟程序 */void lcd128_4disp(int result);/* 在128*64lcd上显示0000-9999,不足4位前几位补0 */void main(void)int AD0result; init_AD0(

31、);/* 初始化ad0通道 */ InitLED_7seg(); Lcd12864_init_lcd(); Lcd12864_clear_lcd(); Lcd12864_light_on();while(1) delay(200); AD0result = ad0&0x3ff; Lcd12864_set_cursol(0, 0); /* 在lcd1284上显示AD0转换结果 */ Lcd12864_write_lcd(AD0:); lcd128_4disp(AD0result);void lcd128_4disp(int result) if(result1000) Lcd12864_putdec(0); if(result100) Lcd12864_putdec(0); if(result10) Lcd12864_putdec

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论