是的HAL_PWREx_EnableGPIOPullUp 这个重启后还是有效,就是PA0一直保持为高,这样PAO不用外接上赖电阻,外部拉低PA0就能唤醒,但是PA0拉低后一直反复重启,感觉stm32L431这儿有bug,测试了很久。拉低PA0后一直重启,按道理PA0下降沿只会重启一次。wakup标志已经清楚,完全参照STM32L432的官方代码,用在stm32L431上就不行了。stm32官方没有出431的例程。stm32L432例程路径
STM32CubeRepositorySTM32Cube_FW_L4_V1.17.2ProjectsNUCLEO-L432KCExamplesPWRPWR_STANDBYMDK-ARM
以下是rt studio中的应用代码,Pa0拉低后无限重启,真是个神奇的问题,现象录屏
int main(void)
{
LOG_D("Hello RT-Thread!pppppp");
/*先禁用一下
HAL_GPIO_DeInit(GPIOA,GPIO_PIN_0);
HAL_PWREx_DisableGPIOPullUp(PWR_GPIO_A, PWR_GPIO_BIT_0);
HAL_PWREx_DisablePullUpPullDownConfig();
*/
//禁不禁用效果都一样
__HAL_RCC_PWR_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStructure;
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitStructure.Pin = GPIO_PIN_0;
GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
GPIO_InitStructure.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
HAL_PWREx_EnableGPIOPullUp(PWR_GPIO_A, PWR_GPIO_BIT_0);
HAL_PWREx_EnablePullUpPullDownConfig();
/* Disable used wakeup source: PWR_WAKEUP_PIN1 */
HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1);
/* Clear all related wakeup flags */
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
/* Enable wakeup pin WKUP1 */
HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1_LOW);
// /* Enter the Standby mode */
HAL_PWR_EnterSTANDBYMode();
return RT_EOK;
}
是的HAL_PWREx_EnableGPIOPullUp 这个重启后还是有效,就是PA0一直保持为高,这样PAO不用外接上赖电阻,外部拉低PA0就能唤醒,但是PA0拉低后一直反复重启,感觉stm32L431这儿有bug,测试了很久。拉低PA0后一直重启,按道理PA0下降沿只会重启一次。wakup标志已经清楚,完全参照STM32L432的官方代码,用在stm32L431上就不行了。stm32官方没有出431的例程。stm32L432例程路径
STM32CubeRepositorySTM32Cube_FW_L4_V1.17.2ProjectsNUCLEO-L432KCExamplesPWRPWR_STANDBYMDK-ARM
以下是rt studio中的应用代码,Pa0拉低后无限重启,真是个神奇的问题,现象录屏
int main(void)
{
LOG_D("Hello RT-Thread!pppppp");
/*先禁用一下
HAL_GPIO_DeInit(GPIOA,GPIO_PIN_0);
HAL_PWREx_DisableGPIOPullUp(PWR_GPIO_A, PWR_GPIO_BIT_0);
HAL_PWREx_DisablePullUpPullDownConfig();
*/
//禁不禁用效果都一样
__HAL_RCC_PWR_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStructure;
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitStructure.Pin = GPIO_PIN_0;
GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
GPIO_InitStructure.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
HAL_PWREx_EnableGPIOPullUp(PWR_GPIO_A, PWR_GPIO_BIT_0);
HAL_PWREx_EnablePullUpPullDownConfig();
/* Disable used wakeup source: PWR_WAKEUP_PIN1 */
HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1);
/* Clear all related wakeup flags */
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
/* Enable wakeup pin WKUP1 */
HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1_LOW);
// /* Enter the Standby mode */
HAL_PWR_EnterSTANDBYMode();
return RT_EOK;
}
举报