Embedded 在STM32F103上初始化之前设置GPIO引脚状态可以吗?

Embedded 在STM32F103上初始化之前设置GPIO引脚状态可以吗?,embedded,stm32,gpio,cortex-m3,Embedded,Stm32,Gpio,Cortex M3,我有一个控制p沟道mosfet的引脚,它可以打开/关闭电源总线。它上有一个上拉,这样当引脚阻抗高或源电流大时,总线断开,当下沉电流时,总线接通 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_SetBits(GPIOD, GPIO_Pin_14); //pin will be high immediately on init GPIO

我有一个控制p沟道mosfet的引脚,它可以打开/关闭电源总线。它上有一个上拉,这样当引脚阻抗高或源电流大时,总线断开,当下沉电流时,总线接通

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_SetBits(GPIOD, GPIO_Pin_14);  //pin will be high immediately on init
  GPIO_Init(GPIOD, &GPIO_InitStructure);
如果我能这样做,公共汽车就不会开了。如果我必须在GPIO_Init之后设置引脚状态,似乎会有几纳秒或几微秒的时间下降电流,暂时打开总线:

  GPIO_Init(GPIOD, &GPIO_InitStructure); //PP, low state, sinking current, bus is on
  GPIO_SetBits(GPIOD, GPIO_Pin_14);  //now bus is off again
有关于这方面的文件吗


编辑:我刚刚意识到我可能应该为此使用开放式排水管,但这个问题仍然适用。

在完成pin的初始化之前,您可以安全地设置pin的状态。设置管脚的状态只是设置一些寄存器ODR中的一些位,在未配置管脚的情况下,ODR不会执行任何操作

是的,您应该使用开放式排水模式


请注意,这不适用于RCC初始化,因为在RCC中启用时钟之前,您无法修改GPIO寄存器。

您可以在完成引脚初始化之前安全地设置引脚状态。设置管脚的状态只是设置一些寄存器ODR中的一些位,在未配置管脚的情况下,ODR不会执行任何操作

是的,您应该使用开放式排水模式

请注意,这不适用于RCC初始化,因为在RCC中启用时钟之前,无法修改GPIO寄存器