完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
根据STM32L431手册,“具有从待机/关机唤醒能力的I/O为:PA0,PC13,PE6,PA2,PC5。” L431没有PE端口,那么就有PA0,PC13,PA2,PC5,想把这四个脚都配置成关机模式下WAKEUP唤醒,根据官方例程序。(所有资料都是配置的PA0)。
代码如下: GPIO_InitStruct.Pin = EXti0_Pin|EXTI2_Pin; //PA0,PA2GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(GPIOA, GPIO_InitStruct); HAL_PWREx_DisableGPIOPullUp(PWR_GPIO_A, PWR_GPIO_BIT_0|PWR_GPIO_BIT_2);HAL_PWREx_EnablePullUpPullDownConfig(); HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1); //PA0HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN4); // PA2 __HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB); // 清除待机标志__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); // 清除全部wakeup pin标志HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1_LOW); // wakeup pin 1 PA0HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN4_LOW); // PA2 (按照手册上的顺序和Cubemx配置 PA2为WAKEUP_PIN4) 这样的配置,PA0能在低电平唤醒,但PA2无法唤醒。有用过这几个脚唤醒的吗?能否指点下,谢谢 |
|
相关推荐
1个回答
|
|
在STM32L431RCT6中,您想要使用四个GPIO引脚(PA0, PC13, PA2, PC5)在关机模式下作为唤醒源。首先,我们需要了解STM32L431的数据手册,以确保这些引脚确实支持关机模式下的唤醒功能。
根据STM32L431的数据手册,具有从待机/关机唤醒能力的I/O为:PA0,PC13,PE6,PA2,PC5。但是,您提到L431没有PE端口,所以我们可以忽略PE6。现在我们需要配置PA0, PC13, PA2, 和 PC5。 以下是配置这些引脚的步骤: 1. 配置GPIO引脚模式和上拉/下拉电阻: 在您的代码中,您已经配置了PA0和PA2。现在我们需要添加PC13和PC5的配置。 ```c GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_2; // PA0, PA2 GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(GPIOA, GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_13; // PC13 GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(GPIOC, GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_5; // PC5 GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(GPIOC, GPIO_InitStruct); ``` 2. 禁用GPIO上拉电阻: 使用HAL_PWREx_DisableGPIOPullUp函数禁用PA0和PA2的上拉电阻。 ```c HAL_PWREx_DisableGPIOPullUp(PWR_GPIO_A, PWR_GPIO_BIT_0 | PWR_GPIO_BIT_2); ``` 3. 配置EXTI中断: 配置EXTI中断,以便在这些引脚上的事件触发时唤醒MCU。 ```c EXTI_HandleTypeDef EXTI_InitStruct; EXTI_InitStruct.Line = EXTI_LINE_0; // PA0 EXTI_InitStruct.Type = EXTI_TYPE_EDGE; EXTI_InitStruct.Mode = EXTI_MODE_INTERRUPT; HAL_EXTI_Init(&EXTI_InitStruct); EXTI_InitStruct.Line = EXTI_LINE_2; // PA2 HAL_EXTI_Init(&EXTI_InitStruct); EXTI_InitStruct.Line = EXTI_LINE_13; // PC13 HAL_EXTI_Init(&EXTI_InitStruct); EXTI_InitStruct.Line = EXTI_LINE_5; // PC5 HAL_EXTI_Init(&EXTI_InitStruct); ``` 4. 配置NVIC(可选): 如果需要处理中断,您可能需要配置NVIC以允许中断。 5. 进入关机模式: 使用HAL_PWR_EnterSLEEPMode函数使MCU进入关机模式。 ```c HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI); ``` 请注意,这些步骤仅提供了一个基本的配置示例。您可能需要根据您的具体需求进行调整。在实际应用中,您可能还需要考虑其他因素,如电源管理、时钟设置等。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1777 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1080 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1678 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
595浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
554浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 12:01 , Processed in 0.717963 second(s), Total 49, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号