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

📄 main1.c

📁 移植的arm内核芯片 s3c4510 的ucos-ii的源码
💻 C
字号:
/************************************************************************************
*	Filename:	iotest.c
*
*	Description:	This program only test IO port in S3C4510B
*					P0 controls LED1
*					P2 controls LED2
*
*	Author:
*
*	Date:	2004.2.6
*
************************************************************************************/
#include "../uhal/s3c4510b.h"

#define		VolUIntPointer			*(volatile unsigned int *)

#define		SpecialReg_BaseAddr		0x03FF0000

#define		IOPMOD					(VolUIntPointer(SpecialReg_BaseAddr+0x5000))
#define		IOPCON					(VolUIntPointer(SpecialReg_BaseAddr+0x5004))
#define		IOPDATA					(VolUIntPointer(SpecialReg_BaseAddr+0x5008))

//void	ISR_IrqHandler(void);
//void	ISR_FiqHandler(void);


#define SEGMENT_A		0x01		// Bitmaps for 7-segment
#define SEGMENT_B		0x02
#define SEGMENT_C		0x04
#define SEGMENT_D		0x08
#define SEGMENT_DP		0x10
#define SEGMENT_E		0x20
#define SEGMENT_F		0x40
#define SEGMENT_G		0x80

#define SYS_BASE		0x03ff0000
#define SRAM_BASE		0x03fe0000
#define IO_BASE			0x03600000
#define IO_BANK0		(*(volatile unsigned int *)(IO_BASE + 0x0000))
#define IO_BANK1		(*(volatile unsigned int *)(IO_BASE + 0x4000))
#define IO_BANK2		(IO_BASE + 0x8000)
#define IO_BANK3		(IO_BASE + 0xc000)
#define NONCACHEABLE_BASE	0x04000000
/*
#define DIGIT_F	((SEGMENT_A | SEGMENT_B | SEGMENT_C | SEGMENT_D | SEGMENT_E | SEGMENT_F) << 24)
#define DIGIT_E	((SEGMENT_B | SEGMENT_C) << 24)
#define DIGIT_D	((SEGMENT_A | SEGMENT_B | SEGMENT_G | SEGMENT_E | SEGMENT_D) << 24)
#define DIGIT_C	((SEGMENT_A | SEGMENT_B | SEGMENT_C | SEGMENT_D | SEGMENT_G) << 24)
#define DIGIT_B	((SEGMENT_F | SEGMENT_G | SEGMENT_B | SEGMENT_C) << 24)
#define DIGIT_A	((SEGMENT_A | SEGMENT_F | SEGMENT_G | SEGMENT_C | SEGMENT_D) << 24)
#define DIGIT_9	((SEGMENT_A | SEGMENT_F | SEGMENT_E | SEGMENT_D | SEGMENT_C | SEGMENT_G) << 24)
#define DIGIT_8	((SEGMENT_A | SEGMENT_B | SEGMENT_C) << 24)
#define DIGIT_7	((SEGMENT_A | SEGMENT_B | SEGMENT_C | SEGMENT_D | SEGMENT_E | SEGMENT_F | SEGMENT_G) << 24)
#define DIGIT_6	((SEGMENT_G | SEGMENT_F | SEGMENT_A | SEGMENT_B | SEGMENT_C) << 24)
#define DIGIT_5	((SEGMENT_E | SEGMENT_F | SEGMENT_A | SEGMENT_B | SEGMENT_C | SEGMENT_G) << 24)
#define DIGIT_4	((SEGMENT_F | SEGMENT_E | SEGMENT_D | SEGMENT_C | SEGMENT_G) << 24)
#define DIGIT_3	((SEGMENT_A | SEGMENT_F | SEGMENT_E | SEGMENT_D) << 24)
#define DIGIT_2	((SEGMENT_B | SEGMENT_C | SEGMENT_D | SEGMENT_E | SEGMENT_G) << 24)
#define DIGIT_1	((SEGMENT_A | SEGMENT_F | SEGMENT_E | SEGMENT_D | SEGMENT_G) << 24)
#define DIGIT_0	((SEGMENT_A | SEGMENT_F | SEGMENT_E | SEGMENT_G) << 24)
*/

#define DIGIT_F	((SEGMENT_B | SEGMENT_C | SEGMENT_D | SEGMENT_DP)<<24)
#define DIGIT_E	((SEGMENT_B | SEGMENT_C | SEGMENT_DP) <<24)
#define DIGIT_D	((SEGMENT_A | SEGMENT_F | SEGMENT_DP)<<24)
#define DIGIT_C	((SEGMENT_B | SEGMENT_C | SEGMENT_G | SEGMENT_DP)<<24)
#define DIGIT_B	((SEGMENT_A | SEGMENT_B | SEGMENT_DP) <<24)
#define DIGIT_A	((SEGMENT_D | SEGMENT_DP) << 24)
#define DIGIT_9	((SEGMENT_E | SEGMENT_DP) <<24)
#define DIGIT_8	((SEGMENT_DP) <<24)
#define DIGIT_7	((SEGMENT_D | SEGMENT_E | SEGMENT_F | SEGMENT_G | SEGMENT_DP) <<24)
#define DIGIT_6	((SEGMENT_B | SEGMENT_DP) <<24)
#define DIGIT_5	((SEGMENT_E | SEGMENT_B | SEGMENT_DP) <<24)
#define DIGIT_4	((SEGMENT_A | SEGMENT_E | SEGMENT_D | SEGMENT_DP) <<24)
#define DIGIT_3	((SEGMENT_F | SEGMENT_E | SEGMENT_DP)<<24)
#define DIGIT_2	((SEGMENT_C | SEGMENT_F | SEGMENT_DP) <<24)
#define DIGIT_1	((SEGMENT_A | SEGMENT_F | SEGMENT_E | SEGMENT_D | SEGMENT_G | SEGMENT_DP) <<24)
#define DIGIT_0	((SEGMENT_G | SEGMENT_DP)<<24 )

//void Set8Led(int n);
//void sleep(int i);

void sleep(int i)
{
	int b;
	
	for( b = 0 ; b < 65000*i ; b++ )
		;
}

void Set8Led(int n)
{
	unsigned int ctrl [] = 
			  { DIGIT_0, DIGIT_1, DIGIT_2, DIGIT_3, DIGIT_4, DIGIT_5, DIGIT_6, DIGIT_7,
			    DIGIT_8, DIGIT_9, DIGIT_A, DIGIT_B, DIGIT_C, DIGIT_D, DIGIT_E, DIGIT_F };
			    
	if( (0<=n) && (n<(sizeof(ctrl)/sizeof(unsigned char))) )
	{
//		IO_BANK0 = ~ctrl[n];	
		IO_BANK0 = ctrl[n];	
	}

//		IO_BANK0 = ~ctrl[7];	

}


void TickCHandler(void)
{
//	INTPEND = BIT_TIMER0_INTR;	// 清除中断挂起标志

	IOPDATA = (IOPDATA)^0x0003;

}


/*********************************************
*	Function name:	C_main
*	Description:	the entry piont of C code
*
*********************************************/

void Main(void)
{
	int i =16;

	IOPMOD = 0x000000FF;
	IOPCON = 0x00000000;

	uHALr_InitInterrupts();
	uHALr_InitTimers();
	uHALr_InstallSystemTimer();	
	
	for(;;)
	{
		for (i = 16; --i >= 0; )
		{
//	    	Set8Led(i);		//display number 'i' on the 7 segments LED 
//	    	sleep(10);			// wait 1 second 
//			IOPDATA = (IOPDATA)^0x0003;
	    }

    	if( i == 0)
    		i = 16;

	}

}


⌨️ 快捷键说明

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