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

📄 main.cpp

📁 基于ARM 44b0的启动应到程序
💻 CPP
字号:

#include "includes.h"

void vSysInit(void);
void vPortInit(void);

/***************************************************
功能:CPU端口初始化:
***************************************************/
void vPortInit(void)
{
	//CAUTION:Follow the configuration order for setting the ports. 
	// 1) setting value 
	// 2) setting control register 
	// 3) configure pull-up resistor.  
     
	//16bit data bus configuration  
	//PORT A GROUP //v1.0.1
	//  GPA9   GPA8   GPA7   GPA6   GPA5   GPA4   GPA3   GPA2   GPA1  GPA0
	//ADDR24 ADDR23 ADDR22 ADDR21 ADDR20 ADDR19 ADDR18 ADDR17 ADDR16 ADDR0
	//     1,     1,     1,     1,     1,     1,     1,	    1,     1,    1
	rPCONA = 0x3ff;

	//PORT B GROUP //v1.0.1
	//GPB10   GPB9  GPB8   GPB7  GPB6   GPB5   GPB4  GPB3  GPB2 GPB1 GPB0
	//nGCS5  nGCS4 nGCS3  nGCS2 nGCS1   DQM3   DQM2 nSRAS nSCAS SCLK SCKE
	//    1,     1,    1,     1,    1,     1,     1,    1,    1,   1,   1
	rPCONB = 0x7ff;

	//PORT C GROUP
#if (BUSWIDTH==32)
	//D31 D30 D29 D28 D27 D26 D25 D24 D23 D22 D21 D20 D19 D18 D17 D16
	// 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10	
	rPCONC = 0xaaaaaaaa;	
	rPUPC  = 0xffff;	
#else //BUSWIDTH=16
	//PORT C GROUP
	//nCTS0 nRTS0 RxD1 TxD1  nCTS1  nRTS1 Output Output Output Output Output Output Output Output Output Output
	//   11,   11,  11,  11,    11,    11,    01,    01,    01,    01,    01,    01,    01,    01,    01,    01
	rPDATC = 0xffff;
	rPCONC = 0xfff55555;	
	rPUPC  = 0x0000;
#endif

	//PORT D GROUP
	//  GPD7   GPD6   GPD5   GPD4   GPD3   GPD2   GPD1   GPD0
	// Input  Input  Input  Input  Input  Input  Input  Input
	//    00,    00,    00,    00,    00,    00,    00,    00
	rPDATD = 0x00;
	rPCOND = 0x0000;
	rPUPD  = 0x00;

	//PORT E GROUP
	//  GPE8   GPE7   GPE6   GPE5   GPE4  GPE3  GPE2 GPE1   GPE0
	//Endian Output Output Output Output Output RxD0 TxD0 Output
	//	  00,    01,    01,    01,    01,    01,  10,  10,    01
	rPDATE = 0x00;
	rPCONE = 0x17C;
	rPUPE  = 0x00;

	//PORT F GROUP
	//  GPF8   GPF7   GPF6   GPF5   GPF4   GPF3   GPF2   GPF1   GPF0
	//Output Output Output Output Output Output Output Output Output
	//   001,   001,   001,   001,    01,    01,    01,    01,    01
	rPDATF = 0x0000;
	rPCONF = 0x0000;
	rPUPF  = 0x0000;

	//PORT G GROUP
	//  GPG7  GPG6  GPG5  GPG4  GPG3  GPG2  GPG1  GPG0
	// Input Input Input Input Input Input Input Input
	//    00,   00,   00,   00,   00,   00,   00,   00
	rPCONG = 0x0000;
	rPUPG  = 0x00;	 

	rSPUCR = 0x3;  //data bus pull-up disable

	return;
}

/***************************************************
功能:系统初始化
***************************************************/
void vSysInit(void)
{
	//打开CACHE
	rSYSCFG = CACHECFG;
	//设置不需要CACHE的地址范围
	//对nGCS0,nGCS1,nGCS2,nGCS3,nGCS4,nGCS5不启用CACHE
	rNCACHBE0 = 0xb0000000;
	rNCACHBE1 = 0xb0000000;
	rBANKCON0 = 0x7ffc;
	
	vInitBeep();
	iUartInit(0,115200);
}



/***************************************************
功能:  主程序
***************************************************/
void Main(void)
{	
	int i;
	char	*to;
	void 	(*fp)(void);
	
	struct RTC rtc;
	
	vPortInit();
	vSysInit();
	
	vBeep(1000);
	GetRTC(&rtc);
	vUartPrintf("日期:%02x%02X年%02X月%02X日 %02X:%02X:%02X\n",0x20,rtc.year,rtc.month,rtc.day,rtc.hour,rtc.min,rtc.sec);
	vUartPrintf("********************************************\n");
	vUartPrintf("***           SJD530 TEST                ***\n");
	vUartPrintf("********************************************\n");
	/*for(i=0;i<5;i++)
	{
		vUartPrintf("Light:%d \n",i);
		vLight(1000);
		SLEEP(1000);
	}
	i = iGetFlashID();
	vUartPrintf("Flash ID %d!\n",i);
	TestFlash();*/
	
	
	

	fp = (void (*)(void))0x8000;

	to   = (char*)0x8000;	

	for(i = 0; i < 0x100000; i++){
		*to = ReadFlash(0x100000+i);
		to++;
	}
	
		
	(*fp)();  //把控制权交给kernel。
}

⌨️ 快捷键说明

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