51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > ARM/CPLD/综合 > 详细内容
ARM基础知识连载之五(转贴)
发布时间:2009/8/6  阅读次数:2334  字体大小: 【】 【】【
在应用程序中安装异常中断处理程序
1.使用跳转指令:可以在异常中断对应异常向量表中特定位置放置一条跳转指令,直接跳转到该异常中断的处理程序。这种方法有一个缺点,即只能在32M空间范围内跳转。
2.使用数据读取指令LDR:使用数据读取指令LDR向程序计数器PC中直接赋值。这种方法分为两步:先将异常中断处理程序的绝对地址存放在存放在距离向量表4KB范围内的一个存储单元中;再使用数据读取指令LDR将该单元的内容读取到程序计数器PC中。

**在系统复位时安装异常中断处理程序**
1.地址0x00处为ROM的情况
   使用数据读取指令LDR示例如下所示:
   Vector_Init_Block
   LDR PC, Reset_Addr
   LDR PC, Undefined_Addr
   LDR PC, SW_Addr
   LDR PC, Prefeth_Addr
   LDR PC, Abort_Addr
   NOP
   LDR PC, IRQ_Addr
   LDR PC, FIQ_Addr

   Reset_Addr    DCD Start_Boot
   Undefined_Addr  DCD Undefined_Handle
   SW_Addr    DCD SWI_Handle
   Prefeth_Addr    DCD Prefeth_Handle
   Abort_Addr    DCD Abort_Handle
      DCD 0
   IRQ_Addr    DCD IRQ_Handle
   FIQ_Addr    DCD FIQ_Handle
使用跳转指令的示例如下所示:
   Vector_Init_Block
   BL Reset_Handle
   BL DCD Undefined_Handle
   BL SWI_Handle
   BL Prefeth_Handle
   BL Abort_Handle
   NOP
   BL IRQ_Handle
   BL FIQ_Handle
2.地址0x00处为RAM的情况
地址0x00处为RAM时,中断向量表必须使用数据读取指令直接指向PC中赋值的形式。而且,必须使用下面的代码巴中断向量表从ROM中复制到RAM中地址0x00开始处的存储空间中:
  
  MOV r8,#0
  ADR r9,Vector_Init_Block
  ;复制中断向量表(8字)
  LDMIA r9!,(r0-r7)
  STMIA r8!,(r0-r7)
  ;复制保存各中断处理函数地址的表(8字words)
  LDMIA r9!,(r0-r7)
  STMIA r8!,(r0-r7)

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号