ジェリーAC 692 X-GPIOポート構成入出力
8319 ワード
最近杰理AC 692 Xを勉强して、収获と出会ったいくつかの问题をブログに书いて、后で仕事の中で普通のIO口の入出力の配置を使うのが简単で、ledを真似します.c key_drv_io.cはIOの基本的な配置を完成することができて、注意しなければならないのはSDKのデフォルトの配置の衝突の問題を解決して、衝突のIO口のその他の地方を直接遮蔽を配置します
次は自分で変更した入力と出力です.
AC 692 Xは全部で4組のGPIOポートで、各IOポートは独立して入出力に構成することができる.
一部のICにはPRポートがあり、これらのIOポートはadでも通常ioポートでもよい.以下の関数を用いてPRポートを構成して入出力を構成する際に特に注意するのは、PRポートを用いて通常ioポートの入出力を行う場合、必ずPRポートを閉じて4秒間リセットする機能であり、出力ハイレベルに構成されていても、周辺回路が抵抗接地されているか、停止しないリセットである
#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 0: 0 1: 1 0
PORTX->IN 0: 0 1: 1 x
PORTX->DIR 0:IO 1: 1
PORTX->DIE 0: 1: 1
PORTX->PU 0: 1: 0
PORTX->PD 0: 1: 0
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);