定时器中断程序上:超级终端提示Dummy_isr error, interrupt number: 5, INTMSK = 0xffffffdf

【转来的】三、关于中断提示:超级终端提示Dummy_isr error, interrupt number: 5, INTMSK = 0xffffffdf
论坛里面有人求助,看了贴说要把MMU加进去,是这样做的,在Main.c中包含头文件#include "mmu.h" 把
mmu.c和mmu.h加到工程中,接着在主函数中调用MMU_Init();初始化MMU,好像就解决了,不过自己也不知道为什么要这样做,呵呵。


仿真的时候,你的程序是运行在sdram里面的,也就是0x3000_0000处开始运行
你的中断向量表通过仿真器已经放在了0x3000_0000处,

打开mmu是为了把0x3000_0000地址处的值映射到0x0的地方,
因为你的中断向量表是保存在0x0开始的地方,当中断发生时的第一时间
CPU会去0x0地方查中断向量表看是发生了什么中断,是reset还是IRQ还是FIQ还是取数据终止或取指令终止
按键外部中断是IRQ中断,然后CPU会去IRQ开始的地方找到你的中断服务函数,这个时候轮到了你的中断服务函数运行的时间了
所以你不打开MMU就不会进入中断服务函数

还有一种方法就是烧写一个简单的小程序到nandflash的block 0,这个小程序要包含中断向量表
当你上电的时候block 0的东西被CPU复制到了叫作stepping stone的地方,他的地址也是0
这个时候你仿真你的程序,不打开mmu也是可以找到中断服务函数了,因为你有中断向量表了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值