本实验程序基于标准例程-HAL库版本ALIENTEK MINISTM32 实验11 TFT LCD液晶显示实验
引言:在正点原子提供的待机程序WKUP文件代码太复杂,对于只想实现待机功能的小白们,过于烧脑,所以在看了大量资料的前提下写出了简单的只需按下KEY0键实现待机,这个功能实现了,那么就可以写出很多关于待机的功能,例如开机3分钟进入待机等等。
实现的功能为:按下MiniSTM32开发板的KEY0进入待机模式
按下MiniSTM32的WK_UP唤醒。
注意:本实验需要在实验11 TFT LCD液晶显示实验文件里面移植KEY文件夹
本实验只需要更改main主函数的代码即可。
实验代码:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "key.h"
int main(void)
{
u8 key=0;
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(RCC_PLL_MUL9); //设置时钟,72M
delay_init(72); //初始化延时函数
uart_init(115200); //初始化串口
LED_Init(); //初始化LED
LCD_Init();
KEY_Init(); //初始化按键
POINT_COLOR=RED;
LCD_ShowString(30,40,200,24,24,"Mini STM32 ^_^");
LCD_ShowString(30,70,200,16,16,"TFTLCD TEST");
LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(30,130,200,12,12,"2022/1/18");
while(1){
key=KEY_Scan(0);
if(key==KEY0_PRES){
//待机配置
__HAL_RCC_APB2_FORCE_RESET(); //复位所有IO口
__HAL_RCC_PWR_CLK_ENABLE(); //使能PWR时钟
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); //清除Wake_UP标志
HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1); //设置WKUP用于唤醒
// HAL_PWR_EnableWakeUpPin(ENABLE); //设置闹钟用于唤醒 无闹钟可以注释掉
HAL_PWR_EnterSTANDBYMode(); //进入待机模式
}
}
}
对于实验11 TFT LCD液晶显示实验其他代码不变,这样就可以在TFT LCD模块下添加待机操作。