帮忙解决下GPIO的问题
在使用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); \
} 补充:
是PA0无法输出高电平,是在进入大循环的时候就会出现这种情况 无法输出的时候debug看一下GPIO寄存器 sy12138 发表于 2022-11-29 11:36
无法输出的时候debug看一下GPIO寄存器
在debug可以看到GPIO_POTYPE变为了开漏输出。我的中断也就只有外部中断线6和滴答时钟在用 sy12138 发表于 2022-11-29 11:36
无法输出的时候debug看一下GPIO寄存器
多谢,已经解决了,是因为使用了库函数的模式转换IIC端口转换为开漏输出的时候导致PA0输出了开漏。不知道是不是库函数的模式函数不适合直接调用。 江门彦祖 发表于 2022-11-29 15:09
多谢,已经解决了,是因为使用了库函数的模式转换IIC端口转换为开漏输出的时候导致PA0输出了开漏。不知道 ...
请问是哪个库函数,我看一下 sy12138 发表于 2022-11-29 17:52
请问是哪个库函数,我看一下
原来的IIC接收应答信号是转换模式的,现在是直接读取信号了,已经取消了模式转换。
GPIO_Mode_Set(GPIOA,GPIO_MODE_OUT_OD,GPIO_PIN_8) 江门彦祖 发表于 2022-11-30 07:59
原来的IIC接收应答信号是转换模式的,现在是直接读取信号了,已经取消了模式转换。
GPIO_Mode_Set(GPIOA, ...
好的,一般这种GPIO失效的问题还是先debug看GPIO配置有没有发生变化
页:
[1]