69231|19

152

帖子

0

TA的资源

裸片初长成(初级)

楼主
 

【EEWORLD】救火车和你一起学ARM系列活动之四 [复制链接]

向量中断简介
ARM7中断体系介绍
    上一次活动中,我们介绍了ARM7的时钟系统,这次活动介绍中断系统。这个两个系统是在以后的活动中,有很多的应用,同时这两个系统,也是ARM甚至是所有MCU的基础模块。
    arm的VIC中断体系和51单片机的中断有很大区别, 它有32个中断源输入(LPC2000有19个中断源)每个中断源都可以通过编程,设置成以下三种工作方式之一。在本次活动中,我们主要讲述向量IRQ中断。
1、FIQ方式:快速中断,具有最高优先级
2、向量IRQ中断:中等优先级。共有16路。这16个通道都是相同的,每个通道都可以连接任何一个中断源。比如通道0,咱们可以把它连接到定时器中断、串行口中断、外部中断都可以。就是表1中的任何一个中断都可以。
3、非向量IRQ中断:优先级最低。



中断源
说明
代号
WDT
看门狗中断
  0

保留给软件中断
  1
ARM内核
EmbeddedICE,DbgCommRx
  2
ARM内核
EmbeddedICE,DbgCommRx
  3
定时器0
匹配方式、捕获方式
  4
定时器1
匹配方式、捕获方式
  5
UART0

  6
UART1

  7
PWM0

  8
IIC

  9
SPI0

10
SPI1

11
PLL

12
RTC

13
外部中断0

14
外部中断1

15
外部中断2

16
外部中断3

17
A/D转换器

18
              表1
说了这么多,到底该怎么写我的中断程序呢?
以定时器0中断为例,我们想写一个向量IRQ中断的程序。
先介绍一下用到的寄存器。
向量控制寄存器(VICVectCnt0~VICVectCnt15)
一共有16个。16路向量中断分别对应VICVectCnt0、VICVectCnt1。。。。。VICVectCnt15
功能:
寄存器位(4:0):给本中断通道指定连接的中断源的代号。
寄存器位 5: 向量中断使能(置1)。
我们在0-15中随便选一个。我选的是救火车的幸运数字‘9’。把定时器0的中断设置到第9路向量中断。当然,大家也可以选别的号。
通过查表1,定时器0的中断源代号是4, 再把第5位(中断使能)置1。这样计算出VICVectCnt9寄存器的值应该是 (0010 0100)B = 0x24,  VICVectCnt9 = 0x24;


向量地址寄存器(VICVectCnt0~VICVectCnt15)
为向量中断指定中断服务函数。16个中断通道对应16个函数地址
例:VICVectAddr9 = (unsigned long)My_IRQ;
中断选择寄存器VICIntSelect  书P205   DATASHEET P47  5.6
置1:分配为FIQ  
置0:分配为IRQ
对应关系:
第0位:对应通道0   (最右边位)
第1位:对应通道1
......
第15位:对应通道15

中断使能寄存器VICIntEnable  书P204  DATASHEET P47  5.4
中断源和位的对应关系见 P208页表5.63
置1:使能中断。
置0:无效  可以通过对VICIntClr写1进行清除。
对应关系:
第0位:对应中断源0   (最右边位)
第1位:对应中断源1
......
第15位:对应中断15


程序
//在main函数中设置IRQ中断的例子
VICIntSelect = 0x00000000;  //中断选择寄存器第9位是0就行。
VICVectCntl9 = 0x24;  //第5位置1:向量使能,[4:0]中断源序号
VICVectAddr9 = (unsigned long)My_IRQ; //中断函数地址  
VICIntEnable = 0x00000010; //中断使能寄存器 查表可知定时器的中断源号是4,第4位置1.

//中断函数写法
__irq __arm void MY_IRQ(void)
{
    //此处写入用户自己的中断程序。
    VICVectAddr = 0;     //中断程序结束时对向量地址寄存器执行 写 “0”操作
}

    到此,我们把ARM中断的体系做了简单的介绍,希望能够抛砖引玉。有兴趣的朋友可以继续深入学习其他的功能寄存器的用法、FIQ方式中断、非向量IRQ中断。这次活动并没有让芯片运行起来。
    下一次我们准备研究定时器中断0的配置和功能实现。到时您可以看到一个完整的定时器工作过程。

[ 本帖最后由 救火车 于 2009-4-11 11:39 编辑 ]
此帖出自单片机论坛

最新回复

謝謝指導!  详情 回复 发表于 2009-12-1 23:37
点赞 关注
个人签名我是有火救火,无火灌水的救火车
救火车单片机工作室
http://www.qm999.cn
 

回复
举报

33

帖子

0

TA的资源

一粒金砂(高级)

沙发
 

Re: [讨论] 【EEWORLD】救火车和你一起学ARM系列活动之四

很不错,我最早过来了哦!
此帖出自单片机论坛
 
 

回复

1万

帖子

16

TA的资源

版主

板凳
 

Re: [讨论] 【EEWORLD】救火车和你一起学ARM系列活动之四

恩,顶一下,强烈支持
此帖出自单片机论坛
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

565

帖子

513

TA的资源

裸片初长成(中级)

4
 

Re: [讨论] 【EEWORLD】救火车和你一起学ARM系列活动之四

要将程序搬到RAM运行,如何写中断入口呢?我用的是LPC2148
此帖出自单片机论坛
 
 
 

回复

152

帖子

0

TA的资源

裸片初长成(初级)

5
 
在IAR的编译器里设置。请看活动二。
此帖出自单片机论坛
 
个人签名我是有火救火,无火灌水的救火车
救火车单片机工作室
http://www.qm999.cn
 
 

回复

63

帖子

0

TA的资源

纯净的硅(高级)

6
 

Re: [讨论] 【EEWORLD】救火车和你一起学ARM系列活动之四

顶  强烈支持
此帖出自单片机论坛
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

7
 

Re: [讨论] 【EEWORLD】救火车和你一起学ARM系列活动之四

学下先
此帖出自单片机论坛
 
个人签名学到老,DIY到老
 
 

回复

2498

帖子

0

TA的资源

至上芯片

8
 

回复 楼主 救火车 的帖子

先好好学习!
此帖出自单片机论坛
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

9
 
Thanks for your share!!
此帖出自单片机论坛
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

10
 
Thanks for your share!!
此帖出自单片机论坛
 
 
 

回复

138

帖子

0

TA的资源

五彩晶圆(初级)

11
 
很不错,正准备学习ARM,有这个很好,先搞定板子,随后就试试垒码字……
此帖出自单片机论坛
 
 
 

回复

138

帖子

0

TA的资源

五彩晶圆(初级)

12
 
为了下载附件,不得不灌灌水了,救火车切莫发火。毕竟,想学东西总要有银子啊……
此帖出自单片机论坛

赞赏

1

查看全部赞赏

 
 
 

回复

138

帖子

0

TA的资源

五彩晶圆(初级)

13
 
还是不够,真的对不起,继续灌水……
此帖出自单片机论坛
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

14
 
很好很生动,看起来和51很相似
此帖出自单片机论坛
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

15
 

太感谢了

尽管我现在还没有学到这里,但看了还是有了个概念,谢谢了
此帖出自单片机论坛
 
 
 

回复

36

帖子

0

TA的资源

纯净的硅(初级)

16
 
Thanks for your share!!
此帖出自单片机论坛
 
 
 

回复

36

帖子

0

TA的资源

纯净的硅(初级)

17
 
__irq __arm
此帖出自单片机论坛
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(初级)

18
 
顶,正在学习中,讲得好,很清晰,一看就懂了,强烈支持!
此帖出自单片机论坛
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(高级)

19
 
问一下如何写FIQ中断服务程序呢?
此帖出自单片机论坛
 
 
 

回复

46

帖子

0

TA的资源

一粒金砂(初级)

20
 
謝謝指導!
此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表