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

📄 target.c

📁 S3C2410的完整的初始化过程
💻 C
字号:
/*
;************************************************************************************************************
;*				        				北京精仪达盛科技有限公司
;*                                     	     研    发    部
;*
;*                                 	     http://www.techshine.com
;*
;*--------------------------------------------- 文件信息 ----------------------------------------------------                                      
;*
;* 文件名称 : Main.c	
;* 文件功能 : 该文件为S3C2410硬件平台初始化主程序。
;* 补充说明 : 
;*-------------------------------------------- 最新版本信息 -------------------------------------------------
;* 修改作者 : ARM开发小组
;* 修改日期 : 2005/08/1
;* 版本声明 : V1.0.1
;*-------------------------------------------- 历史版本信息 -------------------------------------------------
;* 文件作者 : ARM开发小组
;* 创建日期 : 2004/04/20
;* 版本声明 : v1.0.0
;*-----------------------------------------------------------------------------------------------------------
;*-----------------------------------------------------------------------------------------------------------
;************************************************************************************************************
;*/

#include <stdlib.h>
#include <string.h>
#include "..\..\Application\inc\config.h"
/*
*************************************************************************************************************
-  
- 程序段说明 : 以下函数为各异常模式服务子程序。设成死循环是为调试用,一旦发生此类异常,程序便跳入异常模式服务
-              子程序,终止程序运行。
-
*************************************************************************************************************
*/

void HaltUndef(void)
{
    Uart_Printf("Undefined instruction exception.\n");
    while(1);
}

void HaltSwi(void)
{
    Uart_Printf("SWI exception.\n");
    while(1);
}

void HaltPabort(void)
{
    Uart_Printf("Pabort exception.\n");
    while(1);
}

void HaltDabort(void)
{
    Uart_Printf("Dabort exception.\n");
    while(1);
}

/*
*************************************************************************************************************
-
-                                   程序段说明 : 以下函数均为初始化函数
-            
*************************************************************************************************************
*/

/*
*************************************************************************************************************
- 函数名称 : Exep_S3cint_Init(void)
- 函数说明 : 异常及中断控制器的初始化
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void Isr_Init(void)
{
    pISR_UNDEF  = (unsigned)HaltUndef;
    pISR_SWI    = (unsigned)HaltSwi;
    pISR_PABORT = (unsigned)HaltPabort;
    pISR_DABORT = (unsigned)HaltDabort;
    
    rINTMOD     = 0x0;                     //All=IRQ mode
    rINTMSK     = BIT_ALLMSK;              //All interrupt is masked.
    rINTSUBMSK  = BIT_SUB_ALLMSK;          //All sub-interrupt is masked. <- April 01, 2002 SOP
}

/*
*************************************************************************************************************
- 函数名称 : void Timer1_init(void)
- 函数说明 : 定时器初始化程序
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/	
void Timer1_init(void)
{
    rGPGCON = rGPGCON & 0xfff0ffff | 0x00050000; //配置GPG口为信号输出
    rGPGDAT = rGPGDAT | 0x300;

    rTCFG0  = 255;      // Prescaler0=255
    rTCFG1  = 0 << 4;      // 
    rTCNTB1 = 48828;    // 在pclk=50MHZ下,1秒钟的记数值rTCNTB1 = 50000000 / 4 / 256 = 48828;
    rTCMPB1 = 0x00;
    rTCON   = (1 << 11) | (1 << 9) | (0 << 8); //禁用定时器1,手动加载
    rTCON   = (1 << 11) | (0 << 9) | (1 << 8); //启动定时器1,自动装载
     
}

/*
*************************************************************************************************************
- 函数名称 : void __irq Timer1_ISR( void )
- 函数说明 : 定时器中断服务子程序
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/	
int flag;
void __irq Timer1_ISR( void )
{ 
 	if (flag == 0)
 	{
        rGPGDAT = rGPGDAT & 0xeff | 0x200;
 		flag = 1;
 	}
 	else
 	{
    	rGPGDAT = rGPGDAT & 0xdff | 0x100;
 		flag = 0;
 	}
   	rSRCPND |= BIT_TIMER1;
   	rINTPND |= BIT_TIMER1;
}
/*
*************************************************************************************************************
- 函数名称 : void Timer1INT_Init(void)
- 函数说明 : 定时器中断初始化程序
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/	
void Timer1INT_Init(void)						             //定时器接口使能
{
     if ((rINTPND & BIT_TIMER1))
    {
    	rSRCPND |= BIT_TIMER1;
    }
    pISR_TIMER1 = (int)Timer1_ISR;
    rINTMSK  &= ~(BIT_TIMER1);  //开中断;    
}

/*
*************************************************************************************************************
- 函数名称 : TargetInit(void)
- 函数说明 : 目标板初始化程序,主函数中只需调用此函数,即可完成目标板的初始化
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void Target_Init(void)
{
	MMU_Init();
	ChangeClockDivider(1,1);          // 1:2:4    
	ChangeMPllValue(0xa1,0x3,0x1);    // FCLK=202.8MHz  
    Isr_Init();
    Port_Init();
    
    Timer1_init();
    Timer1INT_Init();    
    
	Uart_Init(0,115200);
    Uart_Select(0);  
       
}

⌨️ 快捷键说明

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