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

📄 main.c

📁 跑马灯测试程序
💻 C
字号:
/****************************************************************************/
/*
    文件名  : main.c
    说明    : 跑马灯测试程序的主文件
    作者    : 天乐
              biggeorge@126.com
    修改历史:
              02/02/2005                创建
*/
/*****************************************************************************/

#include "..\inc\uTypes.h"
#include "..\inc\44b0x.h"
#include "..\inc\console.h"
#include "..\inc\sysUtils.h"

//申明函数
void IoConfig (void);
void ledTest (void);

//我们用这个片编存储我们的IRQ ISR入口地址
U32 pIrqStart = 0;
U32 pIrqFinish = 0; 
U32 pIrqHandler = 0;

U32 g_pTopOfROM = 0;
U32 g_pBaseOfROM = 0;
U32 g_pBaseOfBSS = 0;
U32 g_pBaseOfZero = 0;
U32 g_pEndOfBSS = 0;

extern U32 GetBaseOfROM (void);
extern U32 GetEndOfROM (void);
extern U32 GetBaseOfBSS (void);
extern U32 GetBaseOfZero (void);
extern U32 GetEndOfBSS (void);

int main(void)
{
  //int i;
  sysUtilsSetPllValue (24, 6, 1);
  IoConfig ();

  console_init (115200);

  printf ("\n\nITSN - 44B0 board Test programe version 1.0.\n\n");

  //熄灭所有的LED灯
  sysUtilsLightLed (LED_ALL, FALSE);
  
  g_pTopOfROM = GetEndOfROM ();
  g_pBaseOfROM = GetBaseOfROM ();
  g_pBaseOfBSS = GetBaseOfBSS ();
  g_pBaseOfZero = GetBaseOfZero ();
  g_pEndOfBSS = GetEndOfBSS ();
  
  printf ("g_pTopOfROM = 0x%08x.\n", g_pTopOfROM);
  printf ("g_pBaseOfROM = 0x%08x.\n", g_pBaseOfROM);
  printf ("g_pBaseOfBSS = 0x%08x.\n", g_pBaseOfBSS);
  printf ("g_pBaseOfZero = 0x%08x.\n", g_pBaseOfZero);
  printf ("g_pEndOfBSS = 0x%08x.\n", g_pEndOfBSS);  
  
  printf ("&g_pTopOfROM = 0x%08x.\n", &g_pTopOfROM);
  printf ("&g_pBaseOfROM = 0x%08x.\n", &g_pBaseOfROM);
  printf ("&g_pBaseOfBSS = 0x%08x.\n", &g_pBaseOfBSS);


  sysUtilsLightLed (LED_ALL, TRUE);
  
  //主循环
  for (;;)
  {
    //在主循环中一直循环执行跑马灯程序
    ledTest ();
  }
  
  return 0;
}

/*
函数名称: IoConfig
功    能: 初始化IO口
参    数: 无
返回值  : 无
*/
void IoConfig (void)
{
	// PORT A GROUP
	/*  BIT 9	8	7	6	5	4	3	2	1	0	*/
	/*  A24	  A23	A22	A21	A20	A19	A18	A17	A16	A0	*/	      
	/*  0		1	1	1	1	1	1	1	1	1	*/
	rPCONA = 0x1ff;	

	// PORT B GROUP
	/*  BIT 10	9		8		7		6		5		4		3		2		1		0		*/
	/*	/CS5	/CS4	/CS3	/CS2	/CS1	nWBE3	nWBE2	/SRAS	/SCAS	SCLK	SCKE	*/
	/*	EXT		NIC		8019	IDE		D12		NC		NC		Sdram	Sdram	Sdram	Sdram	*/
	/*	1,		1,   	1,   	1,    	1,    	0,      0,		1,    	1,    	1,   	1       */
	rPDATB = 0x04f;
	rPCONB = 0x3cf;    
    
	//PORT C GROUP
	//BUSWIDTH=16													*/
	/*  PC15	14		13		12		11		10		9		8	*/
	/*	o		o		RXD1	TXD1	o		o		o		o	*/
	/*	NC		NC		Uart1	Uart1	NC		NC		NC		NC	*/
	/*  01		01		11		11		01		01		01		01	*/

	/*  PC7		6		5		4		3		2		1		0	*/
	/*  o		o		o		o		o		o		o		o	*/
	/*  NC		NC		NC		NC		LED		LED		LED		LED	*/
	/*  01		01		01		01		01		01		01		01	*/
	rPDATC = 0x0000;	//All IO is low
	rPCONC = 0x5f555555;	
	rPUPC  = 0x3000;	//PULL UP RESISTOR should be enabled to I/O

	//PORT D GROUP
	/*  PORT D GROUP(I/O OR LCD)										*/
	/*  BIT7		6		5		4		3		2		1		0	*/
	/*  VF			VM		VLINE	VCLK	VD3		VD2		VD1		VD0	*/
	/*	01			01		01		01		01		01		01		01	*/
	rPDATD= 0x55;
	rPCOND= 0xaaaa;	
	rPUPD = 0x00;
	//These pins must be set only after CPU's internal LCD controller is enable
/////////////////////////////////////////////////////	
	//PORT E GROUP 
	/*  Bit 8		7		6		5		4		3		2		1		0		*/
	/*	ENDLAN		o		o		TOU2	o		o		RXD0	TXD0	FOUT	*/ 
	/*  00			01		01		10		01		01		10		10		11		*/	
	rPDATE	= 0x157;				//Beep = 10
	rPCONE	= 0x596b;				
	rPUPE	= 0xff;
	
	//PORT F GROUP
	/*  Bit8		7		6		5		 4		3		2		1		0		*/   
	/*  IISCLK		IISDI	IISDO	IISLRCK	Input	Input	Input	IICSDA	IICSCL	*/
	/*	100			100		100		100		00		00		00		10		10		*/	
	rPDATF = 0x0;
	rPCONF = 0x24900a;	 
	rPUPF  = 0x1d3;

	//PORT G GROUP
	/*  BIT7		6		5		4		3		2		1		0		*/
	/*	EINT7		EINT6	EINT5	EINT4	EINT3	EINT2	EINT1	EINT0	*/
	/*  KEY3		KEY2	KEY1	KEY0	NIC		EXT		IDE		USB		*/
	/*	11 			11      11      11      11      11      11      11		*/
	rPDATG = 0xff;
	rPCONG = 0x0000;
	rPUPG  = 0x00;	//should be enabled  

	rSPUCR= 0x4;//0x7;  //D15-D0 pull-up disable
	//rSPUCR= 0x6;  //D15-D0 pull-up enable
	
	rSYSCFG = 0x0e;				    //使用8K字节的指令缓存,write buffer disable		 
	rNCACHBE0 = 0xc0002000;		//定义非Cache区,从0x2000000到0xbffffff,中断时进入ROM,若不允许CACHE不正常
	rEXTINT = 0x0;				    //所有的外部硬件中断为低电平触发	
}

/*
函数名称: ledTest
功    能: 循环点亮LED灯
参    数: 无
返回值  : 无
*/
#define LEDTEST_DELAY   500000
void ledTest (void)
{
  sysUtilsLightLed (LED1, TRUE);
  sysUtilsUSecDelay (LEDTEST_DELAY);  //延迟500ms
  sysUtilsLightLed (LED1, FALSE);
  sysUtilsUSecDelay (LEDTEST_DELAY);  //延迟500ms
  sysUtilsLightLed (LED2, TRUE);
  sysUtilsUSecDelay (LEDTEST_DELAY);  //延迟500ms
  sysUtilsLightLed (LED2, FALSE);
  sysUtilsUSecDelay (LEDTEST_DELAY);  //延迟500ms
  sysUtilsLightLed (LED3, TRUE);
  sysUtilsUSecDelay (LEDTEST_DELAY);  //延迟500ms
  sysUtilsLightLed (LED3, FALSE);
  sysUtilsUSecDelay (LEDTEST_DELAY);  //延迟500ms
}

⌨️ 快捷键说明

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