📄 target.c
字号:
//============================================================================//
//文件:target.c
//描述: NXP LPC21XX/22XX系列ARM7 MCU的系统初始化文件
//功能:初始化系统时钟、存储器加速、
//
//参考:Copyright(C) 2006, Philips Semiconductor
//版本:2008/01/01 Ver1.00 Mzdesign Edit By 小丑(smart_clown)
//维护:
//============================================================================//
#include "LPC22Xx.h"
#include "type.h"
#include "irq.h"
#include "target.h"
void TargetResetInit(void);
//============================================================================//
//函数:void IRQ_Exception(void)
//描述:IRQ中断函数,如必要加入自己所需的代码
//功能:
//
//参数:无
//返回:无
//============================================================================//
void IRQ_Exception(void) __irq
{
while(1); /* change it to your code */
}
//============================================================================//
//函数:void IRQ_Exception(void)
//描述:FIQ中断函数,如必要加入自己所需的代码
//功能:
//
//参数:无
//返回:无
//============================================================================//
//void FIQ_Exception(void) __fiq
//{
// while(1); /* change it to your code */
//}
//============================================================================//
//函数:void TargetInit(void)
//描述:目标MCU初始化函数
//功能:建议为仅加入系统配置的初始化函数,该函数最好在工程的主程序当中首先调用
// 如有必要,可以自行加入其它的实始化代码
//
//参数:无
//返回:无
//============================================================================//
void TargetInit(void)
{
TargetResetInit();
/* Add your codes here */
}
//============================================================================//
//函数:void TargetResetInit(void)
//描述:目标MCU系统配置初始化函数
//功能:初始化中断映射、PLL以及Flash Menory 加速选项,外部总线的初始化不在此
//备注:相关的定义可见Taget.h头文件
//参数:无
//返回:无
//============================================================================//
void TargetResetInit(void)
{
#ifdef __DEBUG_RAM
MEMMAP = 0x2; // set remap register
#endif
#ifdef __DEBUG_FLASH
MEMMAP = 0x1; // set remap register
#endif
#ifdef __IN_CHIP
MEMMAP = 0x1; // set remap register
#endif
// Set system timers for each component
PLLCON = 1;
#if (Fpclk / (Fcclk / 4)) == 1
VPBDIV = 0;
#endif
#if (Fpclk / (Fcclk / 4)) == 2
VPBDIV = 2;
#endif
#if (Fpclk / (Fcclk / 4)) == 4
VPBDIV = 1;
#endif
#if (Fcco / Fcclk) == 2
PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
#endif
#if (Fcco / Fcclk) == 4
PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
#endif
#if (Fcco / Fcclk) == 8
PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
#endif
#if (Fcco / Fcclk) == 16
PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
#endif
PLLFEED = 0xaa;
PLLFEED = 0x55;
while((PLLSTAT & (1 << 10)) == 0);
PLLCON = 3;
PLLFEED = 0xaa;
PLLFEED = 0x55;
// Set memory accelerater module
MAMCR = 0;
#if Fcclk < 20000000
MAMTIM = 1;
#else
#if Fcclk < 40000000
MAMTIM = 2;
#else
MAMTIM = 3;
#endif
#endif
MAMCR = 2;
// Add your codes here if necessary
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -