专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VxWorks

vxworks进入中断后程序就挂了,咋回事

发布时间:2010-06-14 16:49:56 文章来源:www.iduyao.cn 采编人员:星星草
vxworks进入中断后程序就挂了,怎么回事?

#include "vxWorks.h"
//#include "cacheLib.h"
#include "memLib.h"
//#include "iv.h"
#include "intLib.h"
#include "sysLib.h"
#include "stdio.h"
//#include "m8260IntrCtl.h"
#include "ioLib.h"
#include "logLib.h"
#include "taskLib.h"
#include "ads8260.h"
//#define M8260_SIMR_L(base) ((volatile int *) ((base) + 0x010C20))
#define M8260_SIMR_H(base) ((volatile int *) ((base) + 0x010C1C))
#define M8260_SIPNR_H(base) ((volatile int *) ((base) + 0x010c08))
IMPORT int vxImmrGet(void);
int irq = 0;
void IRQ_6()
{
//int i = * M8260_SIMR_H(0xff000000);
//logMsg("IRQ_6! SIMR = %x \n",i,0,0,0,0,0);
int immrVal = 0xff000000;
logMsg("6",0,0,0,0,0,0);
irq = 6;
*M8260_SIPNR_H(0xff000000) = 0x00000200;
}
void IRQ_5()
{
//int i = * M8260_SIMR_H(0xff000000);
//logMsg("IRQ_5! SIMR = %x \n",i,0,0,0,0,0);
int immrVal = 0xff000000;
logMsg("5",0,0,0,0,0,0);
irq = 5;
*M8260_SIPNR_H(0xff000000) = 0x00000400;
}
void simr_h_read(void)
{
int simr = * M8260_SIMR_H(0xff000000);
printf("M8260_SIMR_H = %x\n",simr);
printf("irq = %d\n",irq);
}
void p_i(void)
{
while(1)
{
int simr = * M8260_SIMR_H(0xff000000);
printf("M8260_SIMR_H = %x\n",simr);
printf("irq = %d\n",irq);
taskDelay(10);
}
}
void test_irq(void)
{

 
  int immrVal = 0xff000000;//vxImmrGet();
printf("test_irq.begin\n");

m8260IntDisable(INUM_IRQ6);
m8260IntDisable(INUM_IRQ5);
//immrVal = vxImmrGet();
/* * M8260_SIMR_H(immrVal) &= ~0x00000600;*/
intConnect (INUM_TO_IVEC(INUM_IRQ6), (VOIDFUNCPTR)IRQ_6, 0); 
intConnect (INUM_TO_IVEC(INUM_IRQ5), (VOIDFUNCPTR)IRQ_5, 0);
/* * M8260_SIMR_H(immrVal) |= 0x00000600;*/
m8260IntEnable(INUM_IRQ6);
  m8260IntEnable(INUM_IRQ5);
  taskSpawn("002",100,0,50,(FUNCPTR)p_i,0,0,0,0,0,0,0,0,0,0);
printf("test_irq.end\n");
}

------解决方案--------------------
进中断后,屏蔽中断试试
------解决方案--------------------
进中断后,必须清中断,等待下一次中断的到来
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: