ARM中C语言编程中断实验总结,ARM11外部中断C语言编程实现总结[参考].pdf

ARM11(3)——外部中断

WF 2013.1.24

最近正在学习 ARM11 (S3C6410 开发板)的外部中断部分,稍有心得,特此总结一些

学习笔记,分享出来,献给那些像我一样正在 ARM11 上裸奔的嵌入式学徒们,同时也希

望看到此文的业界前辈多多指教。

外部中断基础知识总结:

ARM11 (S3C6410 开发板)共有 187 根多功能 I/O 口,其中 127 根可用于外部中断,

而这 127 个外部中断引脚又被分为十组:EINT0~EINT9 ,这十组对应VICX (中断矢量寄

存器)中 0、1、32、33、53 五个中断号。十组外部中断和五个中断号之间的对应关系却是

略显复杂:EINT0 共 28 根引脚被分为了四部 别对应了 0、1、32、33 四个中断号,

EINT1~EINT9 这 9 组共 99 根引脚却只对应了 53 一个中断号。

外部中断逻辑图:

矢量寄存器 中断代号 中断数目 中断组 引脚名 引脚数

0 GPN0~GPN3 4

VIC0

1 GPN4~GPN11 8

GPN12~GPN15

32 28 EINT0 8

GPL8~GPL11

GPM0~GPM4

VIC1 33 8

GPL12~GPL14

53 99 EINT1~EINT9 99

外部中断的基本编程思想总结:

1、初始化 I/O 引脚设置——GPX ;

(1)、必须设置所需引脚为中断模式——GPXCON ;

(2 )、可选性设置上下拉电阻和数据位——GPXPUD、GPXDAT ;

2 、初始化外部中断设置——EINTX ;

(1)、选择外部中断的触发方式——EINTXCON ;

(2 )、清除外部中断屏蔽——EINTXMASK ;

(3 )、外部中断悬挂给 1 置 0——EINTXPEND ;

3、初始化总中断设置——VICX ;

(1)、选择中断模式——VICXINTSELECT ;

(2 )、设置中断函数入口——VICXVECTADDR ;

(3 )、中断使能——VICXINTENABLE;

4 中断函数出口处设置;

(1)、清除当前中断函数记录——VICXADDR ;

(2 )、给 1 置 0 外部中断悬挂位——EINTXPEND 。

程序实例:

程序说明:实现按键中断控制 LED 灯的显示,每按一个键 LED 会显示一种方案。

.c 文件代码:

// 引入 GPN 引脚(外接按键)三个寄存器的地址标号

#define rGPNCON (*(volatile unsigned*)(0x7f008830))

#define rGPNDAT (*(volatile unsigned*)(0x7f008834))

#define rGPNPUD (*(volatile unsigned*)(0x7f008838))

// 引入 GPM 引脚(外接LED 灯)三个寄存器的地址标号

#defi

你可能感兴趣的:(ARM中C语言编程中断实验总结)