在使用GPIOA0-A7端口驱动TFT,在初始化完成后,GPIOA0脚位无法输出信号,在每次的写指令之前需要重新配置GPIO的模式。TFT是GC9306,MCU是N32G430C8L7,初始化代码如下。
#define TFT_DATA_PORT(DATA) GPIOA->PBC |= 0x00ff; GPIOA->PBSC |= DATA ;//PA0-PA7
#define TFT_RESET_H GPIO_Pins_Set(GPIOC,GPIO_PIN_13)//PC13
#define TFT_RESET_L GPIO_Pins_Reset(GPIOC,GPIO_PIN_13)
#define TFT_RS_H GPIO_Pins_Set(GPIOD,GPIO_PIN_14) //PF0
#define TFT_RS_L GPIO_Pins_Reset(GPIOD,GPIO_PIN_14)
#define TFT_WR_H GPIO_Pins_Set(GPIOD,GPIO_PIN_15) //PF1
#define TFT_WR_L GPIO_Pins_Reset(GPIOD,GPIO_PIN_15)
#define TFT_CS_A_H GPIO_Pins_Set(GPIOC,GPIO_PIN_14) //PC14
#define TFT_CS_A_L GPIO_Pins_Reset(GPIOC,GPIO_PIN_14)
#define TFT_BL_A_ON GPIO_Pins_Reset(GPIOB,GPIO_PIN_0)//PB0
#define TFT_BL_A_OFF GPIO_Pins_Set(GPIOB,GPIO_PIN_0)
#define INIT_TFT_BUS \
{ \
GPIO_InitType GPIO_InitStructure; \
\
RCC_AHB_Peripheral_Clock_Enable(RCC_AHB_PERIPH_GPIOA | RCC_AHB_PERIPH_GPIOB | RCC_AHB_PERIPH_GPIOC | RCC_AHB_PERIPH_GPIOD); \
\
GPIO_Structure_Initialize(&GPIO_InitStructure); \
GPIO_InitStructure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | \
GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 ; \
GPIO_InitStructure.GPIO_Slew_Rate = GPIO_SLEW_RATE_SLOW; \
GPIO_InitStructure.GPIO_Current = GPIO_DS_4MA; \
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT_PP; \
GPIO_Peripheral_Initialize(GPIOA, &GPIO_InitStructure); \
GPIO_InitStructure.Pin = GPIO_PIN_0; \
GPIO_Peripheral_Initialize(GPIOB, &GPIO_InitStructure); \
GPIO_InitStructure.Pin = GPIO_PIN_15 | GPIO_PIN_14; \
GPIO_Peripheral_Initialize(GPIOD, &GPIO_InitStructure); \
GPIO_InitStructure.Pin = GPIO_PIN_13 | GPIO_PIN_14; \
GPIO_Peripheral_Initialize(GPIOC, &GPIO_InitStructure); \
} |