硬件介绍
本期使用到的硬件是一个贴片式的大头三脚拨轮开关,这个开关可以当三个按键使。通常可以用于切换界面,调节数值等等。
控制原理
这个款式的拨轮开关,默认为低电平,当你拨动它的时候,电平状态为高电平。分别又三个档,上拨、点击和下拨。
代码实现
STM32Cubemx配置
拨轮按键的三个引脚分别连接到,KEY1=PD2,KEY2=PB3,KEY3=PB4
key.c
#include "key.h"
extern uint8_t Sensor_Page1_Flag;
extern uint8_t Sensor_Page2_Flag;
extern int page1_initialized; // 静态变量,只在第一次调用时初始化为 0
extern int page2_initialized; // 静态变量,只在第一次调用时初始化为 0
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == KEY1_Pin)
{
HAL_GPIO_TogglePin(BLED_GPIO_PORT, BLED_GPIO_PIN);
if(Sensor_Page1_Flag == 1 && Sensor_Page2_Flag == 0)
{
Sensor_Page1_Flag = 0;
Sensor_Page2_Flag = 1;
page2_initialized = 0;
}
}
if(GPIO_Pin == KEY2_Pin)
{
HAL_GPIO_TogglePin(GLED_GPIO_PORT, GLED_GPIO_PIN);
Toggle_Door();
}
if(GPIO_Pin == KEY3_Pin)
{
HAL_GPIO_TogglePin(RLED_GPIO_PORT, RLED_GPIO_PIN);
if(Sensor_Page1_Flag == 0 && Sensor_Page2_Flag == 1)
{
Sensor_Page1_Flag = 1;
Sensor_Page2_Flag = 0;
page1_initialized = 0;
}
}
}
key.h
#ifndef __KEY_H
#define __KEY_H
#include "main.h"
#endif
我用夸克网盘给你分享了「SmartHom...iyun」,点击链接或复制整段内容,打开「夸克APP」即可获取。 /~1d17370YmM~:/ 链接:https://pan.quark.cn/s/abc9f4d05103?pwd=1KdH 提取码:1KdH