阅读:1995回复:5
中断发生时,究竟调用那个函数????
一个程序定义了很多中断0的服务例程,
当中断0发生时,究竟调用那个函数????还是全部调用??? void ISR_Sudav( void ) interrupt 0 { GotSUD = TRUE; // Set flag EZUSB_IRQ_CLEAR( ); USBIRQ = bmSUDAV; // Clear SUDAV IRQ } // Setup Token Interrupt Handler void ISR_Sutok( void ) interrupt 0 { EZUSB_IRQ_CLEAR( ); USBIRQ = bmSUTOK; // Clear SUTOK IRQ } void ISR_Sof( void ) interrupt 0 { EZUSB_IRQ_CLEAR( ); USBIRQ = bmSOF; // Clear SOF IRQ } void ISR_Ures( void ) interrupt 0 { if ( EZUSB_HIGHSPEED( ) ) { pConfigDscr = pHighSpeedConfigDscr; } EZUSB_IRQ_CLEAR( ); USBIRQ = bmURES; // Clear URES IRQ } |
|
|
沙发#
发布于:2004-10-28 11:00
你有没有看到程序开头有“#pragma NOIV”之类的字样啊,那是把51的中断向量表给关了,这样你的芯片自己产生一个和51不一样的向量表,根据这个向量表来判断你的中断的跳转,而不是根据51的向量表来跳转所以他们都是中断号为0,
|
|
|
板凳#
发布于:2004-10-28 12:00
果然有高手!!!
:D 21ic上两个哥么都说没见过!!! :D |
|
|
地板#
发布于:2004-10-28 12:01
果然有高手!!!
:D 21ic上两个哥么都说没见过!!! :D 谢谢!!! |
|
|
地下室#
发布于:2004-11-02 19:56
后面的interrupt 0根本就不是中断0的服务例程,文件开头的#pragma NOIV已经把中断屏蔽掉了,其实这里是USB二级中断。你可以看cypress自己提供的usblib目录下的有一个软中断跳转表,上面就指向了这些中断函数。
|
|
|
5楼#
发布于:2004-11-03 21:02
我觉得,楼上说的对
|
|