misssir
驱动牛犊
驱动牛犊
  • 注册日期2007-10-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分143分
  • 威望183点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
阅读:1922回复:3

usb的中断处理函数太短了

楼主#
更多 发布于:2010-03-17 09:05
我用Keil uVersion2打开的别人的ez_usb示例程序, 芯片用的是cy7c68013,我想写usb设备程序的朋友都应该看到过这代码,有个问题我老想不通,为什么明明是中断要处理的事情,都要到main主函数的死循环中处理呢

void ISR_Sudav(void) interrupt 0  
{
   GotSUD = TRUE;    //主函数循环检查这个标志        
  
   //问题是为什么不在这里面处理逻辑呢
  
   EZUSB_IRQ_CLEAR();        
   USBIRQ = bmSUDAV;        
}
还是原始社会好 / QQ: 13633292
jally76
驱动牛犊
驱动牛犊
  • 注册日期2005-04-28
  • 最后登录2010-11-23
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望590点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-03-17 09:54
中断的系统优先级高,它能优先占用CPU资源,如果中断处理做的事情过多,势必会影响普通操作的性能,所以要尽快完成,一般只做一些关键性的寄存器调置和设定标志位。主要或耗时的操作最好还是在普通模式下做。
misssir
驱动牛犊
驱动牛犊
  • 注册日期2007-10-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分143分
  • 威望183点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2010-03-17 10:30
是这个道理,但是我怕轮到主程序处理时,数据寄存器的内容已经被其他中断源改写了
还是原始社会好 / QQ: 13633292
jaywea
驱动牛犊
驱动牛犊
  • 注册日期2007-07-08
  • 最后登录2010-10-17
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2010-03-26 11:41
我也遇到这个疑问,没人回答啊
游客

返回顶部