gpio.c

来自「au1200下的boot代码」· C语言 代码 · 共 47 行

C
47
字号


#include "gpio.h"
#include "example.h"

#ifdef GPIO_2

static AU1X00_GPIO2 * const gpio2 = (AU1X00_GPIO2 *)KSEG1(GPIO2_PHYS_ADDR);

int gpioRead(int signal)
{
	signal -= 200;
	gpio2->dir &= ~(0x01 << signal);						//Set GPIO to input
	printf("State: %X\n", gpio2->pinstate);
	return ((gpio2->pinstate >> signal) & 0x01);
}

void gpioWrite(int signal, int value)
{
	signal -= 200;
	if(value)
		gpio2->dir &= ~(0x01 << signal);					//Let pull-up resistor drive pin high (tristate pin)
	else
		gpio2->output = (GPIO2_OUTPUT_ENABLE << signal);	//Output a Zero
}

#else	//GPIO_1

static AU1X00_GPIO1 * const gpio1 = (AU1X00_GPIO1 *)KSEG1(GPIO1_PHYS_ADDR);

int gpioRead(int signal)
{
//	gpio1->trioutclr |= (0x01 << signal);
//	printf("State (%X): %X\n", &gpio1->pinstaterd, gpio1->pinstaterd);
	return ((gpio1->pinstaterd >> signal) & 0x01);
}

void gpioWrite(int signal, int value)
{
	if(value)
		gpio1->trioutclr |= (0x01 << signal);		//Let pull-up resister assert pin
	else
		gpio1->outputclr |= (0x01 << signal);		//Output a Zero
}

#endif

⌨️ 快捷键说明

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