主题 : UCOS下触摸屏中断死机(RTC中断能用,附代码) 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 15395
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
贡献值: 0 点
综合积分: 6 分
注册时间: 2010-03-04
最后登录: 2010-11-25
楼主  发表于: 2010-11-25 15:09

 UCOS下触摸屏中断死机(RTC中断能用,附代码)

触摸屏中断只能进一次就死,而RTC中断却无影响,求高手解答,
void RTCISR(void)
{
rSRCPND|=1<<8;
rINTPND|=1<<8;
// if( RTC_INT_CNT++==0xb964f000);//100years
// RTC_INT_CNT=0;
// GUI_RTC(300,100);
uart_rtc();
}

void RTC_Init()
{
pISR_TICK=(unsigned int )RTCISR;
rTICNT=(1<<7)|127;//ÖÜÆÚ/ 1S
rINTMSK&=~(1<<8);
rSRCPND|=1<<8;
rINTPND|=1<<8;
}
//////////////////////////////////////////////////////触摸屏
void ADC_TOUCH(void)
{
rADCCON=0x4c40;//50·ÖƵ
rADCTSC=0Xd3;
rADCDLY=50000;
rINTMSK=~(1<<31);
rINTSUBMSK=~((1<<10)|(1<<9));
rSUBSRCPND=(1<<10)|(1<<9);
rSRCPND=1<<31;
rINTMOD=0X00;
rINTPND=1<<31;
pISR_ADC = (unsigned)ADC_ISR;
uart_printf("AD_TOUTH IS ENABLE NOW!") ;
}
void  ADC_ISR(void) //´¥ÃþÖжÏ
{
rINTSUBMSK|=(1<<9)|(1<<10);
if(rSUBSRCPND&(1<<9))
{
rADCTSC=(1<<3)|(1<<2);
rADCCON|=0X01;
rSUBSRCPND|=1<<9;
rSRCPND=1<<31;
rINTPND=1<<31;
rINTSUBMSK&=~(1<<10);
// uart_printf("test\n\r");
}
if(rSUBSRCPND&(1<<10))//ADCÖжÏ
{
rINTSUBMSK|=(1<<9)|(1<<10);
xdate=rADCDAT0&0X3FF;
ydate=rADCDAT1&0X3FF;
rSUBSRCPND=1<<10;
rSRCPND=1<<31;
rINTPND=1<<31;
rADCTSC=0Xd3;
// key_0x=ydate*0.2961-35.895;
// key_0y=345.2419-xdate*0.4032;
key[0]=ydate*0.2961-35.895;
key[1]=345.2419-xdate*0.4032;
key[2]=1;
uart_printf("%d, %d\n\r",key[0],key[1]);
rINTSUBMSK&=~(1<<9);
// if(ta_flag++==655360)
// ta_flag=0;
}
}
cjs
级别: 新手上路
UID: 23460
精华: 0
发帖: 35
金钱: 175 两
威望: 35 点
贡献值: 0 点
综合积分: 70 分
注册时间: 2010-06-20
最后登录: 2016-03-23
1楼  发表于: 2011-01-14 21:37
rINTMSK=~(1<<31);
rINTSUBMSK=~((1<<10)|(1<<9));

rSUBSRCPND=(1<<10)|(1<<9);
你把其他中断都给关了,当然死机了,应该用
rINTMSK&=~(1<<31);
rINTSUBMSK&=~((1<<10)|(1<<9));
菜鸟起飞~~~~
级别: 新手上路
UID: 45535
精华: 0
发帖: 4
金钱: 20 两
威望: 4 点
贡献值: 0 点
综合积分: 8 分
注册时间: 2011-05-05
最后登录: 2011-06-06
2楼  发表于: 2011-05-05 20:30
ucos中中断函数是怎么个写法求LZ指教