stm32l431 WKUPx引脚唤醒待机模式 完整代码案例
时间: 2023-07-23 20:32:55 浏览: 122
以下是一个简单的示例代码,演示如何使用WKUPx引脚唤醒STM32L431微控制器的待机模式:
```c
#include "stm32l4xx.h"
int main(void)
{
// 1. 初始化WKUP引脚为输入模式
RCC->AHB2ENR |= RCC_AHB2ENR_GPIOCEN; // 使能GPIOC时钟
GPIOC->MODER &= ~GPIO_MODER_MODE13; // PC13引脚设置为输入模式
// 2. 配置待机模式下唤醒的事件
PWR->CR1 |= PWR_CR1_DBP; // 允许修改PWR寄存器
PWR->CSR1 |= PWR_CSR1_EWUP1; // 使能WKUP1引脚唤醒待机模式
PWR->CR1 &= ~PWR_CR1_DBP; // 禁止修改PWR寄存器
// 3. 进入待机模式
SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; // 进入深度睡眠模式
__WFI(); // 等待中断唤醒
while (1);
}
```
在上述代码中,首先将WKUP引脚(PC13)配置为输入模式,然后通过PWR寄存器配置使能WKUP1引脚唤醒待机模式。最后,通过设置SCB寄存器进入深度睡眠模式,并通过`__WFI()`函数等待外部事件唤醒,例如WKUP引脚的电平变化。
请注意,为了使WKUP引脚能够唤醒待机模式,还需要配置相应的硬件电路,例如将WKUP引脚连接到复位电路或者RTC电路。
阅读全文