• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : 求助:mini2440裸奔不能进入中断 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 8860
精华: 0
发帖: 10
金钱: 95 两
威望: 43 点
综合积分: 20 分
注册时间: 2009-09-08
最后登录: 2017-09-13
楼主  发表于: 2009-12-09 09:53

 求助:mini2440裸奔不能进入中断


我是一个arm新手,最近买了友善之臂的mini2440,想先熟悉以下芯片的硬件,便在光盘自带的myled的基础上作了一点修改

,只是修改了main文件,结果发现一直都不能进入中断,查阅了很多资料也没有看出来问题出在那里,请各位给指点下,小

弟在此写过了,程序如下


//***************************************************
#include "def.h"
#include "2440addr.h"
#include "option.h"      
//================================


U32 data;

void Int_Init(void)    //init the interrupt
{    
    rINTMSK = ~(0x01<<10);    //use interrupt
    rINTMOD = 0;    //all irq mode
    //rINTSUBMSK &= (~(0x01<<10));    //did not init at first
    //CPSR |= (~(0x1<<6));
    //CLR_IF();

    
}
void Clock_Init(void)    //12Mhz Fin;Fclk=500Mhz,m=117,p=1;s=1
{            //Fclk=Mpll=2*(127+8)*12/((2+2)*2^1)=405Mhz
    rMPLLCON |= (0x7f<<12)|(0x02<<4)|(0x01);    // Fclk max is 200-533MHZ.better at 400MHZ
    rCLKDIVN |= 0x07;            //Hclk max is 136MHZ,Pclk max is 68MHZ,1:3:6
    rCLKCON  |= 0x1FFFF0;    //(0x1<<8);
    rCLKSLOW  = 0x00;    //(0x0<<4);    //Modify AT LAST
}

void Timer0_Init(void)    
{
    
    rTCFG0 = 0x00000063;    //prescaler 100
    rTCFG1 = 1;
    rTCNTB0 = 50000;        //0.01s
    rTCON |= 0x02;        //(0x01<<1);        //update and start=0
    rTCON  =0x09;        //start and update=0 and autoreload=1
    rSRCPND = (1<<10);    //add at last
    rINTPND = (1<<10);
}

void __irq HandleTIMER0(void)
{
    static U8 tt=0;
    tt++;
    
    if(100==tt)
    {
        data =~data;
        tt=0;
    }
    rGPBDAT = data;    //(data<<5);
    rSRCPND |=(0x01<<10);
    rINTPND = rINTPND;
}


void dely(U32 tt)
{
   U32 i;
   for(;tt>0;tt--)
   {
     for(i=0;i<60000;i++){}
   }
}
  

int Main(int argc, char **argv)
{

    //U32 data;
        Clock_Init();
    rGPBCON = 0x155555;

    data = 0x00;
    dely(20);
    pISR_TIMER0 = (U32)HandleTIMER0;
    Int_Init();
    Timer0_Init();
    //rGPBDAT = data;
      
    
       while(1)
       {

    }
  
   return 0;
}
级别: 新手上路
UID: 8860
精华: 0
发帖: 10
金钱: 95 两
威望: 43 点
综合积分: 20 分
注册时间: 2009-09-08
最后登录: 2017-09-13
1楼  发表于: 2009-12-09 13:13
自己顶一下,忘了说了,我是想把程序下道NAND里面去运行,下在地址DNW设定0x3000000和0x00000000都不行
级别: 新手上路
UID: 9823
精华: 0
发帖: 33
金钱: 225 两
威望: 81 点
综合积分: 66 分
注册时间: 2009-10-15
最后登录: 2017-09-13
2楼  发表于: 2009-12-09 17:37
rCLKDIVN |= 0x07;            //Hclk max is 136MHZ,Pclk max is 68MHZ,1:3:6


你把这个屏蔽了试一下
还有设计到串口的函数也全部要屏蔽!!!
级别: 新手上路
UID: 8860
精华: 0
发帖: 10
金钱: 95 两
威望: 43 点
综合积分: 20 分
注册时间: 2009-09-08
最后登录: 2017-09-13
3楼  发表于: 2009-12-09 18:23
谢谢,我试一下看看,能讲讲为什么要把它屏蔽掉么?
级别: 新手上路
UID: 8860
精华: 0
发帖: 10
金钱: 95 两
威望: 43 点
综合积分: 20 分
注册时间: 2009-09-08
最后登录: 2017-09-13
4楼  发表于: 2009-12-09 19:20

 回 2楼(xiatiancc) 的帖子

我把它屏蔽了好像还是不可以,不知道是不是哪里需要设置?比如ro=?rw=?
或者dnw的地址改成0x???,谢谢
级别: 侠客
UID: 4843
精华: 0
发帖: 102
金钱: 810 两
威望: 554 点
综合积分: 204 分
注册时间: 2009-03-31
最后登录: 2012-11-14
5楼  发表于: 2009-12-09 19:36
如果是下载到NAND的话,在vivi里面选择按[v]键,把程序当做vivi / bootloader看待。
跟DNW的设置没关系。

如果是下载到SDRAM里面的话,记得要重新映射中断向量表到程序起始处(一般为0x30000000)。
级别: 新手上路
UID: 8860
精华: 0
发帖: 10
金钱: 95 两
威望: 43 点
综合积分: 20 分
注册时间: 2009-09-08
最后登录: 2017-09-13
6楼  发表于: 2009-12-09 19:48
不是vivi状态下使用a么?你的意思是用把开关拨到nand,然后下在?小弟比较菜,见笑了
级别: 侠客
UID: 4843
精华: 0
发帖: 102
金钱: 810 两
威望: 554 点
综合积分: 204 分
注册时间: 2009-03-31
最后登录: 2012-11-14
7楼  发表于: 2009-12-09 19:59
两个选项的效果应该是一样的
级别: 新手上路
UID: 8860
精华: 0
发帖: 10
金钱: 95 两
威望: 43 点
综合积分: 20 分
注册时间: 2009-09-08
最后登录: 2017-09-13
8楼  发表于: 2009-12-09 20:02
大哥,可以加qq么?591897726,不是很清楚你的意思
级别: 侠客
UID: 4843
精华: 0
发帖: 102
金钱: 810 两
威望: 554 点
综合积分: 204 分
注册时间: 2009-03-31
最后登录: 2012-11-14
9楼  发表于: 2009-12-09 20:08
大哥 我水平很菜的 我先看看
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go