ST意法半导体
直播中

贾飞世

7年用户 1770经验值
私信 关注
[问答]

STMCube GUI生成的GPIO引脚卡在高电平状态怎么办?

你好
我正在使用 LL 库和 STM32F407VET6 板开发一个项目。
(我在这里附上了 main.c 代码。)
每当代码运行时,STMCube GUI 配置工具生成的代码会导致两个 GPIOA 引脚(引脚 6 和 7)卡在高电平的问题。(当我按下重置时,它们是关闭的,但一旦程序运行,它们就会再次打开)
我尽可能多地删除了用户特定的代码,但问题仍然存在。还尝试使用 LL_GPIO_ResetOutputPin(GPIOA,L_GPIO_PIN_6|LL_GPIO_PIN_7) 将它们拉低;但没有效果
这两个引脚连接到两个持续发光的板载用户 LED。下面是STMcube生成的GPIO函数。
  • static void MX_GPIO_Init(void)
  • {
  •   LL_GPIO_InitTypeDef GPIO_InitStruct = {0};
  •   /* GPIO Ports Clock Enable */
  •   LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOE);
  •   LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOC);
  •   LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOH);
  •   LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOA);
  •   LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOB);
  •   LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOD);
  •   /**/
  •   LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_0|LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_3
  •                           |LL_GPIO_PIN_4|LL_GPIO_PIN_5|LL_GPIO_PIN_6|LL_GPIO_PIN_7);
  •   /**/
  •   LL_GPIO_ResetOutputPin(GPIOD, LL_GPIO_PIN_0|LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_3
  •                           |LL_GPIO_PIN_4|LL_GPIO_PIN_5|LL_GPIO_PIN_6|LL_GPIO_PIN_7);
  •   /**/
  •   LL_GPIO_ResetOutputPin(GPIOE, LL_GPIO_PIN_0|LL_GPIO_PIN_1);
  •   /**/
  •   GPIO_InitStruct.Pin = LL_GPIO_PIN_2|LL_GPIO_PIN_4|LL_GPIO_PIN_5|LL_GPIO_PIN_6
  •                           |LL_GPIO_PIN_7|LL_GPIO_PIN_8|LL_GPIO_PIN_9|LL_GPIO_PIN_10
  •                           |LL_GPIO_PIN_11|LL_GPIO_PIN_12|LL_GPIO_PIN_13|LL_GPIO_PIN_14
  •                           |LL_GPIO_PIN_15;
  •   GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
  •   GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  •   LL_GPIO_Init(GPIOE, &GPIO_InitStruct);
  •   /**/
  •   GPIO_InitStruct.Pin = LL_GPIO_PIN_3;
  •   GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
  •   GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  •   LL_GPIO_Init(GPIOE, &GPIO_InitStruct);
  •   /**/
  •   GPIO_InitStruct.Pin = LL_GPIO_PIN_13|LL_GPIO_PIN_14|LL_GPIO_PIN_15|LL_GPIO_PIN_0
  •                           |LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_3|LL_GPIO_PIN_4
  •                           |LL_GPIO_PIN_5|LL_GPIO_PIN_6|LL_GPIO_PIN_7|LL_GPIO_PIN_8
  •                           |LL_GPIO_PIN_9|LL_GPIO_PIN_12;
  •   GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
  •   GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  •   LL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  •   /**/
  •   GPIO_InitStruct.Pin = LL_GPIO_PIN_0|LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_3
  •                           |LL_GPIO_PIN_4|LL_GPIO_PIN_5|LL_GPIO_PIN_6|LL_GPIO_PIN_7;
  •   GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
  •   GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW;
  •   GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
  •   GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  •   LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  •   /**/
  •   GPIO_InitStruct.Pin = LL_GPIO_PIN_0|LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_10
  •                           |LL_GPIO_PIN_11|LL_GPIO_PIN_12|LL_GPIO_PIN_13|LL_GPIO_PIN_14
  •                           |LL_GPIO_PIN_15|LL_GPIO_PIN_3|LL_GPIO_PIN_4|LL_GPIO_PIN_5
  •                           |LL_GPIO_PIN_6|LL_GPIO_PIN_7|LL_GPIO_PIN_8|LL_GPIO_PIN_9;
  •   GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
  •   GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  •   LL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  •   /**/
  •   GPIO_InitStruct.Pin = LL_GPIO_PIN_8|LL_GPIO_PIN_9|LL_GPIO_PIN_10|LL_GPIO_PIN_11
  •                           |LL_GPIO_PIN_12|LL_GPIO_PIN_13|LL_GPIO_PIN_14|LL_GPIO_PIN_15;
  •   GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
  •   GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  •   LL_GPIO_Init(GPIOD, &GPIO_InitStruct);
  •   /**/
  •   GPIO_InitStruct.Pin = LL_GPIO_PIN_8|LL_GPIO_PIN_11|LL_GPIO_PIN_12|LL_GPIO_PIN_15;
  •   GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
  •   GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  •   LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  •   /**/
  •   GPIO_InitStruct.Pin = LL_GPIO_PIN_9|LL_GPIO_PIN_10;
  •   GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
  •   GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH;
  •   GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
  •   GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  •   GPIO_InitStruct.Alternate = LL_GPIO_AF_7;
  •   LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  •   /**/
  •   GPIO_InitStruct.Pin = LL_GPIO_PIN_0|LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_3
  •                           |LL_GPIO_PIN_4|LL_GPIO_PIN_5|LL_GPIO_PIN_6|LL_GPIO_PIN_7;
  •   GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
  •   GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW;
  •   GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
  •   GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  •   LL_GPIO_Init(GPIOD, &GPIO_InitStruct);
  •   /**/
  •   GPIO_InitStruct.Pin = LL_GPIO_PIN_0|LL_GPIO_PIN_1;
  •   GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
  •   GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW;
  •   GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
  •   GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  •   LL_GPIO_Init(GPIOE, &GPIO_InitStruct);
  •   LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_0|LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_3|LL_GPIO_PIN_4|LL_GPIO_PIN_5|LL_GPIO_PIN_6|LL_GPIO_PIN_7); //Added by me
  • }

回帖(1)

盛越熊

2023-1-6 11:15:17
这两个引脚连接到两个持续发光的板载用户 LED
如果 LED 连接到阳极,则正常保持点亮状态。
尝试将 PA6 拉高,观察差异。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分