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

📄 gpio.h

📁 C语言编写的监控中心终端程序。基于GPRS上传收发数据功能
💻 H
字号:
#ifndef	__GPIO_H
#define __GPIO_H

#define	GPIOSEL_8_HVSYNC	(1 << 8)

//
//	GPIO_SEL[]
//

//	GPIO_SEL[1:0]
#define	GPIOSEL_10_EPP		(0x0 << 0)		// EPP
#define	GPIOSEL_10_MODEM	(0x1 << 0)
#define	GPIOSEL_10_UARTS	(0x2 << 0)		// 2 UART, for extra GPIO and UART debugging
#define	GPIOSEL_10_GPIOS	(0x3 << 0)

//	GPIO_SEL[5:2]
#define	GPIOSEL_52_ATAPI	(0x0 << 2)
#define	GPIOSEL_52_UDE		(0x1 << 2)
#define	GPIOSEL_52_UDE2		(0x8 << 2)
#define	GPIOSEL_52_GPIO		(0xc << 2)

//	GPIO_SEL[6]
#define	GPIOSEL_6_GPIO		(0 << 6)		// 0: RISC_INT3 and IRQE3_L
#define	GPIOSEL_6_CLK27M	(1 << 6)		// 1: TV-encoder 27M

//	GPIO_SEL[7]
#define	GPIOSEL_7_GPIO		(0 << 7)		// 0: RISC_INT2 and IRQE2_L
#define	GPIOSEL_7_PALNTSC	(1 << 7)		// 1: O_PAL_NTSC

//	GPIO_SEL[8]
#define	GPIOSEL_8_HVSYNC_IN	(0 << 8)		// 0: GPIO
#define	GPIOSEL_8_GPIO		(1 << 8)		// 1: DSP FL0

//	GPIO_SEL[9]
#define	GPIOSEL_9_UART_NORMAL	(0 << 9)		// 0: UART1/UART2
#define	GPIOSEL_9_UART_SWAPPED	(1 << 9)		// 1: UART2/UART1

//	GPIO_SEL[10]
#define	GPIOSEL_A_GPIO20	(0 << 10)		// 0: GPIO[20]
#define	GPIOSEL_A_FL0		(1 << 10)		// 1: DSP FL0

//	GPIO_SEL[11]
#define	GPIOSEL_B_GPIO21	(0 << 11)		// 0: GPIO[21]
#define	GPIOSEL_B_FL1		(1 << 11)		// 1: DSP FL1

//	GPIO_SEL[12]
#define	GPIOSEL_C_GPIO59	(0 << 12)		// 0: GPIO[59]
#define	GPIOSEL_C_FL2		(1 << 12)		// 1: DSP FL2

//	GPIO_SEL[14:13]
#define	GPIOSEL_ED_TVOUT_ALYS	(0 << 13)		// 0b00: always output
#define	GPIOSEL_ED_TVOUT_TRI	(2 << 13)		// 0b10: HZ when GPIOE[2]==1
#define	GPIOSEL_ED_TVOUT_TRIN	(3 << 13)		// 0b11: HZ when GPIOE[2]==0

//
//	GPIO_SEL_AUX
//

//	GPIO_SEL_AUX[0]
#define	GPIOAUX_0_ROMADDR21	(0 << 0)		// 0: ROM_ADDR[21] (default)
#define	GPIOAUX_0_GPIO0		(1 << 0)		// 1: GPIO[0]

//	GPIO_SEL_AUX[1]
#define	GPIOAUX_1_ROMADDR20	(0 << 1)		// 0: ROM_ADDR[20] (default)
#define	GPIOAUX_1_GPIO1		(1 << 1)		// 1: GPIO[1]

//	GPIO_SEL_AUX[2]
#define	GPIOAUX_2_MEMWEB	(0 << 2)		// 0: MEMWE_B (default)
#define	GPIOAUX_2_GPIO2		(1 << 2)		// 1: GPIO[2]

//	GPIO_SEL_AUX[3]
#define	GPIOAUX_3_MEMOEB	(0 << 3)		// 0: MEMOE_B (default)
#define	GPIOAUX_3_GPIO12	(1 << 3)		// 1: GPIO[12]

//	GPIO_SEL_AUX[6:4]
#define	GPIOAUX_64_MEMCS3_CSX	(1 << 4)		// 000: normal
#define	GPIOAUX_64_MEMCS3_CS1	(0 << 4)		// 001: direct CS3 to CS1 (for CS1 programming)
#define	GPIOAUX_64_MEMCS3_CS2	(2 << 4)		// 010: direct CS3 to CS2 (for CS2 programming)
#define	GPIOAUX_64_MEMCS3_CS3	(3 << 4)		// 011: direct CS3 to CS2 (for CS3 programming)
#define	GPIOAUX_64_MEMCS3_GPIO	(4 << 4)		// 100: GPIO[15:13]

//	GPIO_SEL_AUX[7]
#define	GPIOAUX_7_ROMADDR22	(0 << 7)		// 0: ROM_ADDR[22]
#define	GPIOAUX_7_GPIO16	(1 << 7)		// 1: GPIO[16]

//	GPIO_SEL_AUX[8]
#define	GPIOAUX_8_ROMADDR23	(0 << 8)		// 0: ROM_ADDR[23]
#define	GPIOAUX_8_GPIO17	(1 << 8)		// 1: GPIO[17]

//	GPIO_SEL_AUX[9]
#define	GPIOAUX_9_ROMADDR24	(0 << 9)		// 0: ROM_ADDR[24]
#define	GPIOAUX_9_GPIO18	(1 << 9)		// 1: GPIO[18]

//	GPIO_SEL_AUX[10]
#define	GPIOAUX_A_ROMADDR25	(0 << 10)		// 0: ROM_ADDR[25]
#define	GPIOAUX_A_GPIO19	(1 << 10)		// 1: GPIO[19]

//	aux: 10
//	sel: 00
#define	GPIO_SEL_DEFAULT	(GPIOSEL_10_EPP		| \
				 GPIOSEL_52_ATAPI	| \
				 GPIOSEL_6_GPIO		| \
				 GPIOSEL_7_GPIO		| \
				 GPIOSEL_8_HVSYNC_IN	| \
				 GPIOSEL_9_UART_NORMAL	| \
				 GPIOSEL_A_FL0		| \
				 GPIOSEL_B_FL1		| \
				 GPIOSEL_C_GPIO59	| \
				 GPIOSEL_ED_TVOUT_ALYS)

#define	GPIO_SEL_AUX_DEFAULT	(GPIOAUX_0_GPIO0	| \
				 GPIOAUX_1_GPIO1	| \
				 GPIOAUX_2_GPIO2	| \
				 GPIOAUX_3_MEMOEB	| \
				 GPIOAUX_64_MEMCS3_CSX	| \
				 GPIOAUX_7_ROMADDR22	| \
				 GPIOAUX_8_ROMADDR23	| \
				 GPIOAUX_9_ROMADDR24	| \
				 GPIOAUX_A_ROMADDR25)

//
//	generic GPIO operations
//
void			GPIO_G_SET(BYTE i, BYTE d, UINT16 a);

#define	GPIO_SEL_AUX(a, d)	((d) ? (regs0->gpio_sel_aux |=  (1 << (a % 16))) : \
				       (regs0->gpio_sel_aux &= ~(1 << (a % 16))))
#define	GPIO_SEL(a, d)		((d) ? (regs0->gpio_sel |=  (1 << (a % 16))) : \
				       (regs0->gpio_sel &= ~(1 << (a % 16))))
#define	GPIO_I_GET(a)		((regs0->gpio_in[a / 16] >> (a % 16)) & 0x01)
#define	GPIO_O_SET(a, d)	((d) ? (regs0->gpio_out[a / 16] |=  (1 << (a % 16))) : \
				       (regs0->gpio_out[a / 16] &= ~(1 << (a % 16))))
#define	GPIO_E_SET(a, d)	((d) ? (regs0->gpio_oe[a / 16]  |=  (1 << (a % 16))) : \
				       (regs0->gpio_oe[a / 16]  &= ~(1 << (a % 16))))
#define	GPIO_M_SET(a, d)	((d) ? (regs0->gpio_master[a / 16] |=  (1 << (a % 16))) : \
				       (regs0->gpio_master[a / 16] &= ~(1 << (a % 16))))

#endif	__GPIO_H

⌨️ 快捷键说明

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