Job_SignsPads/STM32/Code/STM32F405/Application/key.c

155 lines
4.1 KiB
C
Raw Normal View History

2025-04-22 02:29:37 +00:00
/*
* @Description:
* @Version: 1.0
* @Autor: lzc
* @Date: 2022-09-22 14:48:44
* @LastEditors: lzc
* @LastEditTime: 2024-06-17 10:46:25
*/
#include "main.h"
void AllLedOff(void);
void SC_ready(void);
char NetworkConnectionWay = 0;
char opm_cal_flag = 0; // 光功校准标志位
uint16_t timer_key = 0; // 判断配网按键长按
uint16_t timer_opm_key = 0; // 判断校准按键长按
extern char start_ConnectNet_flg;
void key_optical(void)
{
// Key_Cal_Flag--配网使用
if (Key_Cal_Flag == 0) // 配网成功
{
if (KEY_CAL == RESET) // 判断是key_cal_flg否为低电平
{
AllLedOff();
TIM_Cmd(TIM3, DISABLE); // 使能定时器3
while (KEY_CAL == RESET)
{
timer_key++;
Key_Cal_Flag = 1; // 暂时不进行opm
LED_R = 1;
LED_G = 1;
LED_B = 1;
if (timer_key > 1000) // 20s 上限
{
break;
}
if (timer_key > 100 && timer_key < 500)
{
network_ready();
}
else if (timer_key >= 500)
{
SC_ready(); // 初始化
}
delay_ms(20);
}
// 2-10 正常配网
if (timer_key > 100 && timer_key < 500)
{
timer_key = 0;
start_ConnectNet_flg = 1;
NetworkConnectionWay = 0; // AP配网
delay_ms(500);
USART1_SendData(network, 5); // 配网指令
delay_ms(500);
USART1_SendData(network, 5); // 配网指令
TIM_Cmd(TIM3, DISABLE); // 失能定时器3
}
// 大于10 SC (废弃方案)
// else if (timer_key >= 500)
//{
// timer_key = 0;
// start_ConnectNet_flg = 1;
// NetworkConnectionWay = 1; // SC配网
// USART1_SendData(SC_Cmd, 5); // 配网指令
//}
else
{
timer_key = 0; // 计数清零
Key_Cal_Flag = 0; // 恢复opm
TIM_Cmd(TIM3, ENABLE); // 使能定时器3
}
}
// 光功校准按键按下
if (KEY_WPS == RESET) // 判断是校准按钮否为低电平
{
/*
AllLedOff();
TIM_Cmd(TIM3, DISABLE); // 使能定时器3
while (KEY_WPS == RESET)
{
timer_opm_key++;
Key_Cal_Flag = 1; // 暂时不进行opm
if (timer_opm_key >= 200) // 4s起作用
{
opm_cal_flag = 1;
opm_cal_ready();
timer_opm_key = 0;
break;
}
delay_ms(20);
}
if (timer_opm_key < 200) // 误按此按键
{
timer_opm_key = 0; // 计数清零
Key_Cal_Flag = 0; // 恢复opm
TIM_Cmd(TIM3, ENABLE); // 使能定时器3
}
// else
// {
// timer_opm_key = 0; //计数清零
// Key_Cal_Flag = 0; //恢复opm
// }
*/
}
}
else
{
;
}
}
void network_ready(void)
{
TIM_Cmd(TIM3, DISABLE); // 使能定时器3
Key_Cal_Flag = 1; // 启动配网功能
USART_RX_Length = 0;
wifi_len = 0;
LED_R = 1;
LED_G = 1;
LED_B = 0;
}
void opm_cal_ready(void)
{
TIM_Cmd(TIM3, DISABLE); // 失能定时器3
Optical_Calibration_Value = 0.0f;
wifi_len = 0;
LED_R = 1;
LED_G = 1;
LED_B = 1;
}
void SC_ready(void)
{
TIM_Cmd(TIM3, DISABLE); // 使能定时器3
Key_Cal_Flag = 1; // 启动配网功能
USART_RX_Length = 0;
wifi_len = 0;
LED_R = 0;
LED_G = 1;
LED_B = 0;
printf("SC_ready\r\n");
}
void AllLedOff(void)
{
LED_R = 1;
LED_G = 1;
LED_B = 1;
}