📄 init.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 + -