STM32F4上的按键开关WK_UP 引脚为PA0 按键按下后,保持为高电平,因此会设置为下拉输入 实验到目前的规律:若器件外部接地,则为上拉,若外部接高电平,则为下拉 读取IO口输入电平调用库函数为: uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) 读取IO口输入电平操作寄存器为: GPIOx_IDR...
GPIO_Pin_4)//(宏定义:读取按键0的端口和引脚的电平,并用KEY0表示)#define KEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)//(读取按键1的端口和引脚的电平,并用KEY1表示)#define WK_UP GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)//(读取按键up的端口和引脚的电平,并用WK_UP表示)#define KEY0_PRES ...
待机唤醒方式有很多种,我们选择 WK_UP 引脚(PA0)上升沿来退出待机模式。在库函数中,设置使能 WK_UP 用于唤醒 CPU 待机模式的函数是: PWR_WakeUpPinCmd(ENABLE); 因为按键 K_UP 连接在PA0 管脚上,并且是高电平有效,这样一来就可以使用 K_UP按键来退出待机模式。 (3)进入待机模式 进入待机模式, 首先要设置...
设置WK_UP引脚作为唤醒源。调用函数:PWR_WakeUpPinCmd(ENABLE); 进入待机模式。调用函数:void PWR_EnterSTANDBYMode(void),执行设置SLEEPDEEP位,设置PDDS位,执行WFI指令。 #defineWKUP_KD PAin(0)//PA0 检测是否外部WK_UP按键按下 void Sys_Standby(void) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENAB...
2、设置 WK_UP 引脚作为唤醒源。 代码语言:javascript 复制 PWR_WakeUpPinCmd(ENABLE);//使能唤醒管脚功能 3、设置 SLEEPDEEP 位,设置 PDDS 位,执行 WFI 指令,进入待机模式。 代码语言:javascript 复制 PWR_EnterSTANDBYMode(void); 4、最后编写 WK_UP 中断函数。
以WK UP按键为例。当WK UP被按下时,其对应的引脚PA0会变为高电平。此时检测PA0的输入电平,如果确实是低电平,则说明WK UP可能被按下。说可能是因为PA0为低电平不一定是WK UP按下造成,也可能是抖动,所以这里就需要消抖操作。这里的消抖操作比较简单粗暴,直接延时10ms看该引脚是否依旧是低电平。如果延时10ms后...
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); ②设置WK_UP引脚作为唤醒源。 设置PWR_CSR的EWUP位,使能WK_UP用于将CPU从待机模式唤醒。 PWR_WakeUpPinCmd(ENABLE); //使能唤醒管脚功能 ③设置SLEEPDEEP位,设置PDDS位,执行WFI指令,进入待机模式。 voidPWR_EnterSTANDBYMode(void);...
待机唤醒方式有很多种,我们选择 WK_UP 引脚(PA0)上升沿来退出待机模式。在库函数中,设置使能 WK_UP 用于唤醒 CPU 待机模式的函数是: PWR_WakeUpPinCmd(ENABLE); 因为按键 K_UP 连接在PA0 管脚上,并且是高电平有效,这样一来就可以使用 K_UP按键来退出待机模式。
三、硬件引脚图 OLED模块: VCC --> 3.3V GND --> GND SCL --> PB10 SDA --> PB11 DHT11模块: DATA --> PB9 VCC --> 3.3V GND --> GND KEY模块(这部分笔者直接使用了正点原子精英板上的): KEY0 --> PE4 KEY1 --> PE3 KEY_UP --> PA0 ...
一个按键上拉,高电平有效此处先不管WK_UP,也就是其余三个按键在按下的一瞬间均会产生一个下降沿,所以引脚应该配置成下降沿触发的中断 另外找到芯片对应的引脚号,LED分别是PF9、PF10,按键是PE2 二话不说,把PF9、PF10配置成GPIO_Output,把PE2配置成GPIO_EXIT2也就是外部中断模式,这里的2是指该GPIO是挂载在...