ARM中断编程实验.docx

上传人:b****6 文档编号:7353839 上传时间:2023-01-23 格式:DOCX 页数:8 大小:409KB
下载 相关 举报
ARM中断编程实验.docx_第1页
第1页 / 共8页
ARM中断编程实验.docx_第2页
第2页 / 共8页
ARM中断编程实验.docx_第3页
第3页 / 共8页
ARM中断编程实验.docx_第4页
第4页 / 共8页
ARM中断编程实验.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

ARM中断编程实验.docx

《ARM中断编程实验.docx》由会员分享,可在线阅读,更多相关《ARM中断编程实验.docx(8页珍藏版)》请在冰豆网上搜索。

ARM中断编程实验.docx

ARM中断编程实验

ARM中断编程实验

D

实验箱上按键位置

2、编程流程

去除GPX1_2、GPX1_2,GPX3_2内部上下拉属性,配置为中断模式。

GPIO控制器中关闭屏蔽、使能中断;

在GIC中断控制器中使能中断;

设置中断优先级;

使能GIC;

选择中断发送给CPU0;

等待中断产生,然后进入中断处理函数;

清除中断源。

五.实验内容

(1)连接好开发板与计算机之间的串口线和BL-JTAG仿真器

(2)连接好开发板的交流电源线

(3)接下来利用计算机演示集成开发环境的使用,以及LED灯的控制实验软硬件仿真流程,打开Eclipse,导入工程Key_Int,进行相应代码编写,编译,配置相关debug信息,装载程序,按下KEY1,KEY2,KEY3在putty串口终上查看相应的信息输出以及可以看到LED1和LED2和LED3亮灭情况。

六.实验步骤

根据实验一步骤,连接仿真器、串口线,打开Eclipse,导入工程Key_Int,进行相应代码编写,编译,配置相关debug信息,装载程序,按下KEY1,KEY2,在putty串口终端上查看相应的信息输出以及可以看到LED1和LED1亮灭情况。

修改代码,完成扩展实验

K3中断签需要配置的寄存器

GPX3.PUD4-5位设为0

GPX3.CON8-11位设为0XF

EXT_INT43_CON8-11位设置为0x2

EXT_INT43_MASK第2位设为0

ICDISER.ICDISER2第0位设为1

K3中断服务程序中需要配置的寄存器

GPX1.DAT第3位和第5位为0

GPL1.DAT第1位为1

EXT_INT43_PEND第2位设为1

ICDICPR.ICDICPR2第0位设为0

七.实验结果

可以看到按下K1对应的按键第一颗灯亮第二颗和第三颗灯灭

可以看到按下K2对应的按键第二颗灯亮第一颗和第三颗灯灭

可以看到按下K3对应的按键第三颗灯亮第一颗和第二颗灯灭

 

代码分析(主要对LED3的代码分析,LED1与LED2的编写基本类似):

//InterruptGPX3_2:

TurnoffLED1,turnoffLED2,turnonLED3

//此处编写LED相关处理

GPL1.DAT|=0x1<<1;//turnonLED3

GPX1.DAT&=~(0x1<<5);

GPX1.DAT&=~(0x1<<3);//TurnoffLED1,turnoffLED2

EXT_INT43_PEND|=0x1<<2;//EXT_INT43_PEND第2位设为1

ICDICPR.ICDICPR2&=~(0x1<<0);//ICDICPR.ICDICPR2第0位设为0

printf("PWRON3(GPX1_1:

XEINT09)IRQinterrupt!

!

TurnonLED1,turnoffLED2,turnoffLED3\n");

//ClearPend

//此处清除K3对应的中断标志位

break;

这段代码是扩展实验的代码,该段执行的是当按下K3按键时cpu检测到相应中断源产生,进入switch选择,LED3常亮,关闭LED1,LED2

//在此处添加K3的相关寄存器配置

GPX3.PUD=GPX3.PUD&~(0x3<<(2*2));//GPX3.PUD4-5位设为0

GPX3.CON=(GPX3.CON&~(0xF<<(2*4)))|(0xF<<(2*4));//GPX1_3:

8-11位设为0XF

EXT_INT43_CON=(EXT_INT43_CON&~(0x7<<(2*4)))|0x2<<(2*4);//EXT_INT43_CON8-11位设置为0x2

EXT_INT43_MASK=(EXT_INT43_MASK&~(0x1<<2));//第2位设为0

//配置K3对应的ICDISER.ICDISER2

ICDISER.ICDISER2|=0x1<<0;//第0位设为1

结果分析

在完成扩展实验的代码并烧录进去后,LED4是不断闪烁的,按下K1时,LED1灯常亮LED2LED3熄灭,当按下K2时,LED2常亮LED1LED3熄灭,当按下K3时,LED3常亮而LED1LED2熄灭。

达到了实验要求

源程序先配置寄存器去除上拉电阻以及配置GPIO为中断属性,配置中断触发方式等一系列的配置操作进行中断代码的配置初始化,然后再在中断函数中写入中断函数的代码进行配置,在main()函数中,通过不断配置GPL2.DAT寄存器让LED4不断进行闪烁的操作。

在中断函数中通过按下按键,亮起对应的LED灯达到实验要求

心得体会

通过这次实验,我们进一步了解了中断代码的程序编写以及对这款芯片的使用,在以前的课程学习中我们接触过基础的51系列单片机中断程序的编写,中断程序的编写思路基本一致,都是在main函数中进行寄存器相关的配置,在中断函数中写入中断代码等待中断函数的执行。

但是对不同类型的芯片具体的使用过程就会有所不同,这款芯片比起最基础的51系列要复杂一些所以初始化寄存器的配置过程要繁琐一些,对于寄存器的使用要更复杂,中断函数并没有像以前的那样专门有interrupt的注释,初次接受感觉难以适应。

实验的过程中因为仿真器的问题代码无法烧录进去和其他繁琐的操作导致实验过程中出现了一些小障碍,起初并不能达到要求的结果,但出现了问题及时发现问题的所在之处能够更快的帮助我们提高自己处理问题的能力并让我们对这次实验的体会也更加深刻。

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1