教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 学前教育 >

实验五、外部中断实验

来源:网络收集 时间:2026-04-03
导读: 实验五:外部中断实验 一、实验目的 1. 掌握向量中断控制器(VIC)的设置; 2. 掌握外部中断引脚功能设置及外部中断的工作模式设置; 3. 了解中断服务函数的编写。 4. 熟悉 LPC2000 系列 ARM7 微控制器的 GPIO 控制。 二、实验设备 硬件:PC 机一台、EasyARM21

实验五:外部中断实验

一、实验目的

1. 掌握向量中断控制器(VIC)的设置;

2. 掌握外部中断引脚功能设置及外部中断的工作模式设置; 3. 了解中断服务函数的编写。

4. 熟悉 LPC2000 系列 ARM7 微控制器的 GPIO 控制。 二、实验设备

硬件:PC 机一台、EasyARM2103 开发板 一套

软件:Windows98/XP/2000 系统,ADS 1.2 集成开发环境 三、实验内容

设置 P0.16 低电平触发外部中断 0,短接JP3 的P0.16 端口,当按键KEY1 按下后, P0.16 输入低电平触发外部中断,取反LED,观察LED现象。 四、实验预习要求

仔细阅读《EasyARM2103》手册第4 章的内容,熟悉GIPO的设置。 仔细阅读《EasyARM2103》第 3 章的内容,了解 ADS 1.2 集成开发环境、LPC2200 专用工程模板、EasyJTAG 仿真器的应用。 五、实验步骤

1. 启动 ADS 1.2,使用 ARM Executable Image for lpc2103 工程模板建立一个工程VICDef_C。

2. 在工程的 user 的main.c中编写实验程序,然后调试。 4. 选用 DebugInRAM 生成目标,然后编译连接工程。 5. 将 EasyARM2103 开发板上的JP3 的P0.16 端口短接。 6. 选择【Project】->【Debug】,启动 AXD 进行 JTAG 仿真调试。 7. 在中断服务程序中设置断点,全速运行程序,观察现象。 8. 单步/全速运行程序,观察程序是否正确运行。

9. 编写程序,实现按键控制流水灯,4个LED灯轮流点亮。当按键按下并松开时,LED1亮,1秒后LED2亮直到4个灯全亮,之后全部熄灭,重新循环。当再次按下按键时停止流水灯显示,并全部熄灭。 七、实验参考程序

程序清单 P0.16 低电平触发外部中断0 #include \

#define LED 1 << 17

/**************************************************************************** ** 函数名称:Eint0IRQ

** 功能描述:外部中断0 服务程序 ** 入口参数:无 ** 出口参数:无

****************************************************************************/ void __irq Eint0IRQ(void) {

if ((IO0PIN & (1 << 17)) == 0) {

IO0SET = 1 << 17; /* 熄灭发光二极管 */ } else {

IO0CLR = 1 << 17; /* 点亮发光二极管 */ }

while((IO0PIN & (1 << 16)) == 0); /* 等待按键松开 */ EXTINT = 0x01; /* 清中断标志 */ VICVectAddr = 0x00; /* 通知VIC 中断处理结束 */ }

/****************************************************************************** ** 函数名称:main

** 功能描述:P0.16 低电平触发外部中断主函数 ** 入口参数:无 ** 出口参数:无

******************************************************************************/ int main (void) {

PINSEL1 = PINSEL1 & (~0x03);

PINSEL1 = PINSEL1 | 0x01; /* 设置P0.16 为外部中断0 管脚 */ PINSEL1 = PINSEL1&(~(0x03 << 2)); /*设置P0.17 为GPIO 功能 */ IO0DIR = LED; /* 设置P0.17 为输出 */ IO0SET = LED; /* 设置输出为高电平 */ IRQEnable(); /* IRQ 中断使能 */ EXTMODE = 0x00; /* 设置外部中断为低电平触发 */ VICIntSelect = 0 << 14; /* 选择EINT0 为FIQ 中断 */ VICVectCntl0 = 0x20 | 14; /* 将外部中断 0 分配给向量中断0 */ VICVectAddr0 = (uint32)Eint0IRQ; /* 设置中断服务程序地址 */ VICIntEnable = 1 << 14; /* 使能EINT0 中断 */ EXTINT = 0x01; /* 清除EINT0 中断标志 */ while(1); return 0; }

3.4.8 思考

1.中断服务函数为什么要使用__irq修饰?(提示:IRQ中断时微控制器切换到了IRQ模式,所以中断返回需要同时恢复 CPSR 寄存器,比如使用“SUBS PC,R14,#4”)

2.在 VIC 中,如何禁止某一个中断?假设系统使用了几个 IRQ 中断,如何一次全部禁止所有中断?

实验五、外部中断实验.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/599199.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)