首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

*((volatile unsigned *)i)=0xEA000000+0x1FFE;该如何解决

2012-02-09 
*((volatile unsigned *)i)0xEA000000+0x1FFE*((volatileunsigned*)i)0xEA000000+0x1FFE上面的这段代

*((volatile unsigned *)i)=0xEA000000+0x1FFE;
*((volatile   unsigned   *)i)=0xEA000000+0x1FFE;

上面的这段代码一直看不懂是什么意思:
在启动文件里面,将中断的地址映射到了_ISR_STARTADDRESS为起始地址处。
在C语言的主程序里面也是将中断服务程序定义到了_ISR_STARTADDRESS处。如
#define   pISR_RESET         (*(unsigned   *)(_ISR_STARTADDRESS+0x0))
为什么还要加上下面的
for(i=_RAM_STARTADDRESS;i <(_RAM_STARTADDRESS+0x20);i+=4)
    {
      *((volatile   unsigned   *)i)=0xEA000000+0x1FFE;
    }
将_RAM_STARTADDRESS地址开始的32个字节,即前面的8个中断向量映射到_RAM_STARTADDRESS+8000处的地址。
有什么作用。我将我的程序下载到_RAM_STARTADDRESS+8000处和下载到9000处还想也没有什么区别,但是没有上面的这段程序的话不能进行中断。不知道是为什么。


[解决办法]
*((volatile unsigned *)i)=0xEA000000+0x1FFE;

让i指向后面给出的那个内存地址...

[解决办法]
怀疑所赋得值是一条指令把,因为如果是中断地址起始处,那应该是一条跳转指令才对,所以程序的意思是将8种异常的中断处理都跳转到一个程序中处理。只是猜测阿

热点排行