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

📄 target.c

📁 周立功PXA270教学实验箱的ARM汇编指令实验2
💻 C
📖 第 1 页 / 共 2 页
字号:
             (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 + -