嵌入式系统原理与设计课程试做实验报告.doc

上传人:laozhun 文档编号:2392882 上传时间:2023-02-17 格式:DOC 页数:23 大小:149.50KB
返回 下载 相关 举报
嵌入式系统原理与设计课程试做实验报告.doc_第1页
第1页 / 共23页
嵌入式系统原理与设计课程试做实验报告.doc_第2页
第2页 / 共23页
嵌入式系统原理与设计课程试做实验报告.doc_第3页
第3页 / 共23页
嵌入式系统原理与设计课程试做实验报告.doc_第4页
第4页 / 共23页
嵌入式系统原理与设计课程试做实验报告.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《嵌入式系统原理与设计课程试做实验报告.doc》由会员分享,可在线阅读,更多相关《嵌入式系统原理与设计课程试做实验报告.doc(23页珍藏版)》请在三一办公上搜索。

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 0x06; /* 使能串口中断 */ while (1) if (uiGRcvNew = 1) /* 判断是否有新数据 */ uiGRcvNew = 0; /* 清除标志 */ UART0SendStr (uiGRcvBuf, uiGNum); /* 向串口发送数据 */ return 0;/*/五、实验总结通过EasyARM2103在ADS1.2集成开发环境下的工程模板编写程序,实现了中断方式的UART通信。还需要进一步练习,能熟练实现查询方式的UART通信。嵌入式系统原理与设计课程试做实验报告实验名称RTC实验系 别电子工程系教师姓名黄启宏实验地点6609实验日期2008年7月20日一、实验内容使用EasyJTAG-H仿真器在ADS1.2集成开发环境里运行一个程序,来熟悉ADS1.2集成

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号