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

📄 init.c

📁 基于AT91SAM9260的bootloader
💻 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 + -