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

📄 ops.h

📁 jz4730 北京群正出品
💻 H
📖 第 1 页 / 共 5 页
字号:
	p = (n) / 32;				\	o = (n) % 32;				\	__gpio_port_as_input(p, o);		\} while (0)#define __gpio_set_pin(n)			\do {						\	unsigned int p, o;			\	p = (n) / 32;				\	o = (n) % 32;				\	__gpio_port_data(p) |= (1 << o);	\} while (0)#define __gpio_clear_pin(n)			\do {						\	unsigned int p, o;			\	p = (n) / 32;				\	o = (n) % 32;				\	__gpio_port_data(p) &= ~(1 << o);	\} while (0)static __inline__ unsigned int __gpio_get_pin(unsigned int n){	unsigned int p, o;	p = (n) / 32;	o = (n) % 32;	if (__gpio_port_data(p) & (1 << o))		return 1;	else		return 0;}#define __gpio_set_irq_detect_manner(p, o, m)	\do {						\    unsigned int tmp;				\    if (o < 16) {				\	tmp = REG_GPIO_GPIDLR(p);		\	tmp &= ~(3 << ((o) << 1));		\	tmp |= ((m) << ((o) << 1));		\	REG_GPIO_GPIDLR(p) = tmp;		\    } else {					\	tmp = REG_GPIO_GPIDUR(p);		\	tmp &= ~(3 << (((o)-16) << 1));		\	tmp |= ((m) << (((o)-16) << 1));		\	REG_GPIO_GPIDUR(p) = tmp;		\    }						\} while (0)#define __gpio_port_as_irq(p, o, m)		\do {						\    __gpio_port_as_input(p, o);			\    __gpio_set_irq_detect_manner(p, o, m);  	\    REG_GPIO_GPIER(p) |= (1 << o);		\} while (0)#define __gpio_as_irq(n, m)			\do {						\	unsigned int p, o;			\	p = (n) / 32;				\	o = (n) % 32;				\        __gpio_port_as_irq(p, o, m);  		\} while (0)#define __gpio_as_irq_high_level(n)	__gpio_as_irq(n, GPIO_IRQ_HILEVEL)#define __gpio_as_irq_low_level(n)	__gpio_as_irq(n, GPIO_IRQ_LOLEVEL)#define __gpio_as_irq_fall_edge(n)	__gpio_as_irq(n, GPIO_IRQ_FALLEDG)#define __gpio_as_irq_rise_edge(n)	__gpio_as_irq(n, GPIO_IRQ_RAISEDG)#define __gpio_mask_irq(n)			\do {						\	unsigned int p, o;			\	p = (n) / 32;				\	o = (n) % 32;				\	REG_GPIO_GPIER(p) &= ~(1 << o);		\} while (0)#define __gpio_unmask_irq(n)			\do {						\	unsigned int p, o;			\	p = (n) / 32;				\	o = (n) % 32;				\	REG_GPIO_GPIER(p) |= (1 << o);		\} while (0)#define __gpio_ack_irq(n)			\do {						\	unsigned int p, o;			\	p = (n) / 32;				\	o = (n) % 32;				\	REG_GPIO_GPFR(p) |= (1 << o);		\} while (0)static __inline__ unsigned int __gpio_get_irq(void){	unsigned int tmp, i;	tmp = REG_GPIO_GPFR(3);	for (i=0; i<32; i++)		if (tmp & (1 << i))			return 0x60 + i;	tmp = REG_GPIO_GPFR(2);	for (i=0; i<32; i++)		if (tmp & (1 << i))			return 0x40 + i;	tmp = REG_GPIO_GPFR(1);	for (i=0; i<32; i++)		if (tmp & (1 << i))			return 0x20 + i;	tmp = REG_GPIO_GPFR(0);	for (i=0; i<32; i++)		if (tmp & (1 << i))			return i;	return 0;}#define __gpio_group_irq(n)			\({						\	register int tmp, i;			\	tmp = REG_GPIO_GPFR((n));		\	for (i=31;i>=0;i--)			\		if (tmp & (1 << i))		\			break;			\	i;					\})#define __gpio_enable_pullupdown(n)		\do {						\	unsigned int p, o;			\	p = (n) / 32;				\	o = (n) % 32;				\	REG_GPIO_GPPUR(p) |= (1 << o);		\} while (0)#define __gpio_disable_pullupdown(n)		\do {						\	unsigned int p, o;			\	p = (n) / 32;				\	o = (n) % 32;				\	REG_GPIO_GPPUR(p) &= ~(1 << o);		\} while (0)/* Init the alternate function pins */#define __gpio_as_ssi()				\do {						\	REG_GPIO_GPALR(2) &= 0xFC00FFFF;	\	REG_GPIO_GPALR(2) |= 0x01550000;	\} while (0)#define __gpio_as_uart3()			\do {						\	REG_GPIO_GPAUR(0) &= 0xFFFF0000;	\	REG_GPIO_GPAUR(0) |= 0x00005555;	\} while (0)#define __gpio_as_uart2()			\do {						\	REG_GPIO_GPALR(3) &= 0x3FFFFFFF;	\	REG_GPIO_GPALR(3) |= 0x40000000;	\	REG_GPIO_GPAUR(3) &= 0xF3FFFFFF;	\	REG_GPIO_GPAUR(3) |= 0x04000000;	\} while (0)#define __gpio_as_uart1()			\do {						\	REG_GPIO_GPAUR(0) &= 0xFFF0FFFF;	\	REG_GPIO_GPAUR(0) |= 0x00050000;	\} while (0)#define __gpio_as_uart0()			\do {						\	REG_GPIO_GPAUR(3) &= 0x0FFFFFFF;	\	REG_GPIO_GPAUR(3) |= 0x50000000;	\} while (0)#define __gpio_as_scc0()			\do {						\	REG_GPIO_GPALR(2) &= 0xFFFFFFCC;	\	REG_GPIO_GPALR(2) |= 0x00000011;	\} while (0)#define __gpio_as_scc1()			\do {						\	REG_GPIO_GPALR(2) &= 0xFFFFFF33;	\	REG_GPIO_GPALR(2) |= 0x00000044;	\} while (0)#define __gpio_as_scc()				\do {						\	__gpio_as_scc0();			\	__gpio_as_scc1();			\} while (0)#define __gpio_as_dma()				\do {						\	REG_GPIO_GPALR(0) &= 0x00FFFFFF;	\	REG_GPIO_GPALR(0) |= 0x55000000;	\	REG_GPIO_GPAUR(0) &= 0xFF0FFFFF;	\	REG_GPIO_GPAUR(0) |= 0x00500000;	\} while (0)#define __gpio_as_msc()				\do {						\	REG_GPIO_GPALR(1) &= 0xFFFF000F;	\	REG_GPIO_GPALR(1) |= 0x00005550;	\} while (0)#define __gpio_as_pcmcia()			\do {						\	REG_GPIO_GPAUR(2) &= 0xF000FFFF;	\	REG_GPIO_GPAUR(2) |= 0x05550000;	\} while (0)#define __gpio_as_emc(csmask)			\do {						\	REG_GPIO_GPALR(2) &= 0x3FFFFFFF;	\	REG_GPIO_GPALR(2) |= 0x40000000;	\	REG_GPIO_GPAUR(2) &= 0xFFFF0000;	\	REG_GPIO_GPAUR(2) |= 0x00005555;	\} while (0)#define __gpio_as_lcd_slave()			\do {						\	REG_GPIO_GPALR(1) &= 0x0000FFFF;	\	REG_GPIO_GPALR(1) |= 0x55550000;	\	REG_GPIO_GPAUR(1) &= 0x00000000;	\	REG_GPIO_GPAUR(1) |= 0x55555555;	\} while (0)#define __gpio_as_lcd_master()			\do {						\	REG_GPIO_GPALR(1) &= 0x0000FFFF;	\	REG_GPIO_GPALR(1) |= 0x55550000;	\	REG_GPIO_GPAUR(1) &= 0x00000000;	\	REG_GPIO_GPAUR(1) |= 0x556A5555;	\} while (0)#define __gpio_as_usb()				\do {						\	REG_GPIO_GPAUR(0) &= 0x00FFFFFF;	\	REG_GPIO_GPAUR(0) |= 0x55000000;	\} while (0)#define __gpio_as_ac97()			\do {						\	REG_GPIO_GPALR(2) &= 0xC3FF03FF;	\	REG_GPIO_GPALR(2) |= 0x24005400;	\} while (0)#define __gpio_as_i2s_slave()			\do {						\	REG_GPIO_GPALR(2) &= 0xC3FF0CFF;	\	REG_GPIO_GPALR(2) |= 0x14005100;	\} while (0)#define __gpio_as_i2s_master()			\do {						\	REG_GPIO_GPALR(2) &= 0xC3FF0CFF;	\	REG_GPIO_GPALR(2) |= 0x28005100;	\} while (0)#define __gpio_as_eth()				\do {						\	REG_GPIO_GPAUR(3) &= 0xFC000000;	\	REG_GPIO_GPAUR(3) |= 0x01555555;	\} while (0)#define __gpio_as_pwm()				\do {						\	REG_GPIO_GPAUR(2) &= 0x0FFFFFFF;	\	REG_GPIO_GPAUR(2) |= 0x50000000;	\} while (0)#define __gpio_as_ps2()				\do {						\	REG_GPIO_GPALR(1) &= 0xFFFFFFF0;	\	REG_GPIO_GPALR(1) |= 0x00000005;	\} while (0)#define __gpio_as_uprt()			\do {						\	REG_GPIO_GPALR(1) &= 0x0000000F;	\	REG_GPIO_GPALR(1) |= 0x55555550;	\	REG_GPIO_GPALR(3) &= 0xC0000000;	\	REG_GPIO_GPALR(3) |= 0x15555555;	\} while (0)#define __gpio_as_cim()				\do {						\	REG_GPIO_GPALR(0) &= 0xFF000000;	\	REG_GPIO_GPALR(0) |= 0x00555555;	\} while (0)/*************************************************************************** * HARB ***************************************************************************/#define __harb_usb0_udc()			\do {						\  REG_HARB_HAPOR &= ~HARB_HAPOR_UCHSEL; 	\} while (0)#define __harb_usb0_uhc()			\do {						\  REG_HARB_HAPOR |= HARB_HAPOR_UCHSEL; 		\} while (0)#define __harb_set_priority(n)			\do {						\  REG_HARB_HAPOR = ((REG_HARB_HAPOR & ~HARB_HAPOR_PRIO_MASK) | n);	\} while (0)/*************************************************************************** * I2C ***************************************************************************/#define __i2c_enable()		( REG_I2C_CR |= I2C_CR_I2CE )#define __i2c_disable()		( REG_I2C_CR &= ~I2C_CR_I2CE )#define __i2c_send_start()	( REG_I2C_CR |= I2C_CR_STA )#define __i2c_send_stop()	( REG_I2C_CR |= I2C_CR_STO )#define __i2c_send_ack()	( REG_I2C_CR &= ~I2C_CR_AC )#define __i2c_send_nack()	( REG_I2C_CR |= I2C_CR_AC )#define __i2c_set_drf()		( REG_I2C_SR |= I2C_SR_DRF )#define __i2c_clear_drf()	( REG_I2C_SR &= ~I2C_SR_DRF )#define __i2c_check_drf()	( REG_I2C_SR & I2C_SR_DRF )#define __i2c_received_ack()	( !(REG_I2C_SR & I2C_SR_ACKF) )#define __i2c_is_busy()		( REG_I2C_SR & I2C_SR_BUSY )#define __i2c_transmit_ended()	( REG_I2C_SR & I2C_SR_TEND )#define __i2c_set_clk(dev_clk, i2c_clk) \  ( REG_I2C_GR = (dev_clk) / (16*(i2c_clk)) - 1 )#define __i2c_read()		( REG_I2C_DR )#define __i2c_write(val)	( REG_I2C_DR = (val) )/*************************************************************************** * UDC ***************************************************************************/#define __udc_set_16bit_phy()		( REG_UDC_DevCFGR |= UDC_DevCFGR_PI )#define __udc_set_8bit_phy()		( REG_UDC_DevCFGR &= ~UDC_DevCFGR_PI )#define __udc_enable_sync_frame()	( REG_UDC_DevCFGR |= UDC_DevCFGR_SS )#define __udc_disable_sync_frame()	( REG_UDC_DevCFGR &= ~UDC_DevCFGR_SS )#define __udc_self_powered()		( REG_UDC_DevCFGR |= UDC_DevCFGR_SP )#define __udc_bus_powered()		( REG_UDC_DevCFGR &= ~UDC_DevCFGR_SP )#define __udc_enable_remote_wakeup()	( REG_UDC_DevCFGR |= UDC_DevCFGR_RW )#define __udc_disable_remote_wakeup()	( REG_UDC_DevCFGR &= ~UDC_DevCFGR_RW )#define __udc_set_speed_high()				\do {							\

⌨️ 快捷键说明

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