本帖最后由 kepe 于 2024-6-1 08:45 编辑
示例代码
以下是进入STOP模式的代码示例,参考自STM32Cube_FW_U0_V1.0.0\Projects\NUCLEO-U083RC\Examples\PWR中的demo。
初始化代码
c
#include "main.h"
// 初始化系统时钟
void SystemClock_Config(void)
{
// 根据具体的STM32型号配置系统时钟
}
// 初始化GPIO
void GPIO_Init(void)
{
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
// 配置按键引脚
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// 启用并设置按键中断优先级
HAL_NVIC_SetPriority(EXTI0_IRQn, 2, 0);
HAL_NVIC_EnableIRQ(EXTI0_IRQn);
}
// 按键中断处理函数
void EXTI0_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
}
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if (GPIO_Pin == GPIO_PIN_0)
{
// 切换低功耗模式
if (mode == 0)
{
EnterSTOPMode();
}
else if (mode == 1)
{
EnterLowPowerRunMode();
}
}
}
|