主题 : mini2440 UCOS里加入中断,出现崩溃,请一定帮忙看下 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 14969
精华: 0
发帖: 5
金钱: 25 两
威望: 5 点
贡献值: 0 点
综合积分: 10 分
注册时间: 2010-02-26
最后登录: 2011-10-12
楼主  发表于: 2011-04-15 15:36

 mini2440 UCOS里加入中断,出现崩溃,请一定帮忙看下



#define REQCNT 30
#define ADCPRS 9 //YH 0627
#define LOOP 1

void Task0 (void *pdata)//Init lwip and create task2

          Uart_Printf("%x\n",rINTMSK);
          Uart_Printf("%x\n",rINTSUBMSK);
         Test_Touchpanel();
          while(1)
         {
                     Uart_Printf("%x\n",rINTMSK);
                     Uart_Printf("%x\n",rINTSUBMSK);
                     //rINTMSK = 0xfffffbff;
                     //rINTSUBMSK =0x7fff;
                     if(button(15,60,105,140))
                     {
                                   Uart_Printf("Press first picture.\n");
                     }
                      OSTimeDly(OS_TICKS_PER_SEC);
           }
}

void __irq AdcTsAuto(void)
{
            #if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status register */
            OS_CPU_SR  cpu_sr;
            #endif
            OS_ENTER_CRITICAL();
            // OSIntEnter();
            // OS_EXIT_CRITICAL();


            if(rADCDAT0&0x8000)
            {
                          Uart_Printf("Up state\n");
                          //Uart_Printf("count=%03d  XP=%04d, YP=%04d\n\n", count++, xdata, ydata);    //X-position Conversion data            

                         rSUBSRCPND|=BIT_SUB_TC;
                         ClearPending(BIT_ADC);  
                         rADCTSC =0xd3;
                         Touchupflag = 1;
                          // rSRCPND = 0xFFFFFFFF;
                         // rSUBSRCPND = 0xFFFF; 
             }else{
                          Uart_Printf("Down state\n");
                           rADCTSC=(1<<3)|(1<<2);         //Pull-up disable, Seq. X,Y postion measure.
                           rADCDLY=40000;                 //Normal conversion mode delay about (1/50M)*40000=0.8ms

                           // rADCCON|=0x1;                   //start ADC

                           // while(rADCCON & 0x1); /eck if Enable_start is low
                           // while(!(rADCCON & 0x8000));        /eck if EC(End of Conversion) flag is high, This line is necessary~!!

                           //            while(!(rSRCPND & (BIT_ADC)));  /eck if ADC is finished with interrupt bit

                          xdata=(rADCDAT0&0x3ff);
                          ydata=(rADCDAT1&0x3ff);
                          rADCTSC =0xd3;    //Waiting for interrupt
                          rADCTSC=rADCTSC|(1<<8); // Detect stylus up interrupt signal.
                          rSUBSRCPND|=BIT_SUB_TC;
                          ClearPending(BIT_ADC);
                          Uart_Printf("%x\n",rINTMSK);
                          Uart_Printf("%x\n",rINTSUBMSK);
                          // rSRCPND = 0xFFFFFFFF;
                          // rSUBSRCPND = 0xFFFF;
                          // Uart_Printf("%x\n",rSRCPND);
                         // Uart_Printf("%x\n",rSUBSRCPND);
            }
            //    OSIntExit();
           OS_EXIT_CRITICAL();
}
有谁能帮我看看,mini2440的开发板用UCOS,进了触摸中断后,怎么出不来呢?
级别: 新手上路
UID: 12068
精华: 0
发帖: 38
金钱: 190 两
威望: 38 点
贡献值: 0 点
综合积分: 76 分
注册时间: 2009-12-28
最后登录: 2016-06-11
1楼  发表于: 2011-04-15 16:50
ucos中的中断服务函数 前面不能加__irq
级别: 新手上路
UID: 45535
精华: 0
发帖: 4
金钱: 20 两
威望: 4 点
贡献值: 0 点
综合积分: 8 分
注册时间: 2011-05-05
最后登录: 2011-06-06
2楼  发表于: 2011-05-05 20:25
我也遇到相同的问题,求解中!
级别: 新手上路
UID: 45626
精华: 0
发帖: 4
金钱: 20 两
威望: 4 点
贡献值: 0 点
综合积分: 8 分
注册时间: 2011-05-06
最后登录: 2011-05-29
3楼  发表于: 2011-05-07 13:17
级别: 新手上路
UID: 36533
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
贡献值: 0 点
综合积分: 22 分
注册时间: 2011-01-17
最后登录: 2012-11-22
4楼  发表于: 2011-05-09 20:20
我也是这个问题,版主帮帮忙啊
级别: 新手上路
UID: 46542
精华: 0
发帖: 2
金钱: 10 两
威望: 2 点
贡献值: 0 点
综合积分: 4 分
注册时间: 2011-05-13
最后登录: 2012-03-25
5楼  发表于: 2011-05-31 19:10
虽然我也一直用ucoss,但我也没看出是什么问题!
级别: 新手上路
UID: 45583
精华: 0
发帖: 5
金钱: 25 两
威望: 5 点
贡献值: 0 点
综合积分: 10 分
注册时间: 2011-05-06
最后登录: 2011-10-07
6楼  发表于: 2011-06-01 20:05
去掉__irq就可以,搞了我好久啊!!终于在此被我找到了,多谢各位兄台!!
其实,每个人都只是一个演员!
级别: 新手上路
UID: 53668
精华: 0
发帖: 9
金钱: 45 两
威望: 9 点
贡献值: 0 点
综合积分: 18 分
注册时间: 2011-08-12
最后登录: 2017-09-13
7楼  发表于: 2011-08-12 22:25
去掉__irq 就可以了?我现在也是处理中断遇到问题, 如果加入其它中断程序,汇编里不用写代码吧,直接在C 语言里写,只要去掉__irq 就可以了吗?