求解,为什么没有进入到触摸屏中断

mrIIIyu 2016-05-31 01:13:15
void LCDmain(void)
{

unsigned int x,y;

Lcd_Port_Init();
Lcd_Init();
Lcd_PowerEnable(0, 1);
Lcd_EnvidOnOff(1);
//LCD 显示屏的初始化

//Lcd_ClearScr(0x09F);
for(x=0;x<=260;x++) //显示屏为黑色
for(y=0;y<=320;y++)
LCD_BUFFER[x][y] = 0x000000;
Delay(10);

Ts_Sep();//调用触摸屏初始化

for(x=50;x<=130;x++)//其中的一个矩形块为黄色
for(y=0;y<=320;y++)
LCD_BUFFER[x][y] = 0xffff00;
Delay(10);


while(1);//等待中断




}


void Ts_Sep(void)//初始化
{
rADCDLY=50000;
rADCCON = (1<<14)|(39<<6)|(0<<3)|(0<<2)|(0<<1)|(0);
rADCTSC = (0<<8)|(1<<7)|(1<<6)|(0<<5)|(1<<4)|(0<<3)|(0<<2)|(3);

pISR_ADC = (unsigned)ADC_ISR;

ClearSubPending(BIT_SUB_TC);
ClearSubPending(BIT_SUB_ADC);
ClearPending(BIT_ADC);
EnableSubIrq(BIT_SUB_TC);
EnableIrq(BIT_ADC);



}

void __irq ADC_ISR(void)//中断函数
{
int x,y;
// 屏蔽ADC中断
rINTSUBMSK |= BIT_SUB_TC;
rINTSUBMSK |= BIT_SUB_ADC;
rINTMSK |= BIT_ADC;

while(1)
{

for(x=0;x<=260;x++) //其中一块为白色
for(y=90;y<=120;y++)
LCD_BUFFER[y][x] = 0xffffff;
Delay(10);

}
while (rADCCON & 0x01); //当A/D转换真正开始时,位[0]会自动清0
while ( !(rADCCON & 0x8000) );//检测位[15], 当它为1时表示转换结束
// x=(0x3ff&rADCDAT0);
//y=(0x3ff&rADCDAT1);



}
/******************************************************************/
//关于一些触摸屏寄存器及相关的初宏定义
#define _ISR_STARTADDRESS 0x33ffff00
#define rADCCON (*(volatile unsigned*)0x58000000)
#define rADCTSC (*(volatile unsigned*)0x58000004)
#define rADCDLY (*(volatile unsigned*)0x58000008)
#define rADCDAT0 (*(volatile unsigned*)0x5800000c)
#define rADCDAT1 (*(volatile unsigned*)0x58000010)
#define rSUBSRCPND (*(volatile unsigned*)0x4A000018)
#define rINTPND (*(volatile unsigned*)0x4A000010)
#define rINTMSK (*(volatile unsigned*)0x4A000008)
#define rINTSUBMSK (*(volatile unsigned*)0x4A00001c)
#define rSRCPND (*( unsigned*)0x4A000000)
#define BIT_SUB_ADC (0x1<<10)
#define BIT_SUB_TC (0x1<<9)
#define BIT_ADC (0x1<<31)
#define BIT_SUB_ADC_S (0x1<<10)
#define ISR_ADC_OFT 31
#define ADCPRS 39
#define pISR_ADC (*(unsigned *)(_ISR_STARTADDRESS+0x9c))
#define EnableIrq(bit) rINTMSK &= ~(bit)
#define DisableIrq(bit) rINTMSK |= (bit)
#define EnableSubIrq(bit) rINTSUBMSK &= ~(bit)
#define DisableSubIrq(bit) rINTSUBMSK |= (bit)
void Ts_Sep(void);

__inline void ClearPending(int bit)
{
register i;
rSRCPND = bit;
rINTPND = bit;
i = rINTPND;
}
__inline void ClearSubPending(int bit)
{
register i;
rSUBSRCPND = bit;
i = rINTPND;
}

[i]使用的是RAM9 S3C2440开发板,上面是触摸屏相关的函数
正确的实验现象应该是 显示屏 黄色矩形中会有一块白色矩形
但那个白色矩形没有显示,所以判断没有进入到中断程序里,求解,为什么
...全文
951 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
什么系统? 这里是CE板块
  • 打赏
  • 举报
回复
打印一些信息调试吧。LCDmain最后死循环不会耗光cpu资源?

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧