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

共7条 1/1 1 跳转至

好奇怪的中断!

菜鸟
2002-06-05 18:26:13     打赏
在ARM7TDMI中,我用intConnect()将中断服务程序挂接到好,直接操作中断掩码寄存器开中断,*(volatile UINT32 *)SNDS_INTMASK &= ~0x2;结果只中断一次,debug发现系统在中断返回后自动把该MASK位置1了!气死我了!!在作了N(N>=100)次推测和试验后,最后还是用intEnable()替换掉*(volatile UINT32 *)SNDS_INTMASK &= ~0x2;才把问题解决了。不知道是不是vxworks只能用这种方式来打开中断,直接操作寄存器反而不行???[em06]



关键词: 好奇     怪的     中断    

菜鸟
2002-06-05 18:31:00     打赏
2楼
我直接修改寄存器成功过,你再试试!

菜鸟
2002-06-06 02:22:00     打赏
3楼
我后来又试了,还是不行。对了,xiaohua兄,我上次点灯程序多亏你指点,现在对啦!就是U32和U16的区别。谢谢。 这个中断的问题不好说清楚,我还是把原程序中的相关部分帖出来吧!请两位多多指点。 -------------------------------- void armInterrupt(int arg) {   *(volatile UINT32 *)SNDS_INTPEND |= 0x2; /*clear pend bit.*/   *(volatile UINT32 *)SNDS_IOPDATA = ~(0x01<

菜鸟
2002-06-06 04:27:00     打赏
4楼
*(volatile UINT32 *)((UINT32)(SNDS_INTMASK))=0x0; *(volatile UINT32 *)((UINT32)(SNDS_INTPEND))=0x0; 试一下!

菜鸟
2002-06-07 01:31:00     打赏
5楼
小华,我按你的方法试过了,还是不行! 看来这只有成一个謎了......

菜鸟
2002-06-07 04:47:00     打赏
6楼
把你的源程序给我发一份儿,告诉我你的工作环境,也许我们可以交流一下。

菜鸟
2002-06-07 17:49:00     打赏
7楼
我现在的程序比较简单:外部来一个中断(用外部中断1),中断服务程序把读指针移向下一个数据块(共4个块循环),依次点亮I/O口上低4位的灯,并给出一个读信号量。读任务得到信号量后,将相应的数据块拷贝到另一个缓冲区,然后给出一个发送信号量。发送任务得到发送信号量后把数据通过tcp/ip协议发送到服务器端。如此反复循环。当然程序还比较粗糙,数据安全没有考虑。我对多任务编程也不是很精通,收到程序后请多指教。   一个题外话:小的时候,我的小名也叫“小华”!呵呵,是不是很巧?[em27]

共7条 1/1 1 跳转至

回复

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