📄 init.c
字号:
#include "at91sam7a3.h"
extern unsigned long Abus_flag;
extern unsigned long Bbus_flag;
extern unsigned long UART1_RE_flag;
extern unsigned long UART2_RE_flag;
extern unsigned long TX_BUS_flag;
unsigned long RE_Data[522];
unsigned int RE_Count ;
void power_on_initialization(void);
void Initial_USART(void);
void SYS_Init(void);
extern void UART0(void) __irq ;
extern void UART1(void) __irq ;
extern void UART2(void) __irq ;
void power_on_initialization(void)
{
SYS_Init();
}
void SYS_Init(void)
{
int i;
AT91PS_PIO pPIOA , pPIOB;
AT91PS_PMC pPMC;
AT91PS_RSTC pRSTC;
AT91PS_PITC pPITC;
AT91PS_RTTC pRTTC;
AT91PS_SHDWC pSHDWC;
AT91PS_WDTC pWDTC;
AT91PS_AIC pAIC;
AT91PS_MC pMC;
AT91S_USART *pIntial_US0,*pIntial_US1,*pIntial_US2;
pAIC=AT91C_BASE_AIC;
pAIC->AIC_SMR[6] = 0x00000005; //65; //中断源模式寄存器
pAIC->AIC_SMR[7] = 0x00000004;
pAIC->AIC_SMR[8] = 0x00000004;
pAIC-> AIC_SVR[6] = (unsigned long) UART0 ; // Source Vector Register
pAIC-> AIC_SVR[7] = (unsigned long) UART1 ; // Source Vector Register
pAIC-> AIC_SVR[8] = (unsigned long) UART2 ; // Source Vector Register
pAIC->AIC_IECR = 0x000000c0; // Interrupt Enable Command Register
pAIC->AIC_IDCR = 0xfffffe3f; // Interrupt Disable Command Register
pAIC->AIC_ICCR = 0xffffffff; // Interrupt Clear Command Register
pAIC->AIC_ISCR = 0x00000000; // Interrupt Set Command Register
pAIC->AIC_EOICR = 0xffffffff; // End of Interrupt Command Register
pAIC->AIC_DCR = 0x00000000; // Debug Control Register (Protect)
pAIC->AIC_FFER = 0x00000000; // Fast Forcing Enable Register
pAIC->AIC_FFDR = 0xffffffff; // Fast Forcing Disable Register
pPMC=AT91C_BASE_PMC;
pPMC->PMC_SCER = 0x00000001; // System Clock Enable Register
pPMC->PMC_SCDR = 0x00000f80; // System Clock Disable Register
pPMC->PMC_MOR = 0x00000601; // Main Oscillator Register
pPMC->PMC_PLLR = 0x10090f0a; // PLL Register
pPMC->PMC_MCKR = 0x00000001; // Master Clock Register
pPMC->PMC_IER = 0x00000000; // Interrupt Enable Register
pPMC->PMC_IDR = 0x0000070d; // Interrupt Disable Register
//USART **********************
pIntial_US0 = AT91C_BASE_US0; //0xFFFC0000;
pIntial_US1 = AT91C_BASE_US1; //0xFFFC4000;
pIntial_US2 = AT91C_BASE_US2; //0xFFFC8000;
pIntial_US0->US_CR = 0x0000000C;
pIntial_US1->US_CR = 0x0000000C;
pIntial_US2->US_CR = 0x0000000C;
pIntial_US0->US_CR = 0x00000100;
pIntial_US1->US_CR = 0x00000100;
pIntial_US2->US_CR = 0x00000100;
pIntial_US0->US_MR = 0x001008C0;
pIntial_US1->US_MR = 0x00100CC1; //pIntial_US1->US_MR = 0x00120CC1;
pIntial_US2->US_MR = 0x00100CC1;
pIntial_US0->US_BRGR = 0x00000006; //20070523
pIntial_US1->US_BRGR = 0x0000000C;
pIntial_US2->US_BRGR = 0x0000000C;
pIntial_US0->US_CR = 0x00000050;
pIntial_US1->US_CR = 0x00080050;
pIntial_US2->US_CR = 0x00080050;
pPMC->PMC_PCER = 0xf00001cc; // Peripheral Clock Enable Register
pPMC->PMC_PCDR = 0x0ffffe30; // Peripheral Clock Disable Register
pIntial_US0->US_IER = 0x00000001; //0x0000181B;
pIntial_US1->US_IER = 0x00000001; //0x0000181B;
pIntial_US2->US_IER = 0x00000001; //0x0000181B;
pIntial_US0->US_IDR = 0x000F3FFC;
pIntial_US1->US_IDR = 0x000F3FFE;
pIntial_US2->US_IDR = 0x000F3FFE;
pIntial_US1->US_RTOR = 0x00000000;
pIntial_US2->US_RTOR = 0x00000000;
pIntial_US1->US_TTGR = 0x00000002;
pIntial_US2->US_TTGR = 0x00000002;
pIntial_US1->US_FIDI = 0x00000000;
pIntial_US2->US_FIDI = 0x00000000;
pIntial_US0->US_PTCR = 0x00000101;
pIntial_US1->US_PTCR = 0x00000101;
pIntial_US2->US_PTCR = 0x00000101;
for (i=0;i<300;i++);
//******************************
pPIOA=AT91C_BASE_PIOA;
pPIOA->PIO_PER = 0xfffff873; // PIO Enable Register
pPIOA->PIO_PDR = 0x0000078c; // PIO Disable Register
pPIOA->PIO_ODR = 0xfffffff7; // Output Disable Registerr
pPIOA->PIO_IFDR = 0xffffffff; // Input Filter Disable Register
pPIOA->PIO_IDR = 0xffffffff; // Interrupt Disable Register
pPIOA->PIO_MDDR = 0xffffffff; // Multi-driver Disable Register
pPIOA->PIO_PPUER = 0xfffffaf3; //873; // Pull-up Enable Register
pPIOA->PIO_ASR = 0x0000078c; // Select A Register
pPIOA->PIO_BSR = 0x00000000; // Select B Register
pPIOA->PIO_OWDR = 0xffffffff; // Output Write Disable Register
pPIOB=AT91C_BASE_PIOB;
pPIOB->PIO_PER = 0xf6ffffff; // PIO Enable Register
pPIOB->PIO_PDR = 0xf9ffffff; // PIO Enable Register
pPIOB->PIO_ODR = 0xffffffff; // Output Disable Registerr
pPIOB->PIO_IFDR = 0xffffffff; // Input Filter Disable Register
pPIOB->PIO_IDR = 0xfFffffff; // Interrupt Disable Register
pPIOB->PIO_MDDR = 0xffffffff; // Multi-driver Disable Register
pPIOB->PIO_PPUER = 0xffffffff; // Pull-up Enable Register
pPIOB->PIO_OWDR = 0xffffffff; // Output Write Disable Register
pPIOB->PIO_BSR = 0x09000000; // Select B Register
pRSTC=AT91C_BASE_RSTC;
pRSTC->RSTC_RCR = 0xa5000000; // Reset Control Register
pRSTC->RSTC_RMR = 0xa5000710; // Reset Mode Register
pPITC=AT91C_BASE_PITC;
pPITC->PITC_PIMR = 0x000fffff; // Period Interval Mode Register
pRTTC=AT91C_BASE_RTTC;
pRTTC->RTTC_RTMR = 0x00000000; // Real-time Mode Register
pSHDWC=AT91C_BASE_SHDWC;
pSHDWC->SHDWC_SHCR = 0xa5000000; // Shut Down Control Register
pSHDWC->SHDWC_SHMR = 0x00000303; // Shut Down Mode Register
pWDTC=AT91C_BASE_WDTC;
pWDTC->WDTC_WDCR = 0xa5000000; // Watchdog Control Register
pWDTC->WDTC_WDMR = 0x3fff8fff; // Watchdog Mode Register
pMC=AT91C_BASE_MC;
pMC->MC_RCR = 0x00000000; // MC Remap Control Register
pMC->MC_FMR = 0x00320100; // MC Flash Mode Register
pMC->MC_FCR = 0x5a000000; // MC Flash Command Register
//flag define and initial
Abus_flag = 0x55555555; //BUS A on
Bbus_flag = 0xaaaaaaaa; //BUS B off
UART1_RE_flag = 0xaaaaaaaa;
UART2_RE_flag = 0xaaaaaaaa;
TX_BUS_flag = 0x55555555;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -