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

📄 init.c

📁 arm(str710)usb功能的实现
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                                      
**                                          STR710 development team
**                                          
**
**                                 
**
**-----------文件信息------------------------------------------------------------------------------------
** 文 件 名: init.c
** 创建日期: 2006年5月25日
** 描    述: 目标板初始化函数定义
**
**--------------历史版本--------------------------------------------------------------------------------
** 修 改 人: lhl 	
** 版    本: V1.0
** 日   期: 2006年5月25日
** 描   述: 原始版本
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

#include "config.h"


/**************************************系统初始化函数原型************************************************/

void vectors_remap(void);
void arm_clock_init(void);
void emi_cs_init(void);
void apb_device_reset(void);

/*********************************************************************************************************
** 函数名称: target_init
** 功能描述: 目标板系统级低级初始化
** 
** 参    数: 无
**  
** 返 回 值: 无
**         
** 作   者: lhl
** 日   期: 2006年5月25日
**-------------------------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void target_init(void)
{
	vectors_remap();		/* 异常向量映射      */
	WDG_Disable();			/* 禁止WatchDog      */
	arm_clock_init();		/* 初始化ARM时钟系统 */
	emi_cs_init();			/* 初始化EMI,CS      */
	apb_device_reset();		/* 初始化APB Device  */
	
	
		
}
/*********************************************************************************************************
** 函数名称: vectors_remap
** 功能描述: 异常向量表重新映射
** 
** 参    数: 无
**  
** 返 回 值: 无
**         
** 作   者: lhl
** 日   期: 2006年5月25日
**-------------------------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void vectors_remap(void)
{
	UWORD8	i = 0;
	volatile UWORD32	*src;
	volatile UWORD32    *dest;
			 
	//extern UWORD32 InitVectors;	
	//src  = (UWORD32*)InitVectors;
	//dest = (UWORD32*)0x20000000;
	
	//for( i = 0; i < 16; i++)	//复制向量
	//{
	//	*dest++ = *src++;
	//} 
	
	PCU_BOOTCR &= 0xFC;			//执行重映射命令
	PCU_BOOTCR |= 0x02;			//00_FLASH 10_RAM 11_EXTMEM
}

/*********************************************************************************************************
** 函数名称: arm_clock_init
** 功能描述: 配置ARM时钟系统: MAINOSC/2 =8M MUL =12, DIV =2, SO MCLK = RCLK = 48M
** 
** 参    数: 无
**  
** 返 回 值: 无
**         
** 作   者: lhl
** 日   期: 2006年5月25日
**-------------------------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void arm_clock_init(void)
{
			 
	RCCU_CKDIV2Config(ENABLE);						// Enable CK Divide 2 (MAINOSC/2)
	
	RCCU_MCLKConfig(RCCU_DEFAULT);					// 配置 MCLK = RCLK 
	//RCCU_MCLKConfig(RCCU_RCLK_2);	
	
	RCCU_FCLKConfig(RCCU_DEFAULT);					// 配置 FCLK = RCLK
	//RCCU_FCLKConfig(RCCU_RCLK_2);
	
	RCCU_PCLKConfig(RCCU_DEFAULT);					// 配置 PCLK = RCLK
	//RCCU_PCLKConfig(RCCU_RCLK_2);
	
	RCCU_PLL1Config(RCCU_MUL_12, RCCU_DIV_2) ;		// 配置 PLL1 ( * 12 , / 2 )
	//RCCU_PLL1Config(RCCU_MUL_12, RCCU_DIV_4) ;		// 配置 PLL1 ( * 12 , / 4 )
	
	while(RCCU_FlagBitObtain(RCCU_PLL1_LOCK) == RESET);// 等待 PLL1 锁定
	
	RCCU_RCLKConfig(RCCU_PLL1_OUTPUT);				// 选择PLL1_OUTPUT作为RCLK时钟
		
}
/*********************************************************************************************************
** 函数名称: emi_cs_init
** 功能描述: 初始化片选
** 
** 参    数: 无
**  
** 返 回 值: 无
**         
** 作   者: lhl
** 日   期: 2006年5月25日
**-------------------------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void emi_cs_init(void)
{	
	//根据实际的目标板配置
	EMI_Config(CS0, EMI_ENABLE, EMI_SIZE_16,7);
	EMI_Config(CS1, EMI_ENABLE, EMI_SIZE_16,10);
	EMI_Config(CS2, EMI_ENABLE, EMI_SIZE_16,7);
	EMI_Config(CS3, EMI_ENABLE, EMI_SIZE_8,15);
	
}

/*********************************************************************************************************
** 函数名称: APBDevice_Reset
** 功能描述: APB片内外设复位时配置值
** 
** 参    数: 无
**  
** 返 回 值: 无
**         
** 作   者: lhl
** 日   期: 2006年5月25日
**-------------------------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void apb_device_reset(void)
{

#if EN_ARM_EIC > 0
	EIC_Reset();			
#endif

#if EN_ARM_GPIO > 0
	GPIO_Reset();		
#endif
	
#if EN_ARM_XTI > 0
	XTI_Reset();			
#endif
	
#if EN_ARM_TIM > 0
	TIM_Reset(TIMER0);
	//TIM_Reset(TIMER1);
	//TIM_Init(TIMER2);
	//TIM_Reset(TIMER3);
#endif	

#if	EN_ARM_UART > 0	
	UART_Reset(UART0);
	//UART_Reset(UART1);
	//UART_Reset(UART2);
	//UART_Reset(UART3);
#endif

#if EN_ARM_I2C > 0	
	//I2C_Reset(I2C0);
	//I2C_Reset(I2C1);
#endif
	
#if EN_ARM_BSPI	> 0
	//SPI_Reset(SPI0);
	BSPI_Reset(BSPI1);
#endif

#if EN_ARM_RTC > 0	
	//RTC_Reset();
#endif

#if EN_ARM_ADC12 > 0
	ADC12_Reset();
#endif

}

/****************************************end of file*******************************************/



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -