📄 basic.html
字号:
lang=EN-US style='mso-ansi-language:EN-US'>- SW4 :</span></b><span lang=EN-US
style='mso-ansi-language:EN-US'> (AT91C_PIO_PA16) Used in standard PIO for the
PIO interrupt<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:36.0pt;text-indent:36.0pt'><b><span
lang=EN-US style='mso-ansi-language:EN-US'>- LED1 to LED4 :</span></b><span
lang=EN-US style='mso-ansi-language:EN-US'> Using in standard PIO output <o:p><br>
<br>
</o:p></span></p>
<p class=MsoNormal><a name="Source_Files"><b><span lang=FR style='mso-ansi-language:
FR'><!-- ******* FILE ********** !-->Source Files:</span></b></a><b><span
lang=FR style='mso-ansi-language:FR'><o:p></o:p></span></b></p>
<table border=1 cellspacing=1 cellpadding=0 width=554 style='width:415.5pt;
mso-cellspacing:.7pt;mso-padding-alt:5.25pt 5.25pt 5.25pt 5.25pt'>
<tr>
<td width="34%" valign=top style='width:34.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p class=MsoNormal><span lang=FR style='mso-ansi-language:FR'> <o:p></o:p></span></p>
</td>
<td width="66%" valign=top style='width:66.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p><b><span lang=FR style='font-size:10.0pt;mso-ansi-language:FR'>Description
Files</span></b><span lang=FR style='mso-ansi-language:FR'><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td width="34%" valign=top style='width:34.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>srcxxx/SAM7Board.h</span><span
lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
</td>
<td width="66%" valign=top style='width:66.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>SAM7
evaluation board description</span><span lang=EN-US style='mso-ansi-language:
EN-US'><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td width="34%" valign=top style='width:34.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'> <o:p></o:p></span></p>
</td>
<td width="66%" valign=top style='width:66.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p><b><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>Startup
Files</span></b><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td width="34%" valign=top style='width:34.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>srcxxx/Cstartup.xxx
</span><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
</td>
<td width="66%" valign=top style='width:66.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p><b><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>AT91SAM7Sxx</span></b><span
lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'> microcontroller
reset entry point</span><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td width="34%" valign=top style='width:34.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>srcxxx/Cstartup_SAM7.c</span><span
lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
</td>
<td width="66%" valign=top style='width:66.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p><b><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>AT91SAM7Sxx</span></b><span
lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'> initialization
called by the assembly code and by the Cstartup</span><span lang=EN-US style='mso-ansi-language:
EN-US'><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td width="34%" valign=top style='width:34.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'> <o:p></o:p></span></p>
</td>
<td width="66%" valign=top style='width:66.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p><b><span lang=FR style='font-size:10.0pt;mso-ansi-language:FR'>C Files</span></b><span
lang=FR style='mso-ansi-language:FR'><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td width="34%" valign=top style='width:34.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p><span lang=FR style='font-size:10.0pt;mso-ansi-language:FR'>../src/main.c</span><span
lang=FR style='mso-ansi-language:FR'><o:p></o:p></span></p>
</td>
<td width="66%" valign=top style='width:66.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>Main
entry point </span><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td width="34%" valign=top style='width:34.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p><i><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>ext_irq.c</span></i><span
lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
</td>
<td width="66%" valign=top style='width:66.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p><span lang=EN-US style='font-size:10.0pt;mso-ansi-language:EN-US'>External
interrupt handler for the irq</span><span lang=EN-US style='mso-ansi-language:
EN-US'><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td width="34%" valign=top style='width:34.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p><i><span lang=FR style='font-size:10.0pt;mso-ansi-language:FR'>interrupt_timer.c</span></i><span
lang=FR style='mso-ansi-language:FR'><o:p></o:p></span></p>
</td>
<td width="66%" valign=top style='width:66.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p><span lang=FR style='font-size:10.0pt;mso-ansi-language:FR'>Timer interrupt
management</span><span lang=FR style='mso-ansi-language:FR'><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td width="34%" valign=top style='width:34.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p><span lang=FR style='font-size:10.0pt;mso-ansi-language:FR'>interrupt_Usart.c</span><span
lang=FR style='mso-ansi-language:FR'><o:p></o:p></span></p>
</td>
<td width="66%" valign=top style='width:66.0%;padding:5.25pt 5.25pt 5.25pt 5.25pt'>
<p><span lang=FR style='font-size:10.0pt;mso-ansi-language:FR'>USART Interrupt
Management</span><span lang=FR style='mso-ansi-language:FR'><o:p></o:p></span></p>
</td>
</tr>
</table>
<br>
<p class=MsoNormal><!-- ******* Description ********** !--><a
name=Description><b><span lang=EN-US style='mso-ansi-language:EN-US'>Description:</span></b></a><b><span
lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:36.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>In background one led (LED1) is blinking simply
by writing directly in the PIO interface.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:36.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>The LED2 is blinking by the software AIC interrupt
after ten blink of LED1.<br>
<br>
<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:36.0pt'><a name="Interrupt_Action"><b><span
lang=EN-US style='mso-ansi-language:EN-US'>Interrupt Action</span></b></a><b><span
lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:36.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>- When you push on SW4, the PIO interface is activated
and uses the PIO interrupt routine. This interrupt has the priority level
6. If you keep SW3 in position you maintain the interrupt handler and suppress
the lower interrupt task.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:36.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>- When you push on SW2 (IRQ0), the IRQ0 is activated
and uses the IRQ0 interrupt routine. This interrupt has the priority level
2. If you keep SW3 in position you maintain the interrupt handler and suppress
the lower interrupt task.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:36.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>- The timer interrupt increment the global variables
named count_timer0_interrupt and count_timer1_interrupt. Each timer manage
the corresponding LED (LED3 & LED4). The following table describes the
interrupt level associated to the peripherals. <o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:36.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>- The USART interrupt is generated when the reception
register is full (status bit register RXRDY) or when a reception occurs with
an error, such as Overrun, Framing, Parity or Time out error.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>T => US_TIMEOUT event<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>R => US_RXRDY event<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>E => US_ENDRX event<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>All Usart Interrupt events are listed in the interrupt_Usart.c
file<o:p><br>
<br>
</o:p></span></p>
<p class=MsoNormal style='margin-left:36.0pt'><a name="Interrupt_Implementation"><b><span
lang=EN-US style='mso-ansi-language:EN-US'>Interrupt Implementation</span></b></a><b><span
lang=EN-US style='mso-ansi-language:EN-US'><o:p><br>
<br>
</o:p></span></b></p>
<p class=MsoNormal style='margin-left:36.0pt'><b><span lang=EN-US
style='mso-ansi-language:EN-US'>Interrupt initialization<o:p></o:p></span></b></p>
<p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>- Initialization of the Interrupt stack. This
initialization is performed in the <b> Cstartup.xxx</b> file. The IRQ_ENTRY
macro used, needs only 2x32-bit stack level. The first 32-bit for the link
address and the second for the application status register<o:p>.</o:p></span></p>
<p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>IRQ_STACK_SIZE EQU (2*8*4) ; 2 words per interrupt
priority level<o:p><br>
<br>
</o:p></span></p>
<p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>The FIQ does not need specific stack as this interruption
is not interruptible by other interrupts.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'><br>
- Configure the Peripheral<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:108.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Enable the corresponding clock: see function named
AT91F_PMC_EnablePeriphClock<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:108.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Select the corresponding I/O in peripheral mode:
see function named AT91F_PIO_CfgPeriph<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:108.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Configure all peripheral register<o:p>s</o:p></span></p>
<p class=MsoNormal style='margin-left:108.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Set and enable the peripheral interrupt: see function
named AT91F_US_EnableIt (for USART)<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Set the AIC: see function named AT91F_AIC_ConfigureIt<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Enable this interrupt in the AIC: see function
named AT91F_AIC_EnableIt<o:p><br>
<br>
</o:p></span></p>
<p class=MsoNormal style='margin-left:36.0pt'><b><span lang=EN-US
style='mso-ansi-language:EN-US'>Interrupt Handling Entry</span></b><span
lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Save lr, spsr_irq and r0<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Get the vector address in the IVR Register<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Acknowledge the interrupt in the ACI vectoring<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>Switch in System Mode<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:72.0pt'><span lang=EN-US
style='mso-ansi-language:EN-US'>- Only one link register saves the interrupt return
address<o:p></o:p></span></p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -