📄 target.c
字号:
(0<<16) | // DE2=0,禁止Bank2的SDRAM
(0<<15) | // STACK1=0
(0<<13) | // STACK0=0,即STACK[1:0]=00b,使用SDRAM地址为A24--A10
(0<<14) | // DCACX0=0,额外的列(Column)地址。请看DCAC0
(0<<12) | // DSA1110_0=0,Bank0、1块的SDRAM不使用SA1110地址多路方式(即使用MDCNFG的DAADR0的地址位)
(1<<11) | // 保留位,要求置1
(0<<10) | // DADDR0=0,使用标准地址寻址
(3<<8) | // DTC0=11b,SDRAM访问时间值设置(选用11组)
(1<<7) | // DNB0=1,SDRAM的内部分4个Bank
(2<<5) | // DRAC0=2,13行地址(row)
(1<<3) | // DCAC0=1,9位列地址(column)
(0<<2) | // DWID0=0,32位总线宽度SDRAM
(0<<1) | // DE1=0,禁止Bank1的SDRAM
(1<<0); // DE0=1,使能Bank0的SDRAM
MDCNFG = bak;
bak = MDCNFG;
// MDMRS设置为0x00000000
MDMRS = 0x00000000;
#endif
}
/*********************************************************************************************************
** Function name: Init_SysCLK
** Descriptions: 系统时钟设置
** Input: 无
** Output: 无
** Created by: 黄绍斌
** Created Date: 2006-8-10
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void Init_SysCLK(void)
{
uint32 bak;
#if EN_CLK520MHz != 0
// 系统时钟设置 (包括CCCR[L]、CCCR[2N]、CLKCFG[T]、CLKCFG[HT]、CLKCFG[B]、CCCR[A])
// 设置L=16,即正常运行模式Fclk = 13*16 = 208MHz
// 设置2N=5,即比率为2.5,所以快速运行模式Fclk1 = Fclk * 2N对应的比率 = 208 * 2.5 = 520MHz
// 设置B=1,系统总线时钟Fclk_bus = Fclk = 208MHz。
// 设置A=0,即MEM时钟Fclk_mem=Fclk/M对应的值,即Fclk_mem=Fclk/2=104MHz(因为L在11--20之间时,M=2)
// 设置CLKCFG[HT]=0禁止半快速运行模式, CLKCFG[T]=1快速运行模式(520MHz)。
// 说明:CLKCFG复位值为0x00,其各个位的意义如下:
// CLKCFG[T]为0时表示正常运行模式;为1时表示快速运行模式。
// CLKCFG[HT]为0时,系统时钟=正常运行模式/快速运行模式的时钟,由CLKCFG[T]而定;为1时,系统时钟固定=快速运行模式的时钟/2
// CLKCFG[B]为0时,Fclk_bus = Fclk/2;为1时,Fclk_bus = Fclk
// CLKCFG[F]写入1时,启动时钟改变序列,无需软件清零。 (需要调用汇编)
//
// 复位默认值:L=7, 2N=2(对应值也为2), A=0, CPDIS = 0, PPDIS = 0,
// CLKCFG[T] = 0, CLKCFG[HT] = 0, CLKCFG[B] = 0
CCCR = (0<<31) | // CPDIS=0,使能内核PLL输出
(0<<30) | // PPDIS=0,使能外设PLL输出
(0<<26) | // PLL_EARLY_EN=0,禁止内核及外设PLL Early功能。 若使能此位,同进禁止CPDIS、PPDIS,则系统的所有单元工作在13MHz时钟频率
(0<<25) | // A=0
(5<<7) | // 2N=5
(16<<0); // L=16
// 设置CLKCFG的值,更新系统时钟
bak = 0x00; // CLKCFG[HT]=0
bak = bak | 0x08; // CLKCFG[B]=1
bak = bak | 0x02; // CLKCFG[F]=1
bak = bak | 0x01; // CLKCFG[T]=1
Write_CLKCFG(bak);
#endif
OSCC = OSCC | 0x02; // OSCC[ONN]=1,使用外部32.768KHz晶振
// 软件延时,等待时钟稳定(200uS以上)
for(bak=0; bak<20000; bak++);
}
/*********************************************************************************************************
** Function name: TargetResetInit
** Descriptions: 调用main函数前目标板初始化代码,根据需要改变,不能删除。
** 针对目标板的系统初始化,包括WDT、中断、PLL等等。
** Input: 无
** Output: 无
** Created by: 黄绍斌
** Created Date: 2006-8-10
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void TargetResetInit(void)
{ // 关闭所有中断
ICMR = 0;
ICMR2 = 0;
ICLR = 0;
ICLR2 = 0;
// 系统时钟设置
Init_SysCLK();
// 初始化外部总线及SDRAM控制器
Init_Mem();
// 允许GPIO接收引脚
PSSR = PSSR | 0x10;
}
/*********************************************************************************************************
** 以下为一些与系统相关的库函数的实现
** 具体作用请ads的参考编译器与库函数手册
** 用户可以根据自己的要求修改
********************************************************************************************************/
/*********************************************************************************************************
** The implementations for some library functions
** For more details, please refer to the ADS compiler handbook and The library
** function manual
** User could change it as needed
********************************************************************************************************/
#include "rt_sys.h"
#include "stdio.h"
#pragma import(__use_no_semihosting_swi)
int __rt_div0(int a)
{
a = a;
return 0;
}
int fputc(int ch,FILE *f)
{
ch = ch;
f = f;
return 0;
}
int fgetc(FILE *f)
{
f = f;
return 0;
}
int _sys_close(FILEHANDLE fh)
{
fh = fh;
return 0;
}
int _sys_write(FILEHANDLE fh, const unsigned char * buf,
unsigned len, int mode)
{
fh = fh;
buf = buf;
len =len;
mode = mode;
return 0;
}
int _sys_read(FILEHANDLE fh, unsigned char * buf,
unsigned len, int mode)
{
fh = fh;
buf = buf;
len =len;
mode = mode;
return 0;
}
void _ttywrch(int ch)
{
ch = ch;
}
int _sys_istty(FILEHANDLE fh)
{
fh = fh;
return 0;
}
int _sys_seek(FILEHANDLE fh, long pos)
{
fh = fh;
return 0;
}
int _sys_ensure(FILEHANDLE fh)
{
fh = fh;
return 0;
}
long _sys_flen(FILEHANDLE fh)
{
fh = fh;
return 0;
}
int _sys_tmpnam(char * name, int sig, unsigned maxlen)
{
name = name;
sig = sig;
maxlen = maxlen;
return 0;
}
void _sys_exit(int returncode)
{
returncode = returncode;
}
char *_sys_command_string(char * cmd, int len)
{
cmd = cmd;
len = len;
return 0;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -