📄 init.c
字号:
//*----------------------------------------------------------------------------//* 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 : init.c//* Object : Low level initialisations written in C//* Creation : HIi 10/10/2003//*//*----------------------------------------------------------------------------#include "main.h"//*----------------------------------------------------------------------------//* \fn AT91F_DBGU_Printk//* \brief This function is used to send a string through the DBGU channel (Very low level debugging)//*----------------------------------------------------------------------------void AT91F_DBGU_Printk( char *buffer) // \arg pointer to a string ending by \0{ while(*buffer != '\0') { while (!AT91F_US_TxReady((AT91PS_USART)AT91C_BASE_DBGU)); AT91F_US_PutChar((AT91PS_USART)AT91C_BASE_DBGU, *buffer++); }}//*----------------------------------------------------------------------------//* \fn AT91F_DataAbort//* \brief This function reports an Abort//*----------------------------------------------------------------------------void AT91F_SpuriousHandler() { AT91F_DBGU_Printk("-F- Spurious Interrupt detected\n\r"); while (1);}//*----------------------------------------------------------------------------//* \fn AT91F_DataAbort//* \brief This function reports an Abort//*----------------------------------------------------------------------------void AT91F_DataAbort() { AT91F_DBGU_Printk("-F- Data Abort detected\n\r"); while (1);}//*----------------------------------------------------------------------------//* \fn AT91F_FetchAbort//* \brief This function reports an Abort//*----------------------------------------------------------------------------void AT91F_FetchAbort(){ AT91F_DBGU_Printk("-F- Prefetch Abort detected\n\r"); while (1);}//*----------------------------------------------------------------------------//* \fn AT91F_Undef//* \brief This function reports an Abort//*----------------------------------------------------------------------------void AT91F_Undef() { AT91F_DBGU_Printk("-F- Undef detected\n\r"); while (1);}//*----------------------------------------------------------------------------//* \fn AT91F_UndefHandler//* \brief This function reports that no handler have been set for current IT//*----------------------------------------------------------------------------void AT91F_UndefHandler() { AT91F_DBGU_Printk("-F- Undef detected\n\r"); while (1);}//*----------------------------------------------------------------------------//* \fn AT91F_LowLevelInit//* \brief This function performs very low level HW initialization//*----------------------------------------------------------------------------void AT91F_LowLevelInit(void){ // Disable all interrupts AT91F_AIC_DisableIt(AT91C_BASE_AIC, 0xFFFFFFFF); // Init Interrupt Controller AT91F_AIC_Open( AT91C_BASE_AIC, // pointer to the AIC registers AT91C_AIC_BRANCH_OPCODE, // IRQ exception vector AT91F_UndefHandler, // FIQ exception vector AT91F_UndefHandler, // AIC default handler AT91F_SpuriousHandler, // AIC spurious handler 0); // Protect mode // Perform 8 End Of Interrupt Command to make sure AIC will not Lock out nIRQ AT91F_AIC_AcknowledgeIt(AT91C_BASE_AIC); AT91F_AIC_AcknowledgeIt(AT91C_BASE_AIC); AT91F_AIC_AcknowledgeIt(AT91C_BASE_AIC); AT91F_AIC_AcknowledgeIt(AT91C_BASE_AIC); AT91F_AIC_AcknowledgeIt(AT91C_BASE_AIC); AT91F_AIC_AcknowledgeIt(AT91C_BASE_AIC); AT91F_AIC_AcknowledgeIt(AT91C_BASE_AIC); AT91F_AIC_AcknowledgeIt(AT91C_BASE_AIC); AT91F_AIC_SetExceptionVector((unsigned int *)0x0C, AT91F_FetchAbort); AT91F_AIC_SetExceptionVector((unsigned int *)0x10, AT91F_DataAbort); AT91F_AIC_SetExceptionVector((unsigned int *)0x4, AT91F_Undef); // Open PIO for DBGU AT91F_DBGU_CfgPIO(); // Configure DBGU AT91F_US_Configure( (AT91PS_USART)AT91C_BASE_DBGU, // DBGU base address AT91C_MASTER_CLOCK, // 100 MHz AT91C_US_ASYNC_MODE, // mode Register to be programmed 115200, // baudrate to be programmed 0 // timeguard to be programmed ); // Enable Transmitter AT91F_US_EnableTx((AT91PS_USART)AT91C_BASE_DBGU); // Enable Receiver AT91F_US_EnableRx((AT91PS_USART)AT91C_BASE_DBGU);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -