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

📄 board.c.svn-base

📁 RT-Thread是发展中的下一代微内核嵌入式实时操作系统
💻 SVN-BASE
字号:
/* * File      : board.c * This file is part of RT-Thread RTOS * COPYRIGHT (C) 2006, RT-Thread Develop Team * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at * http://openlab.rt-thread.com/license/LICENSE * * Change Logs: * Date           Author       Notes * 2006-09-23     Bernard      first version * 2006-09-24     Bernard      add rt_hw_finsh_init implementation */#include <rtthread.h>#include <rthw.h>#include <s3c44b0.h>#include "board.h"/* #define BOARD_DEBUG */#define DATA_COUNT 0xfff/** * @addtogroup wh44b0 *//*@{*/void rt_timer_handler(int vector){#ifdef BOARD_DEBUG	rt_kprintf("timer handler, increase a tick\n");#endif	rt_tick_increase();}void rt_hw_port_init(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	*/	      	/* 1		1	1	1	1	1	1	1	1	1	*/	PCONA = 0x1ff;	PDATA = 0x2db;	/* PORT B GROUP */	/* BIT 10   9    8       7      6        5     4     3     2     1     0    */	/* /CS5 /CS4 /CS3    /CS2   /CS1     nWBE3 nWBE2 /SRAS /SCAS SCLS  SCKE	*/	/* NC   NC   RTL8019 USBD12 NV_Flash NC    NC    Sdram Sdram Sdram Sdram*/	/* 0,   0,   1,      1,     1,       0,    0,    1,    1,    1,    1    */	PDATB = 0x4f;	PCONB = 0x7cf;	/* 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		00	*/	/* PC7		6		5		4		3		2		1		0	*/	/* o		o		o		o		o		o		o		o	*/	/* NC		NC		NC		NC		NFALE 	NFCLE 	NFCE 	NFRB*/	/* 01		01		01		01		01		01		01		00	*/	PDATC = 0x3001;	/* All IO is low */	PCONC = 0x5f555555;	PUPC  = 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	*/	PDATD= 0x0;	PCOND= 0xaaaa;		PUPD = 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	LED3	LED2	LED1	LED0	BEEP	RXD0	TXD0	CLKOUT	*/ 	/* 00		01		01		01		01		01		10		10		11		*/	PCONE	= 0x556b;	/*0->input, 1 2->TXD0 RXD0, 3 4->input, 5->led, 6->buzzer, 7->led, 8->CODECLK */	PDATE	= 0x57;	PUPE	= 0x006;	/* disable all pull-up */		/* PORT F GROUP */	/* Bit8		7		6		5		 4		3		2		1		0		*/   	/* IISCLK	IISDI	IISDO	IISLRCK	Input	Input	Input	IICSDA	IICSCL	*/	/* 100		010		010		001		00		01		01		10		10		*/	PDATF = 0x2f;	PCONF = 0x24900a;	PUPF  = 0x1d3;	/* PORT G GROUP */	/* BIT7		6		5		4		3		2		1		0	 */	/* INT7		INT6		INT5		INT4		INT3		INT2		INT1		INT0	*/	/* S3		S4		S5		S6		NIC		EXT		IDE		USB	*/	/* 11      11      11      11      11      11      11      11       */	PDATG = 0xfc;	PCONG = 0x000f; /* eint1 is eth interrupt in WH44B0 */	PUPG  = 0x00;	/* should be enabled   */	SPUCR=0x7;  /* D15-D0 pull-up disable */	/* all external interrupts are triggered by low level */	EXTINT=0x0;}/** * This function will init lumit4510 board */void rt_hw_board_init(){	/* init port setting */	rt_hw_port_init();	/* set timer0 register */	/* stop timer */	TCON 	&= ~(0x00000001);	/* dead zone = 0, pre = 150 */	TCFG0 = 0x00000095;	/* all are interrupt mode */	TCFG1 = 0x00000003;	TCNTB0 = DATA_COUNT;	TCMPB0 = 0;	/* manual update */	TCON	|= 0x00000002;	/* auto reload on,output inverter off */	TCON 	&= ~(0x0000000f);	TCON 	|= (0x00000008);	/* install timer handler */	rt_hw_interrupt_install(INT_TIMER0, rt_timer_handler, RT_NULL);	rt_hw_interrupt_umask(INT_TIMER0);	/* start timer */	TCON 	|=(0x00000001);}void rt_hw_led_set(rt_uint32 led){	if((led & 0x01)==0x01)		/* D1 */		PDATC = PDATC | (1<<1) ;	else 		PDATC = PDATC & (~(1<<1)) ;		if((led & 0x02)==0x02)		/* D2 */		PDATC = PDATC | (1<<2) ;	else		PDATC = PDATC & (~(1<<2)) ;	if((led & 0x04)==0x04)		/* D3 */		PDATC = PDATC | (1<<3) ;	else		PDATC = PDATC & (~(1<<3)) ;}/* led loop */void rt_hw_led_flash(void){	register int i;	rt_hw_led_set(0x01);	for ( i = 0; i < 2000000; i++);		rt_hw_led_set(0x02);	for ( i = 0; i < 2000000; i++);		rt_hw_led_set(0x04);	for ( i = 0; i < 2000000; i++);}#ifdef RT_USING_FINSHextern void finsh_notify(void);void rt_serial_isr(int vector){	finsh_notify();}void rt_hw_finsh_init(){	/* install UART isr */	rt_hw_interrupt_install(INT_URXD0, rt_serial_isr, RT_NULL);	rt_hw_interrupt_umask(INT_URXD0);}#endif/*@}*/

⌨️ 快捷键说明

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