⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 arm中断的基本过程是怎样的?.htm

📁 里面是关于arm中断的详细的资料
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0060)http://www.embedinfo.com/chinese/support/faqhtm/18000005.htm -->
<HTML><HEAD><TITLE>ARM中断的基本过程是怎样的?</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE>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"
}
</STYLE>

<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY leftMargin=0 topMargin=0><!-- embest help header --><IMG height=73 
src="ARM中断的基本过程是怎样的?.files/Faq.gif" width=778 border=0> <!-- embest help header --><!-- 文章显示 -->
<DL><D>
  <P align=center><B><FONT face=黑体 color=#000000 
  size=4>ARM中断的基本过程是怎样的?</FONT></B></P></DL><!-- 问题 -->
<TABLE cellSpacing=0 cellPadding=5 width="94%" bgColor=white border=0>
  <TBODY>
  <TR>
    <TD width="5%">&nbsp;</TD>
    <TD colSpan=2>
      <HR color=#999999>
    </TD></TR>
  <TR>
    <TD width="5%">&nbsp;</TD>
    <TD vAlign=top width="10%"><FONT color=blue>问题:</FONT></TD>
    <TD width="85%"><FONT 
      color=blue>void&nbsp;ext_IRQ0_handler(void)&nbsp;__attribute__&nbsp;((interrupt&nbsp;("IRQ")));&nbsp;&nbsp; 
      <BR><BR>//*----------------------------------------------------------------------------&nbsp;&nbsp; 
      <BR>//*&nbsp;Function&nbsp;Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      &nbsp;&nbsp;:&nbsp;ext_IRQ0_handler&nbsp;&nbsp; 
      <BR>//*&nbsp;Object&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      &nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;Irq&nbsp;Handler&nbsp;called&nbsp;by&nbsp;the&nbsp;IRQ0&nbsp;interrupt&nbsp;&nbsp; 
      <BR>//*&nbsp;Input&nbsp;Parameters&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;none&nbsp;&nbsp; 
      <BR>//*&nbsp;Output&nbsp;Parameters&nbsp;&nbsp;&nbsp;:&nbsp;none&nbsp;&nbsp; 
      <BR>//*&nbsp;Functions&nbsp;called&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;at91_pio_read,&nbsp;at91_pio_write&nbsp;&nbsp; 
      <BR>//*----------------------------------------------------------------------------&nbsp;&nbsp; 
      <BR>void&nbsp;ext_IRQ0_handler(void)&nbsp;&nbsp; <BR>{&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;//*&nbsp;read&nbsp;the&nbsp;ouput&nbsp;state&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;(at91_pio_read&nbsp;(&nbsp;&amp;PIO_DESC)&nbsp;&amp;&nbsp;LED2&nbsp;)&nbsp;==&nbsp;LED2&nbsp;)&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      &nbsp;&nbsp;&nbsp;at91_pio_write&nbsp;(&nbsp;&amp;PIO_DESC,&nbsp;LED2,&nbsp;PIO_CLEAR_OUT&nbsp;);&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      &nbsp;&nbsp;&nbsp;&nbsp;at91_pio_write&nbsp;(&nbsp;&amp;PIO_DESC,&nbsp;LED2,&nbsp;PIO_SET_OUT&nbsp;);&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;//*&nbsp;Mark&nbsp;the&nbsp;End&nbsp;of&nbsp;Interrupt&nbsp;on&nbsp;the&nbsp;AIC&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;AIC_EOICR&nbsp;=&nbsp;0;&nbsp;&nbsp; 
      <BR>}&nbsp;&nbsp;&nbsp; 
      <BR>我在主函数中设定IRQ0为上升沿触发,是不是在IRQ0脚给个上升沿它就进入中断啊???&nbsp; 
      <BR>还需不需要写汇编代码注册中断吗??&nbsp; <BR>能给我讲讲中断吗??</FONT></TD></TR></TBODY></TABLE><!-- 回答 -->
<DIV>
<TABLE cellSpacing=0 cellPadding=5 width="94%" bgColor=white border=0>
  <TBODY>
  <TR></TR>
  <TR>
  <TR>
    <TD width="5%">&nbsp;</TD>
    <TD width="95%" colSpan=2>
      <HR color=#999999>
    </TD></TR>
  <TR>
    <TD width="5%">&nbsp;</TD>
    <TD vAlign=top width="10%"><FONT color=black>回答:</FONT></TD>
    <TD width="85%"><FONT color=black>ARM中断的基本过程: 
      <BR>在IRQ0脚给个上升沿后,过程是这样的(比较通用的过程)。 <BR>1)如果你没有打开该中断的使能寄存器,没有任何反应。 &nbsp; 
      <BR>2)如果你打开了使能寄存器,但在对应的屏蔽寄存器中屏蔽了该中断,也没有任何反应。 
      <BR>3)上述两个寄存器都设置正确了,中断产生了,CPU保存当前程序运行环境,跳到中断入口,ARM芯片一般是&nbsp;0x?地址处。 
      &nbsp; <BR>4)如果你没有设置中断向量,即0x?处不是你的代码,程序就会飞掉,当然也可能正常运行,这种情况一般发生在正好飞到正常代码处。 
      &nbsp; 
      <BR>5)设置好中断向量了,中断向量一般是个跳转语句,跳到你的正式的中断处理过程,在这里你可以关闭所有中断,清中断,处理等等,然后退出。记住某些处理器一定要清中断,否则下次再给个上升沿就没有反应了。 
      </FONT></TD></TR></TBODY></TABLE></DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -