//*----------------------------------------------------------------------------
//* ATMEL Microcontroller Software Support - ROUSSET -
//*----------------------------------------------------------------------------
//* The software is delivered "AS IS" without warranty or condition of any
//* kind, either express, implied or statutory. This includes without
//* limitation any warranty or condition with respect to merchantability or
//* fitness for any particular purpose, or against the infringements of
//* intellectual property rights of others.
//*----------------------------------------------------------------------------
//* File Name : main.c
//* Object : main application written in C
//* 1.0 24/Jun/04 JPP : Creation
//* 1.1 21/Feb/05 JPP : Update AT91C_RSTC_URSTEN
//* 1.1 06/Sep/05 JPP : Update AIC definion
//*----------------------------------------------------------------------------
// Include Standard LIB files
#include "Board.h"
//* Waiting time between LED1 and LED2
#define WAIT_TIME MCK
#define PIO_INTERRUPT_LEVEL 6
#define IRQ0_INTERRUPT_LEVEL 2
#define SOFT_INTERRUPT_LEVEL 5
#define FIQ_INTERRUPT_LEVEL 0
//* Global variable
int count_timer0_interrupt;
int count_timer1_interrupt;
// Use the Library Handler defined in file periph/pio/pio_irq/irq_pio.s
extern void FIQ_init_handler(void);
extern void at91_IRQ0_handler(void);
// External Function Prototype
extern void timer_init (void );
extern void Usart_init (void);
//*----------------------------------------------------------------------------
//* Function Name : aic_software_interrupt
//* Object : Software interrupt function
//* Input Parameters : none
//* Output Parameters : none
//* Functions called : at91_pio_write
//*----------------------------------------------------------------------------
__ramfunc void aic_software_interrupt(void)
{
//* Read the output state
if ( (AT91F_PIO_GetInput(AT91C_BASE_PIOA) & LED2 ) == LED2 )
{
AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED2 );
}
else
{
AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED2 );
}
}
//*----------------------------------------------------------------------------
//* Function Name : pio_c_irq_handler
//* Object : Irq Handler called by the irq_pio.s
//* Input Parameters : none
//* Output Parameters : none
//* Functions called : at91_pio_read, at91_pio_write
//*----------------------------------------------------------------------------
__ramfunc void pio_c_irq_handler ( void )
{
int dummy;
//* Read the output state
if ( (AT91F_PIO_GetInput(AT91C_BASE_PIOA) & LED2 ) == LED2 )
{
AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED2);
}
else
{
AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED2);
}
//* enable the next PIO IRQ
dummy =AT91C_BASE_PIOA->PIO_ISR;
//* suppress the compilation warning
dummy =dummy;
//* while SW3 is push wait
while ( (AT91F_PIO_GetInput(AT91C_BASE_PIOA) & SW3_MASK ) != SW3_MASK );
}
//*----------------------------------------------------------------------------
//* Function Name : delay
//* Object : Wait
//* Input Parameters : none
//* Output Parameters : none
//* Functions called : none
//*----------------------------------------------------------------------------
void delay ( void )
{
//* Set in Volatile for Optimisation
volatile unsigned int i ;
//* loop delay
for ( i = 0 ;(i < WAIT_TIME/100 );i++ ) ;
}
//*----------------------------------------------------------------------------
//* Function Name : main
//* Object : Main interrupt function
//* level timer 0 => 1
//* SW2 level Irq0 => 2
//* level timer 1 => 4
//* SW4 level PIOA => 6
//* level USART => 7
//* LEVEL FIQ => MAX
//* Input Parameters : none
//* Output Parameters : TRUE
//*----------------------------------------------------------------------------
int main( void )
//* Begin
{
unsigned int loop_count ;
AT91PS_AIC pAic;
//* Load System pAic Base address
pAic = AT91C_BASE_AIC;
//* Enable User Reset and set its minimal assertion to 960 us
AT91C_BASE_RSTC->RSTC_RMR = AT91C_RSTC_URSTEN | (0x4<<8) | (unsigned int)(0xA5<<24);
//* Init
loop_count = 0 ;
// First, enable the clock of the PIOB
AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA ) ;
//* then, we configure the PIO Lines corresponding to LED1 to LED8
//* to be outputs. No need to set these pins to be driven by the PIO because it is GPIO pins only.
AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, LED_MASK ) ;
//* Clear the LED's. On the EB55 we must apply a "1" to turn off LEDs
AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED_MASK ) ;
//* open external PIO interrupt
//* define switch SW3 at PIO input for interrupt IRQ loop
AT91F_PIO_CfgInput(AT91C_BASE_PIOA, SW3_MASK | SW4_MASK);
AT91F_AIC_ConfigureIt ( pAic, AT91C_ID_PIOA, PIO_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, pio_c_irq_handler);
AT91F_PIO_InterruptEnable(AT91C_BASE_PIOA,SW4_MASK);
//* set the interrupt by software
AT91F_AIC_EnableIt (pAic, AT91C_ID_PIOA);
//* open external IRQ interrupt
AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA,SW2_MASK,0);
//* open external IRQ0 interrupt
AT91F_AIC_ConfigureIt ( pAic, AT91C_ID_IRQ0, IRQ0_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_EXT_NEGATIVE_EDGE, at91_IRQ0_handler);
AT91F_AIC_EnableIt (pAic, AT91C_ID_IRQ0);
//* Open the software interrupt on the AIC
AT91F_AIC_ConfigureIt ( pAic, AT91C_ID_SYS, SOFT_INTERRUPT_LEVEL, AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE, aic_software_interrupt);
AT91F_AIC_EnableIt (pAic, AT91C_ID_SYS);
//* open FIQ interrupt
AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA,SW1_MASK,0);
AT91F_AIC_ConfigureIt ( pAic, AT91C_ID_FIQ, FIQ_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_EXT_NEGATIVE_EDGE, FIQ_init_handler);
AT91F_AIC_EnableIt (pAic, AT91C_ID_FIQ);
//* generate FIQ interrupt by software
AT91F_AIC_Trig (pAic,AT91C_ID_FIQ) ;
//* Init timer interrupt
timer_init();
//* generate software interrupt
AT91F_AIC_Trig (pAic,AT91C_ID_SYS) ;
for (;;)
{
AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED1 );
delay () ;
AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED1 );
delay () ;
loop_count ++ ;
//* Set LED by software interrupt
if (loop_count == 10)
{
loop_count=0;
//* Software interrupt
AT91F_AIC_Trig (pAic,AT91C_ID_SYS) ;
}
}
//* End
}
没有合适的资源?快使用搜索试试~ 我知道了~
AT91SAM7A3-Interrupt.rar_AT91SAM7A3
共62个文件
html:38个
c:4个
h:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 37 浏览量
2022-09-21
05:28:10
上传
评论
收藏 320KB RAR 举报
温馨提示
针对at91sam7a3为主芯片开发板开发的中断应用程序
资源推荐
资源详情
资源评论
收起资源包目录
AT91SAM7A3-Interrupt.rar (62个子文件)
AT91SAM7A3-Interrupt
main.html 438B
Src
main.c 7KB
ext_irq.c 2KB
interrupt_timer.c 6KB
include
AT91SAM7A3.h 230KB
HTML
AT91SAM7A3_MC.html 35KB
AT91SAM7A3_CAN.html 71KB
AT91SAM7A3_PDC.html 28KB
AT91SAM7A3_WDTC.html 9KB
AT91SAM7A3_TCB.html 10KB
AT91SAM7A3_USART.html 84KB
AT91SAM7A3_PWMC.html 29KB
AT91SAM7A3_PWMC_CH.html 29KB
AT91SAM7A3_SPI.html 54KB
AT91SAM7A3_MCI.html 52KB
AT91SAM7A3_RTTC.html 10KB
lib_AT91SAM7A3_h.html 410KB
AT91SAM7A3_DBGU.html 43KB
AT91SAM7A3_TC.html 87KB
AT91SAM7A3_h.html 641KB
AT91SAM7A3_CAN_MB.html 53KB
AT91SAM7A3_SSC.html 66KB
AT91SAM7A3_UDP.html 64KB
AT91SAM7A3_search.html 265KB
AT91SAM7A3_PIO.html 34KB
AT91SAM7A3_CKGR.html 9KB
AT91SAM7A3_TWI.html 27KB
AT91SAM7A3_AIC.html 24KB
AT91SAM7A3_RSTC.html 11KB
AT91SAM7A3_SYS.html 35KB
AT91SAM7A3_idx.html 390B
AT91SAM7A3_list.html 13KB
AT91SAM7A3_SHDWC.html 11KB
AT91SAM7A3_PITC.html 9KB
AT91SAM7A3_PMC.html 50KB
AT91SAM7A3_ADC.html 65KB
AT91SAM7A3_inc.h 205KB
lib_AT91SAM7A3.h 188KB
AT91SAM7A3.html 340B
AT91SAM7A3.inc 194KB
HTML
basic.html 26KB
orange_degrade_top.gif 1KB
AT91_title.html 396B
Compil
StartupScreen.ewsample 0B
sam7.html 270B
resource
SAM7.mac 8KB
SAM7_RAM.mac 10KB
at91SAM7A3_32KRAM.xcl 5KB
at91SAM7A3_NoRemap.xcl 5KB
Interrupt.ewd 37KB
settings
Interrupt.cspy.bat 2KB
Interrupt.dbgdt 63B
InteSAM7.wsdt 3KB
Interrupt.dni 198B
InteSAM7.eww 163B
tools.html 17KB
Interrupt.dep 5KB
Interrupt.ewp 66KB
download.html 17KB
SrcIAR
Cstartup_SAM7.c 4KB
Cstartup.s79 10KB
Board.h 3KB
共 62 条
- 1
资源评论
钱亚锋
- 粉丝: 88
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功