Job_SignsPads/STM32/Code/STM32-IAP/Application/wificom.c
2025-04-22 10:29:37 +08:00

104 lines
2.2 KiB
C

#include "main.h"
uint32_t BlockNbr = 0, UserMemoryMask = 0;
__IO uint32_t FlashProtection = 0;
uint8_t wifi_frame_flg = 0;
uint32_t wifi_len = 0;
uint16_t wifi_signs_len = 13;
uint8_t wifi_opm_buf[1700]; //全部数据
float value_buf[512];
uint8_t wifi_signs_buf[17]; //体征数据
uint64_t timeclock_count = 0;
uint8_t TimeClock_Flag = 0;
uint8_t get_time_buf[13] = {0xA5, 0x5A, 0x0D, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
void do_version(void)
{
// wifi_crc_send(version, 8);
}
/**
* @brief 处理系统命令
* @param void
* @retval void
*/
void wifi_cmd_exe(void)
{
unsigned char pMem[8];
uint64_t *p;
if (USART1_RX_STA & 0x8000) //串口接收完成
{
switch (USART1_RX_BUF[4])
{
case 0x10: //升级请求
// do_upgrade();
break;
case 0x13: //版本号请求
do_version(); //升级
break;
case 0x20:
TIM_Cmd(TIM3, ENABLE); //使能定时器3
pMem[0] = USART1_RX_BUF[5];
pMem[1] = USART1_RX_BUF[6];
pMem[2] = USART1_RX_BUF[7];
pMem[3] = USART1_RX_BUF[8];
pMem[4] = USART1_RX_BUF[9];
pMem[5] = USART1_RX_BUF[10];
pMem[6] = USART1_RX_BUF[11];
pMem[7] = USART1_RX_BUF[12];
p = (uint64_t *)pMem;
timeclock_count = *p;
TimeClock_Flag = 1;
USART1_RX_BUF[0] = 0x00; //清除头
LED_G = 1;
LED_G = 1;
LED_B = 1;
break;
case 0x0A: // wifi发的东西
USART1_RX_BUF[0] = 0x00; //清除头
break;
case 0x0C: // 配网
if (Key_Cal_Flag == 1) //配网中才进
{
if (USART1_RX_BUF[5] == 01) //开始配网
{
LED_G = 1;
LED_B = 0;
delay_ms(200);
}
else if (USART1_RX_BUF[5] == 02) //配网成功
{
delay_ms(200);
NVIC_SystemReset(); //复位
}
else if (USART1_RX_BUF[5] == 03) //制造商成功
{
Key_Cal_Flag = 0;
LED_B = 1;
LED_G = 0;
delay_ms(200);
}
}
else if (Key_Cal_Flag == 0) //刚启动检测
{
if (USART1_RX_BUF[5] == 01) //开始配网
{
Key_Cal_Flag = 1;
delay_ms(200);
}
else if (USART1_RX_BUF[5] == 02) //配网成功
{
delay_ms(200);
}
}
break;
case 0xFF: //
NVIC_SystemReset();
break;
default:
break;
}
USART1_RX_STA = 0; //状态寄存器清空
}
}