这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » VxWorks下S3C2410中断问题

共2条 1/1 1 跳转至

VxWorks下S3C2410中断问题

菜鸟
2007-08-06 18:05:44     打赏
       最近正在调试S3C2410板子,操作系统采用VxWorks。调到外中断时遇到一个很棘手的问题:
       先是使用EINT0作为外部中断源,用按键触发一个外部中断,用intConnect()函数挂接中断服务程序,触发方式是下降沿触发,程序运行正常,能够正确进入中断;然后改为低电平触发,用AXD跟踪调试,发现进入中断后程序跑飞了,地址乱了。
       另外,把外部中断源改为EINT11,初始化后连接ISR,发现不管是低电平还是下降沿都无法进入ISR,同样,用AXD跟踪,也是跑飞的现象,pc指针跑到ARM的高地址空间(保留空间)去了。
      小弟已经卡在这个问题上好多天了,一直搞不定,急切盼望各位大侠替小弟解围,在此先谢过了!!!
   



关键词: VxWorks     S3C2410     中断     问题    

菜鸟
2007-08-07 10:22:04     打赏
2楼

      谢谢yaopg版主!我按你提供的方法测了一下中断,问题依旧存在,现把代码贴出来,请您帮忙分析一下:

/*注:有关引脚的设置和中断的模式、触发方式等已在其他函数中完成*/

STATUS irqtest(void)
{
  (*(volatile unsigned *) rEINTPEND) = (*(volatile unsigned *) rEINTPEND);/* Clear pend */
  (*(volatile unsigned *) rEINTMASK)  &=  ~(1<<11);  /* Enable EINT11 */
  
 /* Connect interrupt vector to isr */
  if(intConnect(INUM_TO_IVEC(5), isr11, 0) == ERROR)
 {
  return ERROR;
 }

  intEnable(5); /* Enable EINT8_23 */

  while(1) ;

  return(OK);
}

void isr11(void)
{
    logMsg("got an interrupt\n",0,0,0,0,0,0);
 
 (*(volatile unsigned *) rEINTPEND) |= (1<<11); /* Clear EINT11*/
 (*(volatile unsigned *) rSRCPND) |= (1<<5);    /* Clear EINT8_23*/
 (*(volatile unsigned *) rINTPND) = (*(volatile unsigned *) rINTPND);
}


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]