searchone
驱动牛犊
驱动牛犊
  • 注册日期2003-12-31
  • 最后登录2005-05-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1138回复:2

请教:usbn关于#pragma中断的一段程序

楼主#
更多 发布于:2005-01-03 13:57
各位帮忙分析一下,关于中断的处理,了解usbn的更好啊
在国半给的demo中,有如下代码:
#pragma interrupt(usb_node_handler)

void usb_node_handler(void)
{
   ……
    while(usbn_event = read_usb(MAEV))
    {
   ……    
    }
    ……
}

我的理解就是:
这里使用#pragma实现了对中断函数的定义,这里成为中断入口。当处理完MAEV中已有的中断后再进入等待状态。这样对吗?

如果是这样,但现在我的问题不知道从那里去得到这个中断信号,我用的是控制器是dsp。这个东西也不是很熟悉。现在想如果不利用程序的中断来实现同样的功能,可行吗?

设想是在初始化完成以后,在主循环中一直查询maev,程序如下:

 while(1)
 {
  unsigned char i_st;
  i_st=read_usb(MAEV);
  ENABLE_NODE_INTS(0) //关闭中断请求,并将maev寄存器清0
  
  if(i_st !=0)
  {
    if(i_st & RX_EV)//由寄存器内容做处理,相同于原中断函数
    ……
    ……
  }
  ENABLE_NODE_INTS(INTR_E|RX_EV|NAK|TX_EV|ALT)//重新开放中断        
 }

这样可以实现吗?谢谢!!!!!
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2005-01-03 14:30
可以的,就是麻烦点,速度慢点。
searchone
驱动牛犊
驱动牛犊
  • 注册日期2003-12-31
  • 最后登录2005-05-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-01-05 19:05
谢谢啊,那就是说理解没有错误了吧。这样这块dsp芯片除了无穷循环于传输就失去了数字处理功能了呵呵。暂时只要能满足传输就好了:)
游客

返回顶部