发 帖  
原厂入驻New
申请华秋企业认证 多层板首单免费打样!
30s提交资料,10分钟通过审核(免费赔付+顺丰包邮)>>立即报名
[问答] 为什么DMA9000_ISRHandler()处理函数中没有添加代码也能收发数据?
74 网络通信 中断 函数
分享
最近在研究原子哥的网络通信实验,发现在dm9000.c中有一个外部中断线6的中断服务函数EXti9_5_IRQHandler(),里面调用了一个dm9000的中断处理函数DMA9000_ISRHandler()。但是在这个处理函数中没有添加代码,为什么程序也能跟PC机通讯收发数据?
在这个实验里发送和接收数据都是查询方式吗?会被其它中断打断而导致收发出错?
请大神们指教一下!
0
2019-11-7 04:35:30   评论 分享淘帖 邀请回答
2个回答
这是DM9000的中断输入啊。。。你上代码,应该是有处理的。
2019-11-7 09:08:24 评论

举报

[C] 纯文本查看 复制代码
//外部中断线6的中断服务函数void EXTI9_5_IRQHandler(void){        EXTI->PR=1<<6;                  //清除LINE6上的中断标志位                 while(DM9000_INT==0)        {                DMA9000_ISRHandler();        }}
[C] 纯文本查看 复制代码
//DM9000中断处理函数void DMA9000_ISRHandler(void){        u16 int_status;        u16 last_io;         last_io = DM9000->REG;        int_status=DM9000_ReadReg(DM9000_ISR);         DM9000_WriteReg(DM9000_ISR,int_status);//清除中断标志位,        DM9000的ISR寄存器的bit0~bit5写1清零                if(int_status & ISR_ROS)printf("overflow \r\n");    if(int_status & ISR_ROOS)printf("overflow counter overflow \r\n");                if(int_status & ISR_PRS)                //接收中断        {                   //接收完成中断,用户自行添加所需代码        }         if(int_status & ISR_PTS)                        //发送中断        {                 //发送完成中断,用户自行添加所需代码        }        DM9000->REG=last_io;        }
我在接收完成和发送完成中试过添加打印语句,发现程序每隔一段时间(大约几个ms)就进入一次。按了KEY0发送数据到PC机上,反而没有看到打印的信息,这是不是代表着发送数据没有进入到这个中断?
另外,请问代码中:int_status=DM9000_ReadReg(DM9000_ISR);
                           DM9000_WriteReg(DM9000_ISR,int_status);这两句有什么意义吗?读取一个值再写回去?
2019-11-7 09:20:14 评论

举报

只有小组成员才能发言,加入小组>>

59个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /6 下一条

快速回复 返回顶部 返回列表