ADUC7060 之GPIO初始化
GPxCON是端口x(x为:0、1、2)的控制寄存器
GPxDAT 是端口x 的配置和数据寄存器
GPxSET 为端口x 的数据设置寄存器
GPxCLR 为端口x 的数据清除寄存器
对GPxPAR 寄存器编程,可分别控制端口0、1、2 的参数
******************************************************************************/
void Init_GPIO(void)
{
//GPxDAT端口0 的配置和数据寄存器
GP0DAT= DIR_7(IN)|DIR_6(IN)|DIR_5(IN)|DIR_4(IN)|DIR_3(IN)|DIR_2(IN)|DIR_1(IN)|DIR_0(IN)|//数据传输方向
OUT_7(H) |OUT_6(H) |OUT_5(H) |OUT_4(H) |OUT_3(H) |OUT_2(H) |OUT_1(H) |OUT_0(H); //端口x 数据输出
//GPxCON是端口x(x为:0、1、2)的控制寄存器
GP0CON0=P00_SS(0) |
P01_Sclk_SCL(1) |
P02_MISO(0) |
P03_MOSI_SDA(1) |
P04_IRQ0_pwm1(0)|
P05_CTS(0) |
P06_RTS(0) ;
#ifdef SPI //GPIO 引脚P0.0、P0.1、P0.2 和P0.3 的功能
GP0KEY1=0x7;
GP0CON1=0x1; //SPI
GP0KEY2=0x13;
#else
GP0KEY1=0x7;
GP0CON1=0x2; //I2C
GP0KEY2=0x13;
#endif
GP0PAR= C7(_2mA)|C6(_2mA)|C5(_2mA)|C4(_2mA)|C3(_2mA)|C2(_2mA)|C1(_2mA)|C0(_2mA)|
PD7(E) |PD6(E) |PD5(E) |PD4(E) |PD3(E) |PD2(E) |PD1(E) |PD0(E) ;
//GP0SET= OUT_7(H) |OUT_6(H) |OUT_5(H) |OUT_4(H) |OUT_3(H) |OUT_2(H) |OUT_1(H) |OUT_0(H);
//GP0CLR= OUT_7(H) |OUT_6(H) |OUT_5(H) |OUT_4(H) |OUT_3(H) |OUT_2(H) |OUT_1(H) |OUT_0(H);
//端口1 的配置和数据寄存器
GP1DAT= DIR_7(IN)|DIR_6(OUT)|DIR_5(IN)|DIR_4(IN)|DIR_3(IN)|DIR_2(IN)|DIR_1(OUT)|DIR_0(IN)|//数据传输方向
OUT_7(H) |OUT_6(H) |OUT_5(H) |OUT_4(H) |OUT_3(H) |OUT_2(H) |OUT_1(H) |OUT_0(H); //端口x 数据输出
GP1CON= P10_IRQ1_SIN_T0(1) |
P11_SOUT(1) |
P12_SYNC(0) |
P13_TRIP(0) |
P14_PWM2(0) |
P15_PWM3(0) |
P16_PWM4(0) ;
GP1PAR= C7(_2mA)|C6(_4mA)|C5(_2mA)|C4(_2mA)|C3(_2mA)|C2(_2mA)|C1(_2mA)|C0(_2mA)|
PD7(E) |PD6(E) |PD5(E) |PD4(E) |PD3(E) |PD2(E) |PD1(E) |PD0(E) ;
//GP1SET= OUT_7(H) |OUT_6(H) |OUT_5(H) |OUT_4(H) |OUT_3(H) |OUT_2(H) |OUT_1(H) |OUT_0(H);
//GP1CLR= OUT_7(H) |OUT_6(H) |OUT_5(H) |OUT_4(H) |OUT_3(H) |OUT_2(H) |OUT_1(H) |OUT_0(H);
//端口2 的配置和数据寄存器
GP2DAT= DIR_1(IN)|DIR_0(IN)|//数据传输方向
OUT_1(H) |OUT_0(H); //端口x 数据输出
GP2CON= P20_IRQ2_PWM0_EXTCLK(0) |
P21_IRQ3_PWM5(0) ;
GP2PAR= C1(_2mA)|C0(_2mA)|
PD1(E) |PD0(E) ;
//GP2SET= OUT_1(H) |OUT_0(H);
//GP2CLR= OUT_1(H) |OUT_0(H);
}
如需要直接修改函数里的参数即可!
下面是宏定义!
/******************************************************************************
GPIO
******************************************************************************/
#define OUT 1
#define IN 0
#define H 1
#define L 0
#define _2mA 0
#define _4mA 1
#define E 0
#define D 1
#define DIR_7(x) x<<31
#define DIR_6(x) x<<30
#define DIR_5(x) x<<29
#define DIR_4(x) x<<28
#define DIR_3(x) x<<27
#define DIR_2(x) x<<26
#define DIR_1(x) x<<25
#define DIR_0(x) x<<24
#define OUT_7(x) x<<23
#define OUT_6(x) x<<22
#define OUT_5(x) x<<21
#define OUT_4(x) x<<20
#define OUT_3(x) x<<19
#define OUT_2(x) x<<18
#define OUT_1(x) x<<17
#define OUT_0(x) x<<16
#define P00_SS(x) x<<0
#define P01_SCLK_SCL(x) x<<4
#define P02_MISO(x) x<<8
#define P03_MOSI_SDA(x) x<<12
#define P04_IRQ0_PWM1(x) x<<16
#define P05_CTS(x) x<<20
#define P06_RTS(x) x<<24
#define P10_IRQ1_SIN_T0(x) x<<0
#define P11_SOUT(x) x<<4
#define P12_SYNC(x) x<<8
#define P13_TRIP(x) x<<12
#define P14_PWM2(x) x<<16
#define P15_PWM3(x) x<<20
#define P16_PWM4(x) x<<24
#define P20_IRQ2_PWM0_EXTCLK(x) x<<0
#define P21_IRQ3_PWM5(x) x<<4
#define C7(x) x<<15
#define C6(x) x<<14
#define C5(x) x<<13
#define C4(x) x<<12
#define C3(x) x<<11
#define C2(x) x<<10
#define C1(x) x<<9
#define C0(x) x<<8
#define PD7(x) x<<7
#define PD6(x) x<<6
#define PD5(x) x<<5
#define PD4(x) x<<4
#define PD3(x) x<<3
#define PD2(x) x<<2
#define PD1(x) x<<1
#define PD0(x) x<<0