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

📄 main.c

📁 s3c2440芯片嵌入linux(2.6内核)系统后的LED控制程序。通过它可以学习再linux下一般I/O口的操作方法
💻 C
📖 第 1 页 / 共 2 页
字号:
#define	GPBCON		(*(volatile unsigned long *)0x56000010)
#define	GPBDAT		(*(volatile unsigned long *)0x56000014)
#define rGPHCON    (*(volatile unsigned *)0x56000070)	//Port H control
#define rGPHDAT    (*(volatile unsigned *)0x56000074)	//Port H data
#define rGPHUP     (*(volatile unsigned *)0x56000078)	//Pull-up control H

#define rUTXH0 		(*(volatile unsigned char *)0x50000020)	//UART 0 Transmission Hold
#define rURXH0 		(*(volatile unsigned char *)0x50000024)	//UART 0 Receive buffer

#define rULCON0     (*(volatile unsigned *)0x50000000)	//UART 0 Line control
#define rUCON0      (*(volatile unsigned *)0x50000004)	//UART 0 Control
#define rUFCON0     (*(volatile unsigned *)0x50000008)	//UART 0 FIFO control
#define rUMCON0     (*(volatile unsigned *)0x5000000c)	//UART 0 Modem control
#define rUTRSTAT0   (*(volatile unsigned *)0x50000010)	//UART 0 Tx/Rx status
#define rUERSTAT0   (*(volatile unsigned *)0x50000014)	//UART 0 Rx error status
#define rUFSTAT0    (*(volatile unsigned *)0x50000018)	//UART 0 FIFO status
#define rUMSTAT0    (*(volatile unsigned *)0x5000001c)	//UART 0 Modem status
#define rUBRDIV0    (*(volatile unsigned *)0x50000028)	//UART 0 Baud rate divisor

#define LED_SPARK_TIME_DELAY 400000
#define LED_MSK		0x1E0
#define	LED1		0x20
#define	LED2		0x40
#define	LED3		0x80
#define	LED4		0x100

/* LED: PB5678 low light	*/
// 01 01010100 00000000

void idle(void);

void uartini(void)
{
	rGPHCON = 0xaa;
    rGPHUP  = 0x0f;
    rUFCON0 = 0x0;
    rUMCON0 = 0x0;
    rULCON0 = 0x3;   //Line control register : Normal,No parity,1 stop,8 bits
    rUCON0  = 0x05;   // Control register
    rUBRDIV0=( (int)(304000000/6/16./115200+0.5) -1 ); 
}

void uartSendByte(char data)
{
	if(data=='\n')
        {
            while(!(rUTRSTAT0 & 0x2));
           // Delay(1);                 //because the slow response of hyper_terminal 
            rUTXH0 = '\r';
        }
        while(!(rUTRSTAT0 & 0x2));   //Wait until THR is empty.
      //  Delay(1);
        rUTXH0 = data;
}

void uartSendString(char *pt)
{
    while(*pt)
        uartSendByte(*pt++);
}

char uartGetChar(void)
{
	while(!(rUTRSTAT0 & 0x1)); //Receive data ready
	return rURXH0;
}
    

int Main()
{
	GPBCON = 0x15400;
	GPBDAT |= LED_MSK;
	idle();
	uartini();
	GPBDAT &= ~LED_MSK;
	idle();
	GPBDAT |= LED_MSK;
	idle();
	uartSendString("测试代码启动!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");
	uartSendString("为了凑够4k以上,需要多次打印这句话!\n");

⌨️ 快捷键说明

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