《2022年嵌入式系统实验报告 .pdf》由会员分享,可在线阅读,更多相关《2022年嵌入式系统实验报告 .pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、嵌入式实验报告名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - 实验一 LED 灯显示实验一实验目的1. 熟悉 arm 开发板基本组成电路,并通过配套教材熟悉arm 芯片特性。了解 ADS1.2软件使用,并会用该软件编译调试开发板。2. 了解 H JTAG 软件原理,利用教材中提供的LED测试程序,完成实验。二实验器材PC机一台,周立功开发板一块三. 实验原理EasyARM2103 开发板提供了 4个绿色发光二极管用作显示,电路
2、如图1.1 所示。显示电路采用了灌电流的方式来驱动发光二极管,由于微控制器 LPC2103 I/O口提供的灌电流大于其拉电流,采用此驱动方式可以保证二极管发光的亮度。1.1 Led 电路原理四实验内容及步骤1. 下面以GPIO 的测试程序为例,熟悉 EasyJTAG-H 软件的使用方法,程序功能设计为控制单路 LED 闪烁,硬件电路如图 1.1 所示。2. 打开示例工程。示例工程路径:配套光盘内容-光盘内容v1.00-3.EasyARM2103安装手册 -GPIO Test ,将此文件夹复制到其它目录下打开,要求存放目录必须无中文路径,如图5.13 所示。打开文件夹后,建议用户先删掉“ GPI
3、O_Test_Data”文件夹,然后双击打开“GPIO Test.mcp ”文件,即打开示例工程。3. 点击“user”文件夹,打开 main.c 文件,见到示例代码4. 选择低速 GPIO ,控制LED 灯闪烁,示例程序如程序清单所示。此示例操作需要短接 JP4的P0.17,输出控制 LED1 。5. 编译连接工程。项目目标栏处选择DebugInFlash 模式,然后编译连接工程。如图所示为工程窗口中的 DebugRel Settings 工程设置,如地址设置、输出文件设置、编译选项等,Synchronize Modificatinte同步修改日期,检查工程中每个文件的修改日期, 若 (如使
4、用其辑源文件) , 则在h栏标记“”名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - Linker 生成的 Image 一般包括三个区域: 代码段、数据段和 BSS 段。需要通过Linker 设置这三个段的基址。通常BSS 段是紧接着数据段( RW )之后,因此只要设置代码段( RO )和数据段( RW )的基址就可以了。根据芯片资料中提供的器件映射地址来填写。6. 仿真调试 。将计算机并口与 EasyJTAG-H 仿真器相连,
5、然后再将EasyJTAG-H 仿真器的 JTAG 接口连接到 EasyARM2103 目标板上,打开H-JTAG ,检测到芯片内核信息后,选择Auto Download选项,此时会自动启动H-Flasher 软件,选择目标芯片的型号, 将当前的配置信息保存起来,建议将配置信息保存到安装路径下的Hconfig 文件夹内。7. Make ( 快捷键为 F7); 启动 AXD进行调试 Run 启动 AXD进行调试,并直接利用Project Inspector 工程检查,查看和配置工程中源文件的 ,发现有更新它编辑器编Touch; 编译连接8. 设置完成后,关闭 H-JTAG Server和H-Fla
6、sher (注意:不能使用 Exit 项关闭) 。 启动AXD , 打开 【Options 】 -【Configure Target.】 , 弹出Choose Target 窗口,点击“ ADD ”添加仿真器的驱动程序,在添加文件窗口选择如 D:Program FilesH-JTAG 目录下的 H-JTAG .dll ,点击“打开”即可。9. 在AXD 环境点击运行,即可看到 led 亮。AXD 运行调试工具条如图 3.14 所示,调试观察窗口工具条如图3.15所示,文件操作工具条如图所示。运行调试工具条提高部分:改变 led 显示位置,重新编译链接,使led 灯亮。源代码如下: #inclu
7、de config.h 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - # define LED1 1 0; uiDly-) for(i = 0; i 50000; i+); /* * Function name: main * Descriptions: 跳线JP4 短接, LED1 闪烁* input parameters: 无* output parameters: 无* Returned value: 无*/ int
8、main (void) PINSEL1 = PINSEL1 & (0 x03 2); /* 将P0.17设置为 GPIO */ IO0DIR = LED1; /* 设置LED 控制口为输出*/ IO0SET = LED1; /* LED1 熄灭*/ while (1) IO0SET = LED1; /* LED1 熄灭*/ DelayNS(50); /* 延时*/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 10 页 - - - - - - - - - IO0CLR
9、= LED1; /* LED1 点亮*/ DelayNS(50); /* 延时*/ return 0; /* * End Of File */ 五、主程序流程图六、编写程序实现四个 LED 灯循环闪烁的功能#denfine LED1 117 #define LED2 118 #define LED3 119 #define LED4 120 Void main PINSEL1=PINSEL1(0 xFF光盘内容v1.00-3.EasyARM2103安装手册 -GPIO Test ,将此文件夹复制到其它目录下打开,要求存放目录必须无中文路径,如图5.13 所示。打开文件夹后,建议用户先删掉“ G
10、PIO_Test_Data”文件夹,然后双击打开“GPIO Test.mcp ”文件,即打开示例工程。3. 点击“user”文件夹,打开 main.c 文件,见到示例代码4. 编译连接工程。项目目标栏处选择DebugInFlash 模式,然后编译连接工程。5. 仿真调试 。将计算机并口与 EasyJTAG-H 仿真器相连,然后再将EasyJTAG-H 仿真器的 JTAG 接口连接到 EasyARM2103 目标板上,打开H-JTAG ,检测到芯片内核信息后,选择Auto Download选项,此时会自动启动H-Flasher 软件,选择目标芯片的型号, 将当前的配置信息保存起来,建议将配置信息
11、保存到安装路径下的Hconfig 文件夹内。6. 设置完成后,关闭 H-JTAG Server和H-Flasher (注意:不能使用 Exit 项关闭) 。 启动AXD , 打开 【Options 】 -【Configure Target.】 , 弹出Choose Target 窗口,点击“ ADD ”添加仿真器的驱动程序,在添加文件窗口选择如D:Program FilesH-JTAG 目录下的 H-JTAG .dll,点击“打开”即可。7. 为实现嵌套中断,修改 main.c 函数,重复上述步骤。8. 在AXD 环境点击运行,即可看到主程序led 亮。通过中断按键,使其他led灯亮。附源代码
12、如下:#include config.h #define LED 1 17 /* 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 10 页 - - - - - - - - - * Function name: Eint0IRQ * Descriptions: 外部中断 0服务程序* input parameters: 无* ouput parameters: 无* Returned value: 无*/ void _irq Eint0IRQ(void) /* 进入中断取反
13、 LED */ if (IO0PIN & (1 17) = 0) IO0SET = 1 17; /* 熄灭发光二极管 */ else IO0CLR = 1 17; /* 点亮发光二极管 */ while(IO0PIN & (1 16) = 0); /* 等待按键松开 */ EXTINT = 0 x01; /* 清中断标志 */ VICVectAddr = 0 x00; /* 通知VIC中断处理结束 */ /* * Function name: main * Descriptions: P0.16低电平触发外部中断主函数* input parameters: 无* ouput parameter
14、s: 无* Returned value: 无*/ int main (void) PINSEL1 = PINSEL1 & (0 x03); PINSEL1 = PINSEL1 | 0 x01; /* 设置P0.16为外部中断 0管脚 */ PINSEL1 = PINSEL1 & (0 x03 2); /* 设置P0.17为GPIO 功能 */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 10 页 - - - - - - - - - IO0DIR = LED; /*
15、设置P0.17为输出 */ IO0SET = LED; /* 设置输出为高电平 */ IRQEnable(); /* IRQ 中断使能 */ EXTMODE = 0 x00; /* 设置外部中断为低电平触发 */ EXTPOLAR = 0 x00; VICIntSelect = 0 14; /* 选择EINT0为FIQ中断 */ VICVectCntl0 = 0 x20 | 14; /* 将外部中断 0分配给向量中断 0 */ VICVectAddr0 = (uint32)Eint0IRQ; /* 设置中断服务程序地址 */ VICIntEnable = 1 14; /* 使能EINT0中断 */ EXTINT = 0 x01; /* 清除EINT0中断标志 */ while(1); return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 10 页 - - - - - - - - -