里面是关于arm中断的详细的资料

源代码在线查看: arm中断的基本过程是怎样的?.htm

软件大小: 31 K
上传用户: sinba
关键词: arm 中断
下载地址: 免注册下载 普通下载 VIP

相关代码

				
				
				ARM中断的基本过程是怎样的?
				
				BODY {
					FONT-WEIGHT: normal; FONT-SIZE: 10pt; LINE-HEIGHT: 15px; FONT-STYLE: normal; FONT-FAMILY: "宋体","System"; TEXT-DECORATION: none
				}
				TABLE {
					FONT-SIZE: 10pt; LINE-HEIGHT: 1.6; FONT-FAMILY: "宋体","System"
				}
				P {
					FONT-SIZE: 10.5pt; FONT-FAMILY: "宋体","System"
				}
				
				
				
								src="ARM中断的基本过程是怎样的?.files/Faq.gif" width=778 border=0> 
				
				  				  size=4>ARM中断的基本过程是怎样的?
				
				  
				  
				     
				    
				      
				    
				  
				     
				    问题:
				    				      color=blue>void ext_IRQ0_handler(void) __attribute__ ((interrupt ("IRQ")));   
				      //*----------------------------------------------------------------------------   
				      //* Function Name      
				        : ext_IRQ0_handler   
				      //* Object      
				            
				          : Irq Handler called by the IRQ0 interrupt   
				      //* Input Parameters    : none   
				      //* Output Parameters   : none   
				      //* Functions called    : at91_pio_read, at91_pio_write   
				      //*----------------------------------------------------------------------------   
				      void ext_IRQ0_handler(void)   {   
				          //* read the ouput state   
				          if ( (at91_pio_read ( &PIO_DESC) & LED2 ) == LED2 )   
				          {   
				            
				         at91_pio_write ( &PIO_DESC, LED2, PIO_CLEAR_OUT );   
				          }   
				          else   
				          {   
				            
				          at91_pio_write ( &PIO_DESC, LED2, PIO_SET_OUT );   
				          }   
				          //* Mark the End of Interrupt on the AIC   
				          AIC_EOICR = 0;   
				      }    
				      我在主函数中设定IRQ0为上升沿触发,是不是在IRQ0脚给个上升沿它就进入中断啊???  
				      还需不需要写汇编代码注册中断吗??  能给我讲讲中断吗??
				
				
				  
				  
				  
				  
				     
				    
				      
				    
				  
				     
				    回答:
				    ARM中断的基本过程: 
				      在IRQ0脚给个上升沿后,过程是这样的(比较通用的过程)。 1)如果你没有打开该中断的使能寄存器,没有任何反应。   
				      2)如果你打开了使能寄存器,但在对应的屏蔽寄存器中屏蔽了该中断,也没有任何反应。 
				      3)上述两个寄存器都设置正确了,中断产生了,CPU保存当前程序运行环境,跳到中断入口,ARM芯片一般是 0x?地址处。 
				        4)如果你没有设置中断向量,即0x?处不是你的代码,程序就会飞掉,当然也可能正常运行,这种情况一般发生在正好飞到正常代码处。 
				        
				      5)设置好中断向量了,中断向量一般是个跳转语句,跳到你的正式的中断处理过程,在这里你可以关闭所有中断,清中断,处理等等,然后退出。记住某些处理器一定要清中断,否则下次再给个上升沿就没有反应了。 
				      
							

相关资源