ジェリーAC 692 X-GPIOポート構成入出力


最近杰理AC 692 Xを勉强して、収获と出会ったいくつかの问题をブログに书いて、后で仕事の中で普通のIO口の入出力の配置を使うのが简単で、ledを真似します.c key_drv_io.cはIOの基本的な配置を完成することができて、注意しなければならないのはSDKのデフォルトの配置の衝突の問題を解決して、衝突のIO口のその他の地方を直接遮蔽を配置します
#define LED_PORTX        JL_PORTA
#define LED_BLUE         BIT(3)
#define LED_RED          BIT(2)
#define LED_INIT_EN()    do{LED_PORTX->PU &= ~LED_BLUE;LED_PORTX->PD &= ~LED_BLUE;\
						 LED_PORTX->DIR &= ~LED_BLUE;LED_PORTX->PU &= ~LED_RED;\
						 LED_PORTX->PD &= ~LED_RED;LED_PORTX->DIR &= ~LED_RED;}while(0)
#define LED_INIT_DIS()	 do{LED_PORTX->PU &= ~LED_BLUE;LED_PORTX->PD &= ~LED_BLUE;\
						 LED_PORTX->DIR |=  LED_BLUE;LED_PORTX->PU &= ~LED_RED;\
						 LED_PORTX->PD &= ~LED_RED;LED_PORTX->DIR |=  LED_RED;}while(0)
#define B_LED_ON()		 do{LED_PORTX->OUT |=  LED_BLUE;}while(0)
#define B_LED_OFF()		 do{LED_PORTX->OUT &= ~LED_BLUE;}while(0)
#define R_LED_ON()		 do{LED_PORTX->OUT |=  LED_RED;}while(0)
#define R_LED_OFF()		 do{LED_PORTX->OUT &= ~LED_RED;}while(0)

次は自分で変更した入力と出力です.
#define Motor_PORTX             JL_PORTB
#define Motor_BIT               BIT(5)
#define Motor_INIT_EN()     	do{Motor_PORTX->PU &= ~Motor_BIT;Motor_PORTX->PD &= ~Motor_BIT;Motor_PORTX->DIR &= ~Motor_BIT;}while(0)
#define Motor_INIT_DIS()		do{Motor_PORTX->PU &= ~Motor_BIT;Motor_PORTX->PD &= ~Motor_BIT;Motor_PORTX->DIR |=  Motor_BIT;}while(0)
#define Motor_ON()			    do{Motor_PORTX->OUT |=  Motor_BIT;}while(0)
#define Motor_OFF()			    do{Motor_PORTX->OUT &= ~Motor_BIT;}while(0)
///
#define wakeup_PORTX            JL_PORTA
#define wakeup_BIT              BIT(0)
#define wakeup_INIT_EN()     	do{wakeup_PORTX->PU |=  wakeup_BIT;wakeup_PORTX->PD &= ~wakeup_BIT;wakeup_PORTX->DIR |=  wakeup_BIT;}while(0)
#define wakeup_INIT_DIS()		do{wakeup_PORTX->PU &= ~wakeup_BIT;wakeup_PORTX->PD &= ~wakeup_BIT;wakeup_PORTX->DIR |=  wakeup_BIT;}while(0)
#define read_wakeup()             (wakeup_PORTX->IN & wakeup_BIT)

AC 692 Xは全部で4組のGPIOポートで、各IOポートは独立して入出力に構成することができる.
PORTX->OUT   		00 	 11  	 0
PORTX->IN    		00 	 11 	 x
PORTX->DIR    		0:IO  11
PORTX->DIE    	011
PORTX->PU     	010
PORTX->PD     	010
PORTX->HD
PORTX->HD0
PORTX->HD1

一部のICにはPRポートがあり、これらのIOポートはadでも通常ioポートでもよい.以下の関数を用いてPRポートを構成して入出力を構成する際に特に注意するのは、PRポートを用いて通常ioポートの入出力を行う場合、必ずPRポートを閉じて4秒間リセットする機能であり、出力ハイレベルに構成されていても、周辺回路が抵抗接地されているか、停止しないリセットである
int rtc_port_4s_reset_close(void);// 
//PR PORT
#define PORTR0          	    0
#define PORTR1             		1
#define PORTR2              	2
#define PORTR3              	3
//PR PORT OPERATIONS
void PORTR_DIR(u8 port, u8 val);
void PORTR_OUT(u8 port, u8 val);
void PORTR_HD(u8 port, u8 val);
void PORTR_PU(u8 port, u8 val);
void PORTR_PD(u8 port, u8 val);
void PORTR_DIE(u8 port, u8 val);
void PORTR_PWM_OE(u8 port, u8 val);
u8 PORTR_IN(u8 port);