嵌入式系统原理与设计课程试做实验报告_第1页
嵌入式系统原理与设计课程试做实验报告_第2页
嵌入式系统原理与设计课程试做实验报告_第3页
嵌入式系统原理与设计课程试做实验报告_第4页
嵌入式系统原理与设计课程试做实验报告_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、嵌入式系统原理与设计课程试做实验报告实验名称ads 1.2集成开发环境及easyjtag-h仿真器应用系 别电子工程系教师姓名黄启宏实验地点6609实验日期2008年7月20日一、实验内容使用easyjtag-h仿真器在ads1.2集成开发环境里运行一个程序,来熟悉ads1.2集成开发环境和使用仿真器,最终脱机运行。利用easyarm2103在ads1.2集成开发环境下的工程模板编写程序,程序的功能设计为控制led1灯的闪烁。二、实验目的掌握在ads1.2开发环境里如何建立、编译连接工程、仿真调试及脱机运行的基本方法。三、涉及实验的相关情况介绍(包含使用软件或实验设备等情况)1、硬件:pc机

2、一台 easyarm2103教学实验开发平台 一套2、软件:windows98/xp/2000系统,ads1.2集成开发环境四、实验试做记录(含程序、数据记录及分析)(1)打开ads(arm_developer suite v.12-codewarrior for arm developer suite)开发环境,使用arm executable image for lpc2103模板建立工程example。(2)在user组中的main.c文件中添加代码。(3)选用debuginram生成目标,然后编译连接工程。(4)将easyarm2103教学实验开发平台上的jp4跳线短接。(5)选择【p

3、roject】-【debug】,启动axd进行jtag仿真调试。(6)脱机运行。(7)可以全速运行程序,led1灯亮一会,熄灭一会依次循环。(8)实验参考程序 程序清单1 led控制程序/*/#include config.h# define led1 1 0; dly-) for(i = 0; i 50000; i+); /* 函数名称:main* 函数功能:跳线jp4短接,led1闪烁* 入口参数: 无* 出口参数: 无* 返回值: 无*/int main (void) pinsel1 = pinsel1 & (0x03 codewarrior for arm developer suit

4、e)开发环境,使用arm executable image for lpc2103模板建立工程enhance gpio。(2)在user组中的main.c文件中添加代码。(3)选用debuginram生成目标,然后编译连接工程。(4)将easyarm2103教学实验开发平台上的jp4跳线短接。(5)选择【project】-【debug】,启动axd进行jtag仿真调试。(6)可以全速运行程序,led1、led3灯熄灭,led2、led4灯点亮一会,led2、led4灯熄灭,led1、led3灯点亮一会依次循环。(7)实验参考程序 程序清单2高速gpio-led灯闪烁控制程序/*/#includ

5、e config.h#define led1 1 17 /* p0.17控制led1 */#define led2 1 18 /* p0.18控制led2 */#define led3 1 19 /* p0.19控制led3 */#define led4 1 0; dly-) for(i = 0; i 50000; i+); /* 函数名称:main* 函数功能:跳线jp4短接,led闪烁* 入口参数: 无* 出口参数: 无* 返回值: 无*/int main (void) pinsel1 = pinsel1 & (0xff codewarrior for arm developer suit

6、e)开发环境,使用arm executable image for lpc2103模板建立工程pwm_output。(2)在user组中的main.c文件中添加代码。(3)选用debuginram生成目标,然后编译连接工程。(4)选择【project】-【debug】,启动axd进行jtag仿真调试。(5)可以全速运行程序,逻辑分析仪采集的波形如图3.1所示。图3.1 pwm输出波形(6)实验参考程序 程序清单3 定时器1pwm输出初始化/*/#include config.h/* 函数名称:timer1init* 函数功能:定时器1初始化* 入口参数: 无* 出口参数: 无* 返回值: 无*

7、/void timer1init(void) t1tcr = 0x02; /* 定时器0复位 */ t1pr = 0; /* 不设时钟分频 */ pwm1con = 0x0c; /* 使能pwm输出 */ t1mcr = 0x02; /* 设置t0mr0匹配后复位t0tc */ t1mr0 = fpclk / 2000; /* 设置pwm输出的周期 */ t1mr2 = (fpclk / 2000) / 2; /* 设置pwm1.2输出占空比为50 */ t1mr3 = (fpclk / 2000) / 4) * 3; /* 设置pwm1.3输出占空比为25 */ t1tcr = 0x01;

8、/* 启动定时器0 */* 函数名称:main* 函数功能:定时器1pwm输出* 入口参数: 无* 出口参数: 无* 返回值: 无*/int main (void) pinsel1 = (pinsel1 & (0x03 6) | (0x02 6); /* 选择mat1.2输出 */ pinsel1 = (pinsel1 & (0x03 8) | (0x02 codewarrior for arm developer suite)开发环境,使用arm executable image for lpc2103模板建立工程uart0 interrupt test。(2)在user组中的main.c文

9、件中添加代码。(3)在startup.s文件的initstack子程序中,修改设置系统模式堆栈处的代码为“msr cpsr_c,#0x5f”,即使能irq中断。(4)选用debuginram生成目标,然后编译连接工程。(5)将easyarm2103教学实验开发平台上的jp6跳线短接。(6)使用串口延长线把easyarm2103教学实验开发平台的uart0接口与pc机的com1连接。pc机运行easyarm软件,设置串口为com1,波特率为115200,然后选择【设置】-【发送数据】,在弹出的发送数据窗口中点击“高级”即可打开接收窗口。(7)选择【project】-【debug】,启动axd进行

10、jtag仿真调试。(8)可以全速运行程序,采用中断方式,通过uart0接收上位机发送的字符串,如“hello easyarm2103!”,然后送回上位机终端easyarm-c.exe的数据接收窗口进行显示。程序运行结果如图4.1所示。需要注意的是必须连续发送8个字节数据。图4.1 uart实验运行结果(9)实验参考程序 程序清单4 uart实验参考程序/*/#include config.h# define uart_bps 115200 /* 串口通信波特率 */volatile uint8 uigrcvnew; /* 串口接收新数据的标志 */uint8 uigrcvbuf30 = 0;

11、/* 串口接收数据缓冲区 */uint32 uignum; /* 串口接收数据的个数 */* 函数名称:delayns* 函数功能:延时函数* 入口参数: uidly 值越大,延时时间越长* 出口参数: 无* 返回值: 无*/void delayns (uint32 uidly) uint32 i; for (; uidly 0; uidly-) for(i = 0; i 50000; i+); /* 函数名称: uart0_irq* 函数功能: 串口中断服务函数* 入口参数: 无* 出口参数: 无* 返回值: 无*/void _irq uart0_irq (void) uignum = 0;

12、 while (u0iir & 0x01) = 0) /* 判断是否有中断挂起 */ switch (u0iir & 0x0e) /* 判断中断标志 */ case 0x04: /* 接收数据中断 */ uigrcvnew = 1; /* 置接收新数据标志 */ for (uignum = 0; uignum 8; uignum+) /* 连续接收8个字节 */ uigrcvbufuignum = u0rbr; break; case 0x0c: /* 字符超时中断 */ uigrcvnew = 1; while (u0lsr & 0x01) = 0x01) /* 判断数据是否接收完毕 */

13、uigrcvbufuignum = u0rbr; uignum+; break; default: break; vicvectaddr = 0x00; /* 函数名称:uartinit* 函数功能:串口初始化,设置为8位数据位,1位停止位,无奇偶校验,波特率为115200* 入口参数: uidly 值越大,延时时间越长* 出口参数: 无* 返回值: 无*/void uartinit (void) uint16 uifdiv; u0lcr = 0x83; /* 允许设置波特率 */ uifdiv = (fpclk / 16) / uart_bps; /* 设置波特率 */ u0dlm = ui

14、fdiv / 256; u0dll = uifdiv % 256; u0lcr = 0x03; /* 锁定波特率 */* 函数名称: uart0sendbyte* 函数功能:向串口发送子节数据,并等待数据发送完成,使用查询方式* 入口参数: uidat 要发送的数据* 出口参数: 无* 返回值: 无*/void uart0sendbyte (uint8 uidat) u0thr = uidat; /* 写入数据 */ while (u0lsr & 0x20) = 0); /* 等待数据发送完毕 */* 函数名称: uart0sendstr* 函数功能: 向串口发送字符串* 入口参数: uist

15、r 要发送的字符串指针* uinum 要发送的数据个数* 出口参数: 无* 返回值: 无*/void uart0sendstr(uint8 const *uistr, uint32 uinum) uint32 i; for (i = 0; i uinum; i+) /* 发送指定个字节数据 */ uart0sendbyte (*uistr+); /* 函数名称: main* 函数功能:跳线jp6短接,打开串口调试软件,串口0中断方式通信* 入口参数: 无* 出口参数: 无* 返回值: 无*/int main (void) pinsel0 = pinsel0 & (0x0f); pinsel0

16、= pinsel0 | 0x05; /* 设置i/o连接到uart */ uigrcvnew = 0; uartinit (); /* 串口初始化 */ u0fcr = 0x81; /* 使能fifo,设置8个字节触发点 */ u0ier = 0x01; /* 使能接收中断 */ irqenable (); vicintselect = 0x00000000; /* 设置所有中断为向量中断 */ vicvectcntl0 = 0x20 | 0x06; /* 设置串口中断为最高优先级 */ vicvectaddr0 = (uint32)uart0_irq; /* 设置向量地址 */ vicint

17、enable = 1 codewarrior for arm developer suite)开发环境,使用arm executable image for lpc2103模板建立工程uart0 interrupt test。(2)在user组中的main.c文件中添加代码。(3)选用debuginram生成目标,然后编译连接工程。(4)将easyarm2103教学实验开发平台上的jp6跳线短接。(5)使用串口延长线把easyarm2103教学实验开发平台的uart0接口与pc机的com1连接。pc机运行easyarm软件,设置串口为com1,波特率为115200,然后选择【功能】-【万年历】

18、,打开仿真万年历窗口。(6)选择【project】-【debug】,启动axd进行jtag仿真调试。(7)可以全速运行程序,pc机上的easyarm软件不断的显示rtc的时间值,如图5.1所示。图5.1 万年历(8)实验参考程序 程序清单5 rtc实验参考程序/*/#include config.h/* 定义串口模式设置的数据结构*/typedef struct uartmodeuint8 datab; /* 字长度 5/6/7/8 */ uint8 stopb; /* 停止位 1/2 */uint8 parity; /* 奇偶校验 */ uartmode;# define uart_bps

19、9600 /* 串口通信波特率 */* 函数名称: uartinit * 函数功能: 串口初始化,设置为8位数据位,1位停止位,无奇偶校验,波特率为9600* 入口参数: uidly 值越大,延时时间越长* 出口参数: 无* 返回值: 无*/void uartinit (void) uint16 uifdiv; pinsel0 = (pinsel0 & 0xfffffff0) | 0x00000005; /* 串口引脚设置 */ u0lcr = 0x83; /* 允许设置波特率 */ uifdiv = (fpclk / 16) / uart_bps; /* 设置波特率 */ u0dlm = u

20、ifdiv / 256; u0dll = uifdiv % 256; u0lcr = 0x03; /* 锁定波特率 */ u0fcr = 0x01; /* fifo使能 */* 函数名称: uart0sendbyte* 函数功能: 向串口发送子节数据,并等待数据发送完成,使用查询方式* 入口参数: uidat 要发送的数据* 出口参数: 无* 返回值: 无*/void uart0sendbyte (uint8 uidat) u0thr = uidat; /* 写入数据 */ while (u0lsr & 0x40) = 0); /* 等待数据发送完毕 */* 函数名称: pc_dispchar

21、* 函数功能: 向pc机发送显示字符* 入口参数: x显示字符的横坐标* y显示字符的纵坐标* chr 显示的字符,不能为ff* color 显示的状态,包括前景色、背景色、闪烁位。* 与dos字符显示一样:03,前景色,46,背景色,7,闪烁位 * 出口参数: 无* 返回值: 无*/void pcdispchar (uint8 uix, uint8 uichr)uart0sendbyte(0xff); /* 起始字符 */uart0sendbyte(0x81);uart0sendbyte(uix);uart0sendbyte(uichr);uart0sendbyte(0x00);uint8 const uishowtable10 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/* 函数名称: sendtimertc* 函数功能: 将rtc时间值发送到串口显示* 入口参数: uidat 要发送的数据* 出口参数: 无* 返回值: 无*/void sendtimertc (void)uint32

温馨提示

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

评论

0/150

提交评论