zack 1 年之前
父节点
当前提交
bc1c602486
共有 12 个文件被更改,包括 4067 次插入3638 次删除
  1. 56 24
      Core/Inc/ConfigMacros.h
  2. 9 1
      Core/Inc/interface.h
  3. 14 1
      Core/Inc/mba32a.h
  4. 13 0
      Core/Inc/oledfont.h
  5. 36 15
      Core/Src/freertos.c
  6. 401 382
      Core/Src/interface.c
  7. 29 36
      Core/Src/key.c
  8. 10 9
      Core/Src/main.c
  9. 382 100
      Core/Src/mba32a.c
  10. 2 3
      Core/Src/usart.c
  11. 1 6
      MDK-ARM/dtu.uvoptx
  12. 3114 3061
      Output/dtu.hex

+ 56 - 24
Core/Inc/ConfigMacros.h

@@ -5,39 +5,59 @@
 #include "key.h"
 #include "key.h"
 #include "interface.h"
 #include "interface.h"
 
 
+/**
+  * @breaf 定义测试开关
+  */
+#define		Test_old			0					//演示入口
+#define  	keyDebuginfo		1
+
 
 
 /**
 /**
   * @breaf 简化函数单体
   * @breaf 简化函数单体
   */
   */
 #define open16			11	//开字
 #define open16			11	//开字
 #define close16			12	//关字
 #define close16			12	//关字
-
 #define resetDevAddr					((uint32_t)0x8075000)  
 #define resetDevAddr					((uint32_t)0x8075000)  
 #define TIM_Start(htim) 				HAL_TIM_Base_Start_IT(htim)
 #define TIM_Start(htim) 				HAL_TIM_Base_Start_IT(htim)
 #define LED_TOGGLE(pin)       			HAL_GPIO_TogglePin(GPIOC, (pin))		//运行灯
 #define LED_TOGGLE(pin)       			HAL_GPIO_TogglePin(GPIOC, (pin))		//运行灯
 #define UART_PRINT(huart) 				HAL_UART_Transmit(huart, (uint8_t *)&ch, 1, 0xFFFF);
 #define UART_PRINT(huart) 				HAL_UART_Transmit(huart, (uint8_t *)&ch, 1, 0xFFFF);
 #define PRINT_MENU_STATUS(key)  		printf("--->%s pressed\t%d   %d   %d   %d\n", key, menu.current, menu.up, menu.next, menu.enter)
 #define PRINT_MENU_STATUS(key)  		printf("--->%s pressed\t%d   %d   %d   %d\n", key, menu.current, menu.up, menu.next, menu.enter)
 #define HELLO(message) 					printf("%s\r\n", message)
 #define HELLO(message) 					printf("%s\r\n", message)
+#define PRINT_UUID(message) 			printf("#%s符合设置项\n",message)
+#define PRINT_NUUID(message) 			printf("%s不符合\n",message)
+#define RXNE_UART(huart) 				__HAL_UART_ENABLE_IT(huart, UART_IT_RXNE)	
 
 
+#define RESET_BT_MODULE_demo() \
+    if(resetBTmodule) { \
+        MBA32A_Init_demo(); \
+    }
+	
+#define RESET_BT_MODULE() \
+    if(resetBTmodule) { \
+        MBA32A_Init(); \
+    }	
 
 
 /**
 /**
   * @breaf 简化函数多体
   * @breaf 简化函数多体
   */
   */
+/* OLED显示 */
 #define OLED_DISPLAY(color, display) do { \
 #define OLED_DISPLAY(color, display) do { \
     OLED_Init(); \
     OLED_Init(); \
     OLED_ColorTurn(color); \
     OLED_ColorTurn(color); \
     OLED_DisplayTurn(display);  \
     OLED_DisplayTurn(display);  \
 } while(0)
 } while(0)
 
 
+/* 设置键值 */
 #define SET_MENU_STATUS(current_value, up_value, next_value, enter_value) \
 #define SET_MENU_STATUS(current_value, up_value, next_value, enter_value) \
 do { \
 do { \
     menu.current = current_value; \
     menu.current = current_value; \
     menu.up = up_value; \
     menu.up = up_value; \
     menu.next = next_value; \
     menu.next = next_value; \
     menu.enter = enter_value; \
     menu.enter = enter_value; \
-		refresh = true;\
+	refresh = true;\
 } while(0)
 } while(0)
 
 
+/* WDI */
 #define TOGGLE_WDI_PIN(htim_instance) \
 #define TOGGLE_WDI_PIN(htim_instance) \
 do { \
 do { \
     if ((htim_instance)->Instance == TIM2) { \
     if ((htim_instance)->Instance == TIM2) { \
@@ -45,6 +65,7 @@ do { \
     } \
     } \
 } while(0)
 } while(0)
 
 
+/* 扫描按键刷新屏幕 */
 #define UPDATE_EXECUTE_REFRESH() \
 #define UPDATE_EXECUTE_REFRESH() \
 do { \
 do { \
     updatekeystate(); \
     updatekeystate(); \
@@ -52,29 +73,27 @@ do { \
     OLED_Refresh(); \
     OLED_Refresh(); \
 } while(0)
 } while(0)
 
 
-#define IDLE_DMA_UART(huart) do {\
-                                    __HAL_UART_ENABLE_IT(huart, UART_IT_IDLE); \
-                                    HAL_UART_Receive_DMA(huart, recvBuff, 2048); \
-                                } while(0)
-
-#define RXNE_UART(huart) __HAL_UART_ENABLE_IT(huart, UART_IT_RXNE)
-								
-#define RESET_BT_MODULE() \
-    if(resetBTmodule) { \
-        MBA32A_Init(); \
-    }
-	
-/**
-  * @breaf 定义测试开关
-  */
-#define		Test_old			1					//前期测试
-#define  	keyDebuginfo		1
+/* U1-U4 DMA */
+#define IDLE_DMA_UART(huart) \
+do {\
+	__HAL_UART_ENABLE_IT(huart, UART_IT_IDLE); \
+	HAL_UART_Receive_DMA(huart, recvBuff, 2048); \
+} while(0)
 
 
+/* 蓝牙参数初始化(流水号/dtu1/自动施封时间) */	
+#define INIT_BT_FRAME() \
+do { \
+	btframe.serialNum = 0x00000001; \
+	btframe.userId 	  = 0x64747531; \
+	btframe.Autoseal  = 0x01; \
+	printf("\t\tBTinit%d...\r\n", resetcount); \
+} while (0)
 
 
 
 
 /**
 /**
   * @breaf 结构体定义
   * @breaf 结构体定义
   */
   */
+/* 界面参数结构体 */	
 typedef struct
 typedef struct
 {
 {
     uint8_t current;		//当前状态索引号
     uint8_t current;		//当前状态索引号
@@ -86,7 +105,7 @@ typedef struct
 	
 	
 } Menu_table;
 } Menu_table;
 
 
-
+/* 按键参数结构体 */	
 struct keys
 struct keys
 {
 {
 	unsigned char judge_sta;	//判断按键按键按下的动作到了第几步
 	unsigned char judge_sta;	//判断按键按键按下的动作到了第几步
@@ -94,15 +113,28 @@ struct keys
 	bool key_flag;				//如果确认被按下,为1
 	bool key_flag;				//如果确认被按下,为1
 };
 };
 
 
+/* 蓝牙锁信息帧参数结构体 */	
 typedef struct
 typedef struct
 {
 {
     uint32_t serialNum;	//4字节流水号
     uint32_t serialNum;	//4字节流水号
-		uint32_t userId;	 	//4字节userid
-		uint32_t Ntime;			//4字节时间
-		uint8_t	 Autoseal;	//1字节自动施封
+	uint32_t userId;	//4字节userid
+	uint32_t Ntime;		//4字节时间
+	uint8_t	 Autoseal;	//1字节自动施封
 	
 	
-} Bt_frame;
+} BtFrame;
+
 
 
+typedef enum {
+	BtStepDefault = 0,
+    UUIDS = 1,
+    UUIDN = 2,
+    UUIDW = 3,
+} BtStep;
 
 
+typedef enum {
+    Default = 0,
+    InProgress = 1,
+	Abnormal_motor = 2
+} TipsFlag;
 
 
 #endif /*__CONFIGMACROS_H*/
 #endif /*__CONFIGMACROS_H*/

+ 9 - 1
Core/Inc/interface.h

@@ -5,6 +5,14 @@
 
 
 void asc_display(unsigned char *asc);
 void asc_display(unsigned char *asc);
 
 
-	
+
+
+extern bool startdtu;					//声明外部启动界面切换标志位
+extern bool L1bd;		
+extern bool L2bd;		
+extern bool L3bd;		
+extern bool L4bd;		
+
+extern bool refresh;		
 #endif /*__INTERFACE_H*/
 #endif /*__INTERFACE_H*/
 
 

+ 14 - 1
Core/Inc/mba32a.h

@@ -5,11 +5,24 @@
 
 
 extern uint8_t g_MBA32A_8buf[1024];
 extern uint8_t g_MBA32A_8buf[1024];
 extern uint8_t g_MBA32A_8buf_Down[1024];
 extern uint8_t g_MBA32A_8buf_Down[1024];
+extern uint8_t dev1[12];
+extern bool BT_CONN;
+extern bool resetBTmodule;
+
+
 
 
 void workinfo_W(void);
 void workinfo_W(void);
 void MBA32A_Init(void);
 void MBA32A_Init(void);
+void MBA32A_Init_demo(void);
 void lock_searchInfo(void);
 void lock_searchInfo(void);
 void Scan_lock_status(void);
 void Scan_lock_status(void);
-void Seal_Unseal(void);
+void Seal_Unseal_Jumptips(void);
+
+void Bt_MacScan(char *pCmd);
+void open_close_lock(void);
+
+
+void Bt_Connection(void);
+void tips(void);
 #endif /*__MBA32A_H*/
 #endif /*__MBA32A_H*/
 
 

+ 13 - 0
Core/Inc/oledfont.h

@@ -469,6 +469,11 @@ const unsigned char Hzk5[][24]={	//12*12
 {0xDC,0xB3,0x08,0x80,0xFE,0x2A,0xEA,0x2B,0xEA,0x2A,0xEE,0x00,0x04,0x04,0x02,0x00,0x0F,0x01,0x07,0x01,0x07,0x09,0x0F,0x00},/*"编",15*/
 {0xDC,0xB3,0x08,0x80,0xFE,0x2A,0xEA,0x2B,0xEA,0x2A,0xEE,0x00,0x04,0x04,0x02,0x00,0x0F,0x01,0x07,0x01,0x07,0x09,0x0F,0x00},/*"编",15*/
 {0x64,0x5C,0xF7,0x44,0x10,0xF7,0x55,0x55,0x55,0xF7,0x10,0x00,0x02,0x02,0x0F,0x01,0x04,0x07,0x05,0x05,0x05,0x0F,0x02,0x00},/*"辑",16*/
 {0x64,0x5C,0xF7,0x44,0x10,0xF7,0x55,0x55,0x55,0xF7,0x10,0x00,0x02,0x02,0x0F,0x01,0x04,0x07,0x05,0x05,0x05,0x0F,0x02,0x00},/*"辑",16*/
 	
 	
+{0xFC,0x24,0x24,0x24,0xFF,0x24,0x24,0x24,0xFC,0x00,0x00,0x00,0x03,0x01,0x01,0x01,0x07,0x09,0x09,0x09,0x09,0x08,0x0E,0x00},/*"电",17*/
+{0x88,0x68,0xFF,0x28,0x40,0xFE,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,0x0F,0x08,0x04,0x03,0x00,0x00,0x07,0x08,0x0E,0x00},/*"机",18*/
+{0x00,0x1F,0x25,0xE5,0x25,0x25,0x25,0x25,0xE5,0x27,0x30,0x00,0x01,0x09,0x05,0x03,0x01,0x01,0x01,0x01,0x0F,0x01,0x01,0x00},/*"异",19*/
+{0x0C,0x04,0x75,0x56,0x54,0xD7,0x54,0x56,0x75,0x04,0x0C,0x00,0x00,0x07,0x01,0x01,0x01,0x0F,0x01,0x01,0x05,0x07,0x00,0x00},/*"常",20*/
+	
 };
 };
 
 
 const unsigned char Hzk6[][28]={	//14*14
 const unsigned char Hzk6[][28]={	//14*14
@@ -517,6 +522,14 @@ const unsigned char Hzk7[][54]={	//18*18
 {0x00,0x00,0x00,0xF0,0x10,0x10,0x10,0x10,0x10,0x1E,0xFA,0x10,0x12,0x1C,0xD0,0x90,0x00,0x00,0x00,0x80,0x60,0x1F,0x21,0x21,0x41,0x3F,0x80,0x80,0x43,0x3C,0x38,0x66,0xC1,0x80,0xE0,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00},/*"成",6*/
 {0x00,0x00,0x00,0xF0,0x10,0x10,0x10,0x10,0x10,0x1E,0xFA,0x10,0x12,0x1C,0xD0,0x90,0x00,0x00,0x00,0x80,0x60,0x1F,0x21,0x21,0x41,0x3F,0x80,0x80,0x43,0x3C,0x38,0x66,0xC1,0x80,0xE0,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00},/*"成",6*/
 {0x00,0x00,0x08,0x08,0x08,0xF0,0x08,0x08,0x08,0x20,0x20,0xFF,0x20,0x20,0x20,0xE0,0x00,0x00,0x00,0x00,0x30,0x10,0x10,0x0F,0x08,0x88,0x40,0x20,0x1C,0x03,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00},/*"功",7*/
 {0x00,0x00,0x08,0x08,0x08,0xF0,0x08,0x08,0x08,0x20,0x20,0xFF,0x20,0x20,0x20,0xE0,0x00,0x00,0x00,0x00,0x30,0x10,0x10,0x0F,0x08,0x88,0x40,0x20,0x1C,0x03,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00},/*"功",7*/
 
 
+{0x00,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0xFF,0x84,0x84,0x84,0x84,0x8F,0x80,0xE0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"电",8*/
+{0x00,0x00,0x10,0xD0,0xFF,0x90,0x10,0x00,0x00,0xFC,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,0x18,0x06,0x01,0xFF,0x00,0x81,0x63,0x1C,0x03,0x00,0x00,0x00,0xFF,0x80,0x80,0xE0,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"机",9*/
+{0x00,0x00,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x9E,0xE0,0x80,0x00,0x00,0x00,0x00,0x08,0x88,0x88,0x68,0x1E,0x08,0x08,0x08,0x08,0xFE,0x0A,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00},/*"异",10*/
+{0x00,0x20,0x30,0x08,0x09,0xEA,0x2C,0x28,0x2F,0x29,0x28,0x2C,0xEA,0x08,0x28,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x07,0x05,0x05,0xFE,0x05,0x05,0x05,0x45,0x7C,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"常",11*/
+
+
+{0x00,0x00,0x00,0x00,0xF8,0x88,0x88,0x8C,0x8B,0x88,0x88,0x88,0x88,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00},/*"自",12*/
+{0x00,0x00,0x10,0xE0,0xFF,0x90,0x90,0x50,0x20,0x98,0x87,0x86,0x88,0x90,0x20,0x60,0x00,0x00,0x00,0x08,0x06,0x01,0xFF,0x00,0x03,0x84,0xB8,0x80,0x86,0x98,0xC0,0xB9,0x86,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"检",13*/
 };
 };
 
 
 
 

+ 36 - 15
Core/Src/freertos.c

@@ -42,14 +42,10 @@
 /* USER CODE BEGIN PM */
 /* USER CODE BEGIN PM */
 
 
 extern Menu_table menu;
 extern Menu_table menu;
-extern bool refresh; 
-extern bool BT_CONN;
-extern bool resetBTmodule;
+extern BtFrame btframe;
 
 
-extern bool L1bd;		
-extern bool L2bd;		
-extern bool L3bd;		
-extern bool L4bd;		
+extern bool resetBTmodule;
+extern TipsFlag tipsflag;
 /* USER CODE END PM */
 /* USER CODE END PM */
 
 
 /* Private variables ---------------------------------------------------------*/
 /* Private variables ---------------------------------------------------------*/
@@ -64,7 +60,8 @@ osThreadId loginfoTaskHandle;
 /* USER CODE BEGIN FunctionPrototypes */
 /* USER CODE BEGIN FunctionPrototypes */
 
 
 void execute_interface(Menu_table menu);
 void execute_interface(Menu_table menu);
-
+void close_lock(BtFrame btframe);
+void open_lock(BtFrame btframe);
 /* USER CODE END FunctionPrototypes */
 /* USER CODE END FunctionPrototypes */
 
 
 void StartScanKeyTask(void const * argument);
 void StartScanKeyTask(void const * argument);
@@ -155,7 +152,14 @@ void StartScanKeyTask(void const * argument)
     osDelay(1);
     osDelay(1);
 	UPDATE_EXECUTE_REFRESH();// 更新按键状态,执行界面操作,并刷新OLED
 	UPDATE_EXECUTE_REFRESH();// 更新按键状态,执行界面操作,并刷新OLED
 	workinfo_W();
 	workinfo_W();
+	Scan_lock_status();//扫描状态
+	Seal_Unseal_Jumptips();//施解封跳转tips监测
+	/**扫描重启模块标志位**/	  
+#if Test_old ==1
+	RESET_BT_MODULE_demo();
+#else
 	RESET_BT_MODULE();
 	RESET_BT_MODULE();
+#endif
   }
   }
   /* USER CODE END StartScanKeyTask */
   /* USER CODE END StartScanKeyTask */
 }
 }
@@ -175,9 +179,20 @@ void StarBT4GTask(void const * argument)
   for(;;)
   for(;;)
   {
   {
     osDelay(1);
     osDelay(1);
-	Scan_lock_status();//扫描状态
-	Seal_Unseal();//施解封监测
+	open_close_lock();//执行施解封操作
+	  
+#if Test_old ==1
 
 
+#else
+	if(tipsflag!=Default)
+	{
+		if(tipsflag==InProgress)
+		{
+			HAL_Delay(1500);
+			SET_MENU_STATUS(7, 3, 0, 2);
+		}
+	}
+#endif
   }
   }
   /* USER CODE END StarBT4GTask */
   /* USER CODE END StarBT4GTask */
 }
 }
@@ -197,8 +212,8 @@ void StartTestTask(void const * argument)
   for(;;)
   for(;;)
   {
   {
     osDelay(1);
     osDelay(1);
-
-	}
+	  
+  }
   /* USER CODE END StartTestTask */
   /* USER CODE END StartTestTask */
 }
 }
 
 
@@ -216,12 +231,18 @@ void StartloginfoTaskTask(void const * argument)
   for(;;)
   for(;;)
   {
   {
     osDelay(1000);
     osDelay(1000);
-	if (BT_CONN && (L1bd || L2bd || L3bd || L4bd) && (menu.current < 8 || menu.current > 11))//连接后轮询
+#if Test_old == 1
+	if (BT_CONN && (L1bd || L2bd || L3bd || L4bd) && (menu.current < 8 || menu.current > 11) && (tipsflag==Default))//连接后轮询
 	{
 	{
 		lock_searchInfo();
 		lock_searchInfo();
 	}
 	}
-		
-
+#else
+	//Bt_MacScan("AT+SCAN=1\r\n");
+	if (BT_CONN && (L1bd || L2bd || L3bd || L4bd) && (menu.current < 8 || menu.current > 11) && (tipsflag==Default))//连接后轮询
+	{
+		lock_searchInfo();
+	}
+#endif
   }
   }
   /* USER CODE END StartloginfoTaskTask */
   /* USER CODE END StartloginfoTaskTask */
 }
 }

+ 401 - 382
Core/Src/interface.c

@@ -3,21 +3,15 @@
 
 
 
 
 
 
-/**
-  * @breaf 外部声明
-  */
-extern bool BT_CONN;
-extern bool L1bd;
-
 /**
 /**
   * @breaf 本界面定义变量
   * @breaf 本界面定义变量
   */
   */
 Menu_table menu;						//结构体
 Menu_table menu;						//结构体
 bool refresh=false; 					//全局oled刷新标志位
 bool refresh=false; 					//全局oled刷新标志位
-bool startdtu=false; 					
+bool startdtu=false; 									
 unsigned char start_dtu_C[]="DTU start ...";
 unsigned char start_dtu_C[]="DTU start ...";
 unsigned char CHOOSE[]  = "<--";
 unsigned char CHOOSE[]  = "<--";
-
+TipsFlag tipsflag;
 
 
 
 
 /**
 /**
@@ -30,7 +24,7 @@ void SNbinding(void);			//02
 void chooseBt(void);			//03 04 05 06
 void chooseBt(void);			//03 04 05 06
 void setLock(void);				//07
 void setLock(void);				//07
 void workSet(Menu_table menu);	//08 09 0a 0b
 void workSet(Menu_table menu);	//08 09 0a 0b
-
+void tips(void);
 
 
 /**
 /**
   * @breaf freertos界面跳转函数
   * @breaf freertos界面跳转函数
@@ -45,11 +39,12 @@ void execute_interface(Menu_table menu)
 	
 	
 	if (menu.current == 0)				
 	if (menu.current == 0)				
 	{
 	{
+		tipsflag = Default;
 		if(startdtu)
 		if(startdtu)
 		{
 		{
 			asc_display(start_dtu_C);
 			asc_display(start_dtu_C);
 		}
 		}
-		else if(BT_CONN)
+		else if(BT_CONN && (tipsflag==Default))
 		{
 		{
 			home(menu.home);
 			home(menu.home);
 		}
 		}
@@ -68,7 +63,7 @@ void execute_interface(Menu_table menu)
 	}
 	}
 	else if (menu.current >= 3 && menu.current <= 6) 
 	else if (menu.current >= 3 && menu.current <= 6) 
 	{
 	{
-			chooseBt();
+		chooseBt();
 	}
 	}
 	else if (menu.current == 7)		
 	else if (menu.current == 7)		
 	{
 	{
@@ -79,6 +74,11 @@ void execute_interface(Menu_table menu)
 	{
 	{
 		workSet(menu);
 		workSet(menu);
 	}
 	}
+	else if(menu.current == 0x0c)
+	{
+		//tips
+		tips();		  //tips监测
+	}
 
 
 }
 }
 
 
@@ -143,19 +143,19 @@ void SNbinding(void)
 	OLED_ShowChinese(55,47,16,14,1);//绑
 	OLED_ShowChinese(55,47,16,14,1);//绑
 	OLED_ShowChinese(75,47,17,14,1);//定
 	OLED_ShowChinese(75,47,17,14,1);//定
 
 
-	if(menu.up==4 && menu.next==0)
+	if(menu.up==3 && menu.next==0)
 	{	
 	{	
 		OLED_ShowString(100,2,CHOOSE,16,0); //L1
 		OLED_ShowString(100,2,CHOOSE,16,0); //L1
 	}
 	}
-	else if(menu.up==3 && menu.next==1)
+	else if(menu.up==2 && menu.next==1)
 	{	
 	{	
 		OLED_ShowString(100,17,CHOOSE,16,0);//L2
 		OLED_ShowString(100,17,CHOOSE,16,0);//L2
 	}
 	}
-	else if(menu.up==2 && menu.next==2)
+	else if(menu.up==1 && menu.next==2)
 	{	
 	{	
 		OLED_ShowString(100,32,CHOOSE,16,0);//L3
 		OLED_ShowString(100,32,CHOOSE,16,0);//L3
 	}
 	}
-	else if(menu.up==1 && menu.next==3)
+	else if(menu.up==0 && menu.next==3)
 	{	
 	{	
 		OLED_ShowString(100,47,CHOOSE,16,0);//L4
 		OLED_ShowString(100,47,CHOOSE,16,0);//L4
 	}
 	}
@@ -175,6 +175,7 @@ void chooseBt(void)
 {
 {
 	if(menu.current==3)
 	if(menu.current==3)
 	{
 	{
+		#if Test_old == 1
 		uint8_t str[] = "MAC:1010...0003";
 		uint8_t str[] = "MAC:1010...0003";
 		if(menu.enter==4)
 		if(menu.enter==4)
 		{
 		{
@@ -185,6 +186,22 @@ void chooseBt(void)
 		{
 		{
 			OLED_ShowString(0,0,str,16,1);
 			OLED_ShowString(0,0,str,16,1);
 		}
 		}
+		#else
+		OLED_ShowString(0,0,M1,16,1);
+		OLED_ShowString(0,15,M2,16,1);
+		OLED_ShowString(0,30,M3,16,1);
+		OLED_ShowString(0,45,M4,16,1);
+
+		if(menu.enter==4)
+		{
+			OLED_ShowString(32,0,"conn",16,1);
+			Bt_Connection();
+		}
+		//OLED_ShowString(32,0,dev1,16,1);
+//		OLED_ShowString(32,15,dev2,16,1);
+//		OLED_ShowString(32,30,dev3,16,1);
+//		OLED_ShowString(32,45,dev4,16,1);
+		#endif
 		
 		
 	}
 	}
 	else if(menu.current==4)
 	else if(menu.current==4)
@@ -222,19 +239,19 @@ void setLock(void)
 	OLED_ShowChinese(50,47,20,14,1);//操
 	OLED_ShowChinese(50,47,20,14,1);//操
 	OLED_ShowChinese(70,47,21,14,1);//作
 	OLED_ShowChinese(70,47,21,14,1);//作
 
 
-	if(menu.up==4 && menu.next==0)
+	if(menu.up==3 && menu.next==0)
 	{	
 	{	
 		OLED_ShowString(100,2,CHOOSE,16,0); //L1
 		OLED_ShowString(100,2,CHOOSE,16,0); //L1
 	}
 	}
-	else if(menu.up==3 && menu.next==1)
+	else if(menu.up==2 && menu.next==1)
 	{	
 	{	
 		OLED_ShowString(100,17,CHOOSE,16,0);//L2
 		OLED_ShowString(100,17,CHOOSE,16,0);//L2
 	}
 	}
-	else if(menu.up==2 && menu.next==2)
+	else if(menu.up==1 && menu.next==2)
 	{	
 	{	
 		OLED_ShowString(100,32,CHOOSE,16,0);//L3
 		OLED_ShowString(100,32,CHOOSE,16,0);//L3
 	}
 	}
-	else if(menu.up==1 && menu.next==3)
+	else if(menu.up==0 && menu.next==3)
 	{	
 	{	
 		OLED_ShowString(100,47,CHOOSE,16,0);//L4
 		OLED_ShowString(100,47,CHOOSE,16,0);//L4
 	}
 	}
@@ -252,6 +269,7 @@ void workSet(Menu_table menu)
 	OLED_ShowChinese(75,12,1,18,1);//封
 	OLED_ShowChinese(75,12,1,18,1);//封
 	OLED_ShowChinese(55,40,2,18,1);//解
 	OLED_ShowChinese(55,40,2,18,1);//解
 	OLED_ShowChinese(75,40,3,18,1);//封
 	OLED_ShowChinese(75,40,3,18,1);//封
+
 	if(menu.up==1)
 	if(menu.up==1)
 	{	
 	{	
 		OLED_ShowString(93,12,CHOOSE,16,0);//施封
 		OLED_ShowString(93,12,CHOOSE,16,0);//施封
@@ -301,297 +319,301 @@ void home(uint32_t L_s)
 	OLED_ShowString(74,29,L3,12,1);						//L3
 	OLED_ShowString(74,29,L3,12,1);						//L3
 	OLED_ShowString(104,29,L4,12,1);					//L4
 	OLED_ShowString(104,29,L4,12,1);					//L4
 	switch(L_s) {
 	switch(L_s) {
-    case 0x0001:
-    case 0x000F:
-        OLED_ShowString(8,8,NOSETLOCK,12,1);     //L1null
-        OLED_ShowString(38,8,NOSETLOCK,12,1);    //L2null
-        OLED_ShowString(68,8,NOSETLOCK,12,1);    //L3null
-        if(L4bd){
-            if(L_s == 0x0001){
-                OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
-                OLED_ShowChinese(102,46,open16,16,1);    //开
-            } else if(L_s == 0x000F){
-                OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
-                OLED_ShowChinese(102,46,close16,16,1);   //关
-            }
-        }
-        break;
-        
-    case 0x0010:
-    case 0x00F0:
-				OLED_ShowString(8,8,NOSETLOCK,12,1);     //L1null
-				OLED_ShowString(38,8,NOSETLOCK,12,1);    //L2null
-				OLED_ShowString(98,8,NOSETLOCK,12,1);		 //L4null
-        if(L3bd){
-					if(L_s == 0x0010){
-            OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
-            OLED_ShowChinese(72,46,open16,16,1);    //开
-					} else if(L_s == 0x00F0) {
-            OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
-            OLED_ShowChinese(72,46,close16,16,1);   //关
-					}
-        }
-        break;
-        
-    case 0x0011:
-    case 0x00FF:
-        OLED_ShowString(8,8,NOSETLOCK,12,1);     //L1null
-        OLED_ShowString(38,8,NOSETLOCK,12,1);    //L2null
-        if(L3bd && L4bd){
-            if(L_s == 0x0011){
-                OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
-                OLED_ShowChinese(72,46,open16,16,1);    //开
-                OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
-                OLED_ShowChinese(102,46,open16,16,1);    //开
-            } else if(L_s == 0x00FF){
-                OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
-                OLED_ShowChinese(72,46,close16,16,1);   //关
-                OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
-                OLED_ShowChinese(102,46,close16,16,1);   //关
-            }
-        }
-        break;
-				
-		case 0x0100:
-		case 0x0F00:
-        OLED_ShowString(8,8,NOSETLOCK,12,1);     //L1null
-        OLED_ShowString(68,8,NOSETLOCK,12,1);    //L3null
-				OLED_ShowString(98,8,NOSETLOCK,12,1);		 //L4null
-        if(L2bd){
-					if(L_s == 0x0100){
-            OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
-            OLED_ShowChinese(42,46,open16,16,1);    //开
-					} else if(L_s == 0x0F00) {
-						OLED_ShowPicture(40,6,20,20,BMP4,1);			//显示图片关
-						OLED_ShowChinese(42,46,close16,16,1);				//关
-					}
-        }
-        break;
-				
-		case 0x0101:
-		case 0x0F0F:
-		case 0x010F:
-		case 0x0F01:
-        OLED_ShowString(8,8,NOSETLOCK,12,1);     //L1null
-        OLED_ShowString(68,8,NOSETLOCK,12,1);    //L3null
-        if(L2bd&&L4bd){
-					if(L_s == 0x0101){
-            OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
-            OLED_ShowChinese(42,46,open16,16,1);    //开
-						OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
-						OLED_ShowChinese(102,46,open16,16,1);    //开
-					} else if(L_s == 0x0F0F) {
-						OLED_ShowPicture(40,6,20,20,BMP4,1);			//显示图片关
-						OLED_ShowChinese(42,46,close16,16,1);				//关
-						OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
-						OLED_ShowChinese(102,46,close16,16,1);   //关
-					} else if(L_s == 0x010F) {
-            OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
-            OLED_ShowChinese(42,46,open16,16,1);    //开
-						OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
-						OLED_ShowChinese(102,46,close16,16,1);   //关
-					} else if(L_s == 0x0F01) {
-						OLED_ShowPicture(40,6,20,20,BMP4,1);			//显示图片关
-						OLED_ShowChinese(42,46,close16,16,1);				//关
-						OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
-						OLED_ShowChinese(102,46,open16,16,1);    //开
-					}
-        }
-        break;
-				
-        
-		case 0x0110:
-		case 0x0FF0:
-		case 0x01F0:
-		case 0x0F10:
-        OLED_ShowString(8,8,NOSETLOCK,12,1);     //L1null
-				OLED_ShowString(98,8,NOSETLOCK,12,1);		 //L4null
-        if(L2bd&&L3bd){
-					if(L_s == 0x0110){
-            OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
-            OLED_ShowChinese(42,46,open16,16,1);    //开
-						OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
-						OLED_ShowChinese(72,46,open16,16,1);    //开
-					} else if(L_s == 0x0FF0) {
-						OLED_ShowPicture(40,6,20,20,BMP4,1);			//显示图片关
-						OLED_ShowChinese(42,46,close16,16,1);				//关
-						OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
-						OLED_ShowChinese(72,46,close16,16,1);   //关
-					} else if(L_s == 0x01F0) {
-            OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
-            OLED_ShowChinese(42,46,open16,16,1);    //开
-						OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
-						OLED_ShowChinese(72,46,close16,16,1);   //关
-					} else if(L_s == 0x0F10) {
-						OLED_ShowPicture(40,6,20,20,BMP4,1);			//显示图片关
-						OLED_ShowChinese(42,46,close16,16,1);				//关
-						OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
-						OLED_ShowChinese(72,46,open16,16,1);    //开
-					}
-        }
-        break;
-				
-		case 0x0111:
-		case 0x011F:
-		case 0x01F1:
-		case 0x01FF:
-		case 0x0F11:
-		case 0x0F1F:
-		case 0x0FF1:
-		case 0x0FFF:
-        OLED_ShowString(8,8,NOSETLOCK,12,1);     //L1null
-        if(L2bd&&L3bd&&L4bd){
-					if(L_s == 0x0111){
-            OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
-            OLED_ShowChinese(42,46,open16,16,1);    //开
-						OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
-						OLED_ShowChinese(72,46,open16,16,1);    //开
-						OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
-						OLED_ShowChinese(102,46,open16,16,1);    //开
-					} else if(L_s == 0x011F) {
-            OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
-            OLED_ShowChinese(42,46,open16,16,1);    //开
-						OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
-						OLED_ShowChinese(72,46,open16,16,1);    //开
-						OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
-						OLED_ShowChinese(102,46,close16,16,1);    //关
-					} else if(L_s == 0x01F1) {
-            OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
-            OLED_ShowChinese(42,46,open16,16,1);    //开
-						OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
-						OLED_ShowChinese(72,46,close16,16,1);    //关
-						OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
-						OLED_ShowChinese(102,46,open16,16,1);    //开
-					} else if(L_s == 0x01FF) {
-            OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
-            OLED_ShowChinese(42,46,open16,16,1);    //开
-						OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
-						OLED_ShowChinese(72,46,close16,16,1);    //关
-						OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
-						OLED_ShowChinese(102,46,close16,16,1);    //关
-					} else if(L_s == 0x0F11) {
-            OLED_ShowPicture(40,6,20,20,BMP4,1);    //显示图片关
-            OLED_ShowChinese(42,46,close16,16,1);    //关
-						OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
-						OLED_ShowChinese(72,46,open16,16,1);    //开
-						OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
-						OLED_ShowChinese(102,46,open16,16,1);    //开
-					} else if(L_s == 0x0F1F) {
-            OLED_ShowPicture(40,6,20,20,BMP4,1);    //显示图片关
-            OLED_ShowChinese(42,46,close16,16,1);    //关
-						OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
-						OLED_ShowChinese(72,46,open16,16,1);    //开
-						OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
-						OLED_ShowChinese(102,46,close16,16,1);    //关
-					} else if(L_s == 0x0FF1) {
-            OLED_ShowPicture(40,6,20,20,BMP4,1);    //显示图片关
-            OLED_ShowChinese(42,46,close16,16,1);    //关
-						OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
-						OLED_ShowChinese(72,46,close16,16,1);    //关
-						OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
-						OLED_ShowChinese(102,46,open16,16,1);    //开
-					} else if(L_s == 0x0FFF) {
-            OLED_ShowPicture(40,6,20,20,BMP4,1);    //显示图片关
-            OLED_ShowChinese(42,46,close16,16,1);    //关
-						OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
-						OLED_ShowChinese(72,46,close16,16,1);    //关
-						OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
-						OLED_ShowChinese(102,46,close16,16,1);    //关
-					}
-        }
-        break;
-				
-		case 0x1000:
-		case 0xF000:
-				OLED_ShowString(38,8,NOSETLOCK,12,1);    //L2null
-				OLED_ShowString(68,8,NOSETLOCK,12,1);    //L3null
-				OLED_ShowString(98,8,NOSETLOCK,12,1);		 //L4null
-        if(L1bd){
-					if(L_s == 0x1000){
-						OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
-						OLED_ShowChinese(12,46,open16,16,1);		  //开
-					} else if(L_s == 0xF000) {
-						OLED_ShowPicture(10,6,20,20,BMP4,1);			//显示图片关
-						OLED_ShowChinese(12,46,close16,16,1);		  //关
-					}
-        }
-        break;
-				
-		case 0x1001:
-		case 0xF00F:
-		case 0x100F:
-		case 0xF001:
+		case 0x10000:
+		{//电机异常
+			
+		}
+		case 0x0001:
+		case 0x000F:
+			OLED_ShowString(8,8,NOSETLOCK,12,1);     //L1null
+			OLED_ShowString(38,8,NOSETLOCK,12,1);    //L2null
+			OLED_ShowString(68,8,NOSETLOCK,12,1);    //L3null
+			if(L4bd){
+				if(L_s == 0x0001){
+					OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
+					OLED_ShowChinese(102,46,open16,16,1);    //开
+				} else if(L_s == 0x000F){
+					OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
+					OLED_ShowChinese(102,46,close16,16,1);   //关
+				}
+			}
+			break;
+			
+		case 0x0010:
+		case 0x00F0:
+			OLED_ShowString(8,8,NOSETLOCK,12,1);     //L1null
 			OLED_ShowString(38,8,NOSETLOCK,12,1);    //L2null
 			OLED_ShowString(38,8,NOSETLOCK,12,1);    //L2null
+			OLED_ShowString(98,8,NOSETLOCK,12,1);		 //L4null
+			if(L3bd){
+				if(L_s == 0x0010){
+					OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
+					OLED_ShowChinese(72,46,open16,16,1);    //开
+				} else if(L_s == 0x00F0) {
+					OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
+					OLED_ShowChinese(72,46,close16,16,1);   //关
+				}
+			}
+			break;
+			
+		case 0x0011:
+		case 0x00FF:
+			OLED_ShowString(8,8,NOSETLOCK,12,1);     //L1null
+			OLED_ShowString(38,8,NOSETLOCK,12,1);    //L2null
+			if(L3bd && L4bd){
+				if(L_s == 0x0011){
+					OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
+					OLED_ShowChinese(72,46,open16,16,1);    //开
+					OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
+					OLED_ShowChinese(102,46,open16,16,1);    //开
+				} else if(L_s == 0x00FF){
+					OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
+					OLED_ShowChinese(72,46,close16,16,1);   //关
+					OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
+					OLED_ShowChinese(102,46,close16,16,1);   //关
+				}
+			}
+			break;
+					
+			case 0x0100:
+			case 0x0F00:
+			OLED_ShowString(8,8,NOSETLOCK,12,1);     //L1null
+			OLED_ShowString(68,8,NOSETLOCK,12,1);    //L3null
+			OLED_ShowString(98,8,NOSETLOCK,12,1);		 //L4null
+			if(L2bd){
+				if(L_s == 0x0100){
+					OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
+					OLED_ShowChinese(42,46,open16,16,1);    //开
+				} else if(L_s == 0x0F00) {
+					OLED_ShowPicture(40,6,20,20,BMP4,1);			//显示图片关
+					OLED_ShowChinese(42,46,close16,16,1);				//关
+				}
+			}
+			break;
+					
+			case 0x0101:
+			case 0x0F0F:
+			case 0x010F:
+			case 0x0F01:
+			OLED_ShowString(8,8,NOSETLOCK,12,1);     //L1null
 			OLED_ShowString(68,8,NOSETLOCK,12,1);    //L3null
 			OLED_ShowString(68,8,NOSETLOCK,12,1);    //L3null
-			if(L1bd&&L4bd){
-				if(L_s == 0x1001){
-					OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
-					OLED_ShowChinese(12,46,open16,16,1);		  //开
+			if(L2bd&&L4bd){
+				if(L_s == 0x0101){
+					OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
+					OLED_ShowChinese(42,46,open16,16,1);    //开
 					OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
 					OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
 					OLED_ShowChinese(102,46,open16,16,1);    //开
 					OLED_ShowChinese(102,46,open16,16,1);    //开
-				} else if(L_s == 0xF00F) {
-					OLED_ShowPicture(10,6,20,20,BMP4,1);			//显示图片关
-					OLED_ShowChinese(12,46,close16,16,1);		  //关
+				} else if(L_s == 0x0F0F) {
+					OLED_ShowPicture(40,6,20,20,BMP4,1);			//显示图片关
+					OLED_ShowChinese(42,46,close16,16,1);				//关
 					OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
 					OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
-					OLED_ShowChinese(102,46,close16,16,1);    //关
-				} else if(L_s == 0x100F) {
-					OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
-					OLED_ShowChinese(12,46,open16,16,1);		  //开
+					OLED_ShowChinese(102,46,close16,16,1);   //关
+				} else if(L_s == 0x010F) {
+					OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
+					OLED_ShowChinese(42,46,open16,16,1);    //开
 					OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
 					OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
-					OLED_ShowChinese(102,46,close16,16,1);    //关
-				} else if(L_s == 0xF001) {
-					OLED_ShowPicture(10,6,20,20,BMP4,1);			//显示图片关
-					OLED_ShowChinese(12,46,close16,16,1);		  //关
+					OLED_ShowChinese(102,46,close16,16,1);   //关
+				} else if(L_s == 0x0F01) {
+					OLED_ShowPicture(40,6,20,20,BMP4,1);			//显示图片关
+					OLED_ShowChinese(42,46,close16,16,1);				//关
 					OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
 					OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
 					OLED_ShowChinese(102,46,open16,16,1);    //开
 					OLED_ShowChinese(102,46,open16,16,1);    //开
 				}
 				}
 			}
 			}
-		break;		
-				
-				
-		case 0x1010:
-		case 0xF0F0:
-		case 0x10F0:
-		case 0xF010:
+			break;
+					
+			
+			case 0x0110:
+			case 0x0FF0:
+			case 0x01F0:
+			case 0x0F10:
+			OLED_ShowString(8,8,NOSETLOCK,12,1);     //L1null
+					OLED_ShowString(98,8,NOSETLOCK,12,1);		 //L4null
+			if(L2bd&&L3bd){
+						if(L_s == 0x0110){
+				OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
+				OLED_ShowChinese(42,46,open16,16,1);    //开
+							OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
+							OLED_ShowChinese(72,46,open16,16,1);    //开
+						} else if(L_s == 0x0FF0) {
+							OLED_ShowPicture(40,6,20,20,BMP4,1);			//显示图片关
+							OLED_ShowChinese(42,46,close16,16,1);				//关
+							OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
+							OLED_ShowChinese(72,46,close16,16,1);   //关
+						} else if(L_s == 0x01F0) {
+				OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
+				OLED_ShowChinese(42,46,open16,16,1);    //开
+							OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
+							OLED_ShowChinese(72,46,close16,16,1);   //关
+						} else if(L_s == 0x0F10) {
+							OLED_ShowPicture(40,6,20,20,BMP4,1);			//显示图片关
+							OLED_ShowChinese(42,46,close16,16,1);				//关
+							OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
+							OLED_ShowChinese(72,46,open16,16,1);    //开
+						}
+			}
+			break;
+					
+			case 0x0111:
+			case 0x011F:
+			case 0x01F1:
+			case 0x01FF:
+			case 0x0F11:
+			case 0x0F1F:
+			case 0x0FF1:
+			case 0x0FFF:
+			OLED_ShowString(8,8,NOSETLOCK,12,1);     //L1null
+			if(L2bd&&L3bd&&L4bd){
+						if(L_s == 0x0111){
+				OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
+				OLED_ShowChinese(42,46,open16,16,1);    //开
+							OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
+							OLED_ShowChinese(72,46,open16,16,1);    //开
+							OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
+							OLED_ShowChinese(102,46,open16,16,1);    //开
+						} else if(L_s == 0x011F) {
+				OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
+				OLED_ShowChinese(42,46,open16,16,1);    //开
+							OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
+							OLED_ShowChinese(72,46,open16,16,1);    //开
+							OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
+							OLED_ShowChinese(102,46,close16,16,1);    //关
+						} else if(L_s == 0x01F1) {
+				OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
+				OLED_ShowChinese(42,46,open16,16,1);    //开
+							OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
+							OLED_ShowChinese(72,46,close16,16,1);    //关
+							OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
+							OLED_ShowChinese(102,46,open16,16,1);    //开
+						} else if(L_s == 0x01FF) {
+				OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
+				OLED_ShowChinese(42,46,open16,16,1);    //开
+							OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
+							OLED_ShowChinese(72,46,close16,16,1);    //关
+							OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
+							OLED_ShowChinese(102,46,close16,16,1);    //关
+						} else if(L_s == 0x0F11) {
+				OLED_ShowPicture(40,6,20,20,BMP4,1);    //显示图片关
+				OLED_ShowChinese(42,46,close16,16,1);    //关
+							OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
+							OLED_ShowChinese(72,46,open16,16,1);    //开
+							OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
+							OLED_ShowChinese(102,46,open16,16,1);    //开
+						} else if(L_s == 0x0F1F) {
+				OLED_ShowPicture(40,6,20,20,BMP4,1);    //显示图片关
+				OLED_ShowChinese(42,46,close16,16,1);    //关
+							OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
+							OLED_ShowChinese(72,46,open16,16,1);    //开
+							OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
+							OLED_ShowChinese(102,46,close16,16,1);    //关
+						} else if(L_s == 0x0FF1) {
+				OLED_ShowPicture(40,6,20,20,BMP4,1);    //显示图片关
+				OLED_ShowChinese(42,46,close16,16,1);    //关
+							OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
+							OLED_ShowChinese(72,46,close16,16,1);    //关
+							OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
+							OLED_ShowChinese(102,46,open16,16,1);    //开
+						} else if(L_s == 0x0FFF) {
+				OLED_ShowPicture(40,6,20,20,BMP4,1);    //显示图片关
+				OLED_ShowChinese(42,46,close16,16,1);    //关
+							OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
+							OLED_ShowChinese(72,46,close16,16,1);    //关
+							OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
+							OLED_ShowChinese(102,46,close16,16,1);    //关
+						}
+			}
+			break;
+					
+			case 0x1000:
+			case 0xF000:
+					OLED_ShowString(38,8,NOSETLOCK,12,1);    //L2null
+					OLED_ShowString(68,8,NOSETLOCK,12,1);    //L3null
+					OLED_ShowString(98,8,NOSETLOCK,12,1);		 //L4null
+			if(L1bd){
+						if(L_s == 0x1000){
+							OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
+							OLED_ShowChinese(12,46,open16,16,1);		  //开
+						} else if(L_s == 0xF000) {
+							OLED_ShowPicture(10,6,20,20,BMP4,1);			//显示图片关
+							OLED_ShowChinese(12,46,close16,16,1);		  //关
+						}
+			}
+			break;
+					
+			case 0x1001:
+			case 0xF00F:
+			case 0x100F:
+			case 0xF001:
 				OLED_ShowString(38,8,NOSETLOCK,12,1);    //L2null
 				OLED_ShowString(38,8,NOSETLOCK,12,1);    //L2null
-				OLED_ShowString(98,8,NOSETLOCK,12,1);		 //L4null
-        if(L1bd&&L3bd){
-					if(L_s == 0x1010){
+				OLED_ShowString(68,8,NOSETLOCK,12,1);    //L3null
+				if(L1bd&&L4bd){
+					if(L_s == 0x1001){
 						OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
 						OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
 						OLED_ShowChinese(12,46,open16,16,1);		  //开
 						OLED_ShowChinese(12,46,open16,16,1);		  //开
-						OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
-						OLED_ShowChinese(72,46,open16,16,1);    //开
-					} else if(L_s == 0xF0F0) {
+						OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
+						OLED_ShowChinese(102,46,open16,16,1);    //开
+					} else if(L_s == 0xF00F) {
 						OLED_ShowPicture(10,6,20,20,BMP4,1);			//显示图片关
 						OLED_ShowPicture(10,6,20,20,BMP4,1);			//显示图片关
 						OLED_ShowChinese(12,46,close16,16,1);		  //关
 						OLED_ShowChinese(12,46,close16,16,1);		  //关
-						OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
-						OLED_ShowChinese(72,46,close16,16,1);    //关
-					} else if(L_s == 0x10F0) {
+						OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
+						OLED_ShowChinese(102,46,close16,16,1);    //关
+					} else if(L_s == 0x100F) {
 						OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
 						OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
 						OLED_ShowChinese(12,46,open16,16,1);		  //开
 						OLED_ShowChinese(12,46,open16,16,1);		  //开
-						OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
-						OLED_ShowChinese(72,46,close16,16,1);    //关
-					} else if(L_s == 0xF010) {
+						OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
+						OLED_ShowChinese(102,46,close16,16,1);    //关
+					} else if(L_s == 0xF001) {
 						OLED_ShowPicture(10,6,20,20,BMP4,1);			//显示图片关
 						OLED_ShowPicture(10,6,20,20,BMP4,1);			//显示图片关
 						OLED_ShowChinese(12,46,close16,16,1);		  //关
 						OLED_ShowChinese(12,46,close16,16,1);		  //关
-						OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
-						OLED_ShowChinese(72,46,open16,16,1);    //开
+						OLED_ShowPicture(100,6,20,20,BMP3,1);    //显示图片开
+						OLED_ShowChinese(102,46,open16,16,1);    //开
 					}
 					}
-        }
-        break;	
-				
-				
-				
-		case 0x1011:
-		case 0x101F:
-		case 0x10F1:
-		case 0x10FF:
-		case 0xF011:
-		case 0xF01F:
-		case 0xF0F1:
-		case 0xF0FF:
-				OLED_ShowString(38,8,NOSETLOCK,12,1);    //L2null
-        if(L1bd&&L3bd&&L4bd){
+				}
+			break;		
+					
+					
+			case 0x1010:
+			case 0xF0F0:
+			case 0x10F0:
+			case 0xF010:
+					OLED_ShowString(38,8,NOSETLOCK,12,1);    //L2null
+					OLED_ShowString(98,8,NOSETLOCK,12,1);		 //L4null
+			if(L1bd&&L3bd){
+						if(L_s == 0x1010){
+							OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
+							OLED_ShowChinese(12,46,open16,16,1);		  //开
+							OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
+							OLED_ShowChinese(72,46,open16,16,1);    //开
+						} else if(L_s == 0xF0F0) {
+							OLED_ShowPicture(10,6,20,20,BMP4,1);			//显示图片关
+							OLED_ShowChinese(12,46,close16,16,1);		  //关
+							OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
+							OLED_ShowChinese(72,46,close16,16,1);    //关
+						} else if(L_s == 0x10F0) {
+							OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
+							OLED_ShowChinese(12,46,open16,16,1);		  //开
+							OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
+							OLED_ShowChinese(72,46,close16,16,1);    //关
+						} else if(L_s == 0xF010) {
+							OLED_ShowPicture(10,6,20,20,BMP4,1);			//显示图片关
+							OLED_ShowChinese(12,46,close16,16,1);		  //关
+							OLED_ShowPicture(70,6,20,20,BMP3,1);    //显示图片开
+							OLED_ShowChinese(72,46,open16,16,1);    //开
+						}
+			}
+			break;	
+					
+					
+					
+			case 0x1011:
+			case 0x101F:
+			case 0x10F1:
+			case 0x10FF:
+			case 0xF011:
+			case 0xF01F:
+			case 0xF0F1:
+			case 0xF0FF:
+					OLED_ShowString(38,8,NOSETLOCK,12,1);    //L2null
+				if(L1bd&&L3bd&&L4bd){
 					if(L_s == 0x1011){
 					if(L_s == 0x1011){
 						OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
 						OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
 						OLED_ShowChinese(12,46,open16,16,1);		  //开
 						OLED_ShowChinese(12,46,open16,16,1);		  //开
@@ -649,50 +671,50 @@ void home(uint32_t L_s)
 						OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
 						OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
 						OLED_ShowChinese(102,46,close16,16,1);    //关
 						OLED_ShowChinese(102,46,close16,16,1);    //关
 					}
 					}
-        }
-        break;		
-		
-		case 0x1100:
-		case 0xFF00:
-		case 0x1F00:
-		case 0xF100:
-        OLED_ShowString(68,8,NOSETLOCK,12,1);    //L3null
-				OLED_ShowString(98,8,NOSETLOCK,12,1);		 //L4null
-        if(L1bd&&L2bd){
-					if(L_s == 0x1100){
-						OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
-						OLED_ShowChinese(12,46,open16,16,1);		  //开
-            OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
-            OLED_ShowChinese(42,46,open16,16,1);    //开
-					} else if(L_s == 0xFF00) {
-						OLED_ShowPicture(10,6,20,20,BMP4,1);			//显示图片关
-						OLED_ShowChinese(12,46,close16,16,1);		  //关
-            OLED_ShowPicture(40,6,20,20,BMP4,1);    //显示图片关
-            OLED_ShowChinese(42,46,close16,16,1);    //关
-					} else if(L_s == 0x1F00) {
-						OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
-						OLED_ShowChinese(12,46,open16,16,1);		  //开
-            OLED_ShowPicture(40,6,20,20,BMP4,1);    //显示图片关
-            OLED_ShowChinese(42,46,close16,16,1);    //关
-					} else if(L_s == 0xF100) {
-						OLED_ShowPicture(10,6,20,20,BMP4,1);			//显示图片关
-						OLED_ShowChinese(12,46,close16,16,1);		  //关
-            OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
-            OLED_ShowChinese(42,46,open16,16,1);    //开
-					}
-        }
-        break;		
-				
-		case 0x1101:
-		case 0x110F:
-		case 0x1F01:
-		case 0x1F0F:
-		case 0xF101:
-		case 0xF10F:
-		case 0xFF01:
-		case 0xFF0F:
-        OLED_ShowString(68,8,NOSETLOCK,12,1);    //L3null
-        if(L1bd&&L2bd&&L4bd){
+			}
+			break;		
+			
+			case 0x1100:
+			case 0xFF00:
+			case 0x1F00:
+			case 0xF100:
+			OLED_ShowString(68,8,NOSETLOCK,12,1);    //L3null
+					OLED_ShowString(98,8,NOSETLOCK,12,1);		 //L4null
+			if(L1bd&&L2bd){
+						if(L_s == 0x1100){
+							OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
+							OLED_ShowChinese(12,46,open16,16,1);		  //开
+				OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
+				OLED_ShowChinese(42,46,open16,16,1);    //开
+						} else if(L_s == 0xFF00) {
+							OLED_ShowPicture(10,6,20,20,BMP4,1);			//显示图片关
+							OLED_ShowChinese(12,46,close16,16,1);		  //关
+				OLED_ShowPicture(40,6,20,20,BMP4,1);    //显示图片关
+				OLED_ShowChinese(42,46,close16,16,1);    //关
+						} else if(L_s == 0x1F00) {
+							OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
+							OLED_ShowChinese(12,46,open16,16,1);		  //开
+				OLED_ShowPicture(40,6,20,20,BMP4,1);    //显示图片关
+				OLED_ShowChinese(42,46,close16,16,1);    //关
+						} else if(L_s == 0xF100) {
+							OLED_ShowPicture(10,6,20,20,BMP4,1);			//显示图片关
+							OLED_ShowChinese(12,46,close16,16,1);		  //关
+				OLED_ShowPicture(40,6,20,20,BMP3,1);    //显示图片开
+				OLED_ShowChinese(42,46,open16,16,1);    //开
+						}
+			}
+			break;		
+					
+			case 0x1101:
+			case 0x110F:
+			case 0x1F01:
+			case 0x1F0F:
+			case 0xF101:
+			case 0xF10F:
+			case 0xFF01:
+			case 0xFF0F:
+				OLED_ShowString(68,8,NOSETLOCK,12,1);    //L3null
+				if(L1bd&&L2bd&&L4bd){
 					if(L_s == 0x1101){
 					if(L_s == 0x1101){
 						OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
 						OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
 						OLED_ShowChinese(12,46,open16,16,1);		  //开
 						OLED_ShowChinese(12,46,open16,16,1);		  //开
@@ -750,19 +772,19 @@ void home(uint32_t L_s)
 						OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
 						OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
 						OLED_ShowChinese(102,46,close16,16,1);    //关
 						OLED_ShowChinese(102,46,close16,16,1);    //关
 					}
 					}
-        }
-        break;		
-		
-		case 0x1110:
-		case 0x11F0:
-		case 0x1F10:
-		case 0x1FF0:
-		case 0xF110:
-		case 0xF1F0:
-		case 0xFF10:
-		case 0xFFF0:
+			}
+			break;		
+			
+			case 0x1110:
+			case 0x11F0:
+			case 0x1F10:
+			case 0x1FF0:
+			case 0xF110:
+			case 0xF1F0:
+			case 0xFF10:
+			case 0xFFF0:
 				OLED_ShowString(98,8,NOSETLOCK,12,1);		 //L4null
 				OLED_ShowString(98,8,NOSETLOCK,12,1);		 //L4null
-        if(L1bd&&L2bd&&L4bd){
+				if(L1bd&&L2bd&&L4bd){
 					if(L_s == 0x1110){
 					if(L_s == 0x1110){
 						OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
 						OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
 						OLED_ShowChinese(12,46,open16,16,1);		  //开
 						OLED_ShowChinese(12,46,open16,16,1);		  //开
@@ -820,26 +842,26 @@ void home(uint32_t L_s)
 						OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
 						OLED_ShowPicture(70,6,20,20,BMP4,1);    //显示图片关
 						OLED_ShowChinese(72,46,close16,16,1);    //关
 						OLED_ShowChinese(72,46,close16,16,1);    //关
 					}
 					}
-        }
-        break;		
-				
-		case 0x1111:
-		case 0x111F:
-		case 0x11F1:
-		case 0x11FF:
-		case 0x1F11:
-		case 0x1F1F:
-		case 0x1FF1:
-		case 0x1FFF:
-		case 0xF111:
-		case 0xF11F:
-		case 0xF1F1:
-		case 0xF1FF:
-		case 0xFF11:
-		case 0xFF1F:
-		case 0xFFF1:
-		case 0xFFFF:
-        if(L1bd&&L2bd&&L3bd&&L4bd){
+			}
+			break;		
+					
+			case 0x1111:
+			case 0x111F:
+			case 0x11F1:
+			case 0x11FF:
+			case 0x1F11:
+			case 0x1F1F:
+			case 0x1FF1:
+			case 0x1FFF:
+			case 0xF111:
+			case 0xF11F:
+			case 0xF1F1:
+			case 0xF1FF:
+			case 0xFF11:
+			case 0xFF1F:
+			case 0xFFF1:
+			case 0xFFFF:
+				if(L1bd&&L2bd&&L3bd&&L4bd){
 					if(L_s == 0x1111){
 					if(L_s == 0x1111){
 						OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
 						OLED_ShowPicture(10,6,20,20,BMP3,1);			//显示图片开
 						OLED_ShowChinese(12,46,open16,16,1);		  //开
 						OLED_ShowChinese(12,46,open16,16,1);		  //开
@@ -985,24 +1007,21 @@ void home(uint32_t L_s)
 						OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
 						OLED_ShowPicture(100,6,20,20,BMP4,1);    //显示图片关
 						OLED_ShowChinese(102,46,close16,16,1);    //关
 						OLED_ShowChinese(102,46,close16,16,1);    //关
 					}
 					}
-        }
-        break;			
-				
-				
-    default:
-        // Handle default case here
-		
-        OLED_ShowString(8,8,NOSETLOCK,12,1);     //L1null
-        OLED_ShowString(38,8,NOSETLOCK,12,1);    //L2null
-        OLED_ShowString(68,8,NOSETLOCK,12,1);    //L3null
-		OLED_ShowString(98,8,NOSETLOCK,12,1);		 //L4null
-        break;
-}
-	
-
+			}
+			break;			
+					
+					
+		default:
+		{// Handle default case here
+			OLED_ShowString(8,8,NOSETLOCK,12,1);     //L1null
+			OLED_ShowString(38,8,NOSETLOCK,12,1);    //L2null
+			OLED_ShowString(68,8,NOSETLOCK,12,1);    //L3null
+			OLED_ShowString(98,8,NOSETLOCK,12,1);		 //L4null
+			break;
+		}
+	}
 }
 }
 
 
 
 
 
 
 
 
-

+ 29 - 36
Core/Src/key.c

@@ -1,14 +1,12 @@
 #include "key.h"
 #include "key.h"
 
 
 extern Menu_table menu;
 extern Menu_table menu;
-extern Bt_frame btFrame;
-extern bool refresh;
+extern BtFrame btframe;
 
 
 bool sent1_key = false;
 bool sent1_key = false;
 bool sent2_key = false;
 bool sent2_key = false;
 bool sent3_key = false;
 bool sent3_key = false;
 bool sent4_key = false;
 bool sent4_key = false;
-uint8_t keyvalue[4]={0};
 struct keys key[4]={0,0,0,0};
 struct keys key[4]={0,0,0,0};
 
 
 
 
@@ -27,7 +25,7 @@ uint8_t KEY_1_Scan(void)
     }
     }
     else
     else
     {
     {
-        if (HAL_GetTick() - debounce_time > 50) // 去抖时间
+        if (HAL_GetTick() - debounce_time > 30) // 去抖时间
         {
         {
             if (key_state == GPIO_PIN_RESET) // 按键按下
             if (key_state == GPIO_PIN_RESET) // 按键按下
             {
             {
@@ -48,7 +46,7 @@ uint8_t KEY_1_Scan(void)
 							case 2:
 							case 2:
 							case 7:
 							case 7:
 							{
 							{
-								if(menu.up!=4)
+								if(menu.up!=3)
 								{
 								{
 									menu.up+=1;
 									menu.up+=1;
 									menu.next-=1;
 									menu.next-=1;
@@ -73,7 +71,7 @@ uint8_t KEY_1_Scan(void)
             }
             }
             else // 按键释放
             else // 按键释放
             {
             {
-								sent1_key = false;
+				sent1_key = false;
                 return 0;
                 return 0;
             }
             }
         }
         }
@@ -97,7 +95,7 @@ uint8_t KEY_2_Scan(void)
     }
     }
     else
     else
     {
     {
-        if (HAL_GetTick() - debounce_time > 50) // 去抖时间大于50ms
+        if (HAL_GetTick() - debounce_time > 30) // 去抖时间大于50ms
         {
         {
             if (key_state == GPIO_PIN_RESET) // 按键按下
             if (key_state == GPIO_PIN_RESET) // 按键按下
             {
             {
@@ -118,13 +116,13 @@ uint8_t KEY_2_Scan(void)
 						case 2:
 						case 2:
 						case 7:
 						case 7:
 						{
 						{
-								if(menu.next!=3)
-								{
-									menu.up-=1;
-									menu.next+=1;
-								}
-								refresh=true;
-								break;
+							if(menu.next!=3)
+							{
+								menu.up-=1;
+								menu.next+=1;
+							}
+							refresh=true;
+							break;
 						}
 						}
 						case 8:
 						case 8:
 						case 9:
 						case 9:
@@ -142,7 +140,7 @@ uint8_t KEY_2_Scan(void)
             }
             }
             else // 按键释放
             else // 按键释放
             {
             {
-								sent2_key = false;
+				sent2_key = false;
                 return 0;
                 return 0;
             }
             }
         }
         }
@@ -167,7 +165,7 @@ uint8_t KEY_3_Scan(void)
     }
     }
     else
     else
     {
     {
-        if (HAL_GetTick() - debounce_time > 50) // 去抖时间大于50ms
+        if (HAL_GetTick() - debounce_time > 30) // 去抖时间大于50ms
         {
         {
             if (key_state == GPIO_PIN_RESET) // 按键按下
             if (key_state == GPIO_PIN_RESET) // 按键按下
             {
             {
@@ -181,25 +179,25 @@ uint8_t KEY_3_Scan(void)
 						case 1:
 						case 1:
 						{
 						{
 							if (menu.up==1) {
 							if (menu.up==1) {
-								SET_MENU_STATUS(2,4,0,2);
+								SET_MENU_STATUS(2,3,0,2);
 							}else{
 							}else{
-								SET_MENU_STATUS(7,4,0,2);
+								SET_MENU_STATUS(7,3,0,2);
 							}
 							}
 							break;
 							break;
 						}
 						}
 						case 2:
 						case 2:
 						{
 						{
-							SET_MENU_STATUS(7 - menu.up, 4, 0, 3);
+							SET_MENU_STATUS(6 - menu.up, 3, 0, 3);
 							break;	
 							break;	
 						}
 						}
 						case 3:
 						case 3:
 						{
 						{
-							SET_MENU_STATUS(3,4,0,4);
+							SET_MENU_STATUS(3,3,0,4);
 							break;
 							break;
 						}
 						}
 						case 7:
 						case 7:
 						{
 						{
-							SET_MENU_STATUS(12 - menu.up, 1, 0, 3);
+							SET_MENU_STATUS(11 - menu.up, 1, 0, 3);
 							break;	
 							break;	
 						}
 						}
 
 
@@ -210,20 +208,18 @@ uint8_t KEY_3_Scan(void)
 						{
 						{
 							if(menu.up == 1)
 							if(menu.up == 1)
 							{
 							{
-								SET_MENU_STATUS(menu.current, 1, 0, 4);
-								btFrame.serialNum+=1;		
+								SET_MENU_STATUS(menu.current, 1, 0, 4);		
 							}
 							}
 
 
 							else
 							else
 							{
 							{
 								SET_MENU_STATUS(menu.current, 0, 1, 4);
 								SET_MENU_STATUS(menu.current, 0, 1, 4);
-								btFrame.serialNum+=1;	
 							}
 							}
 							break;
 							break;
 						}
 						}
 					}
 					}
 
 
-					PRINT_MENU_STATUS("K3");
+					//PRINT_MENU_STATUS("K3");
 					sent3_key = true;
 					sent3_key = true;
 				}
 				}
 				return 1;
 				return 1;
@@ -254,12 +250,13 @@ uint8_t KEY_4_Scan(void)
     }
     }
     else
     else
     {
     {
-        if (HAL_GetTick() - debounce_time > 50) // 去抖时间大于50ms
+        if (HAL_GetTick() - debounce_time > 30) // 去抖时间大于50ms
         {
         {
             if (key_state == GPIO_PIN_RESET) // 按键按下
             if (key_state == GPIO_PIN_RESET) // 按键按下
             {
             {
 				if (!sent4_key) {//返回
 				if (!sent4_key) {//返回
 					switch (menu.current) {
 					switch (menu.current) {
+						case 0:
 						case 1:
 						case 1:
 						{
 						{
 							SET_MENU_STATUS(0,0,0,0);
 							SET_MENU_STATUS(0,0,0,0);
@@ -277,7 +274,7 @@ uint8_t KEY_4_Scan(void)
 						case 5:
 						case 5:
 						case 6:
 						case 6:
 						{
 						{
-							SET_MENU_STATUS(2,4,0,2);
+							SET_MENU_STATUS(2,3,0,2);
 							break;
 							break;
 						}
 						}
 						
 						
@@ -287,7 +284,7 @@ uint8_t KEY_4_Scan(void)
 						case 0xa:
 						case 0xa:
 						case 0xb:
 						case 0xb:
 						{
 						{
-							SET_MENU_STATUS(7,4,0,2);
+							SET_MENU_STATUS(7,3,0,2);
 							break;
 							break;
 						}
 						}
 
 
@@ -311,16 +308,12 @@ uint8_t KEY_4_Scan(void)
 }
 }
 
 
 
 
-
-
-
 void updatekeystate(void)
 void updatekeystate(void)
 {
 {
-
-	keyvalue[0]=KEY_1_Scan();
-	keyvalue[1]=KEY_2_Scan();
-	keyvalue[2]=KEY_3_Scan();
-	keyvalue[3]=KEY_4_Scan();
+	KEY_1_Scan();
+	KEY_2_Scan();
+	KEY_3_Scan();
+	KEY_4_Scan();
 }
 }
 
 
 
 

+ 10 - 9
Core/Src/main.c

@@ -108,15 +108,15 @@ int main(void)
   MX_CAN_Init();
   MX_CAN_Init();
   MX_RTC_Init();
   MX_RTC_Init();
   /* USER CODE BEGIN 2 */
   /* USER CODE BEGIN 2 */
-	TIM_Start(&htim2);
-	TIM_Start(&htim3);
-	OLED_DISPLAY(0,0);//color>1 反色;display>1 翻转
-	RXNE_UART(&huart5);
-	HELLO("DtuStart...");
-#ifdef Test_old
-	#if Test_old ==1
+  TIM_Start(&htim2);	//wdi
+  TIM_Start(&htim3);	//led
+  OLED_DISPLAY(0,0);	//color>1 反色;display>1 翻转
+  RXNE_UART(&huart5);	//开启蓝牙串口中断
+  HELLO("\r\t\tDtuStart...");
+#if Test_old ==1
+	MBA32A_Init_demo();
+#else
 	MBA32A_Init();
 	MBA32A_Init();
-	#endif
 #endif
 #endif
   /* USER CODE END 2 */
   /* USER CODE END 2 */
 
 
@@ -128,6 +128,7 @@ int main(void)
   /* We should never get here as control is now taken by the scheduler */
   /* We should never get here as control is now taken by the scheduler */
   /* Infinite loop */
   /* Infinite loop */
   /* USER CODE BEGIN WHILE */
   /* USER CODE BEGIN WHILE */
+
   while (1)
   while (1)
   {
   {
     /* USER CODE END WHILE */
     /* USER CODE END WHILE */
@@ -208,7 +209,7 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
     HAL_IncTick();
     HAL_IncTick();
   }
   }
   /* USER CODE BEGIN Callback 1 */
   /* USER CODE BEGIN Callback 1 */
-	//喂狗
+	//喂看门
 	TOGGLE_WDI_PIN(&htim2);
 	TOGGLE_WDI_PIN(&htim2);
   /* USER CODE END Callback 1 */
   /* USER CODE END Callback 1 */
 }
 }

+ 382 - 100
Core/Src/mba32a.c

@@ -1,24 +1,27 @@
 #include "mba32a.h"
 #include "mba32a.h"
 #include "usart.h"
 #include "usart.h"
-
+#include "interface.h"
 
 
 /**
 /**
   * @breaf 外部定义
   * @breaf 外部定义
   */
   */
 extern UART_HandleTypeDef huart3;
 extern UART_HandleTypeDef huart3;
 extern UART_HandleTypeDef huart5;
 extern UART_HandleTypeDef huart5;
-extern bool startdtu;					//声明外部启动界面切换标志位
 extern Menu_table menu;					//结构体
 extern Menu_table menu;					//结构体
-extern bool L1bd;		
-extern bool refresh;		
+extern TipsFlag tipsflag;
+
 /**
 /**
   * @breaf 本页定义
   * @breaf 本页定义
   */
   */
-Bt_frame btFrame;
+BtFrame btframe;
+BtStep btstep;
 bool BT_CONN = false;
 bool BT_CONN = false;
 bool connected = false;						//连接断进程标志位
 bool connected = false;						//连接断进程标志位
 bool resetBTmodule = false;
 bool resetBTmodule = false;
+
 uint8_t step_BT=0;
 uint8_t step_BT=0;
+uint8_t dev1[12]={0};
+uint8_t resetcount=0;
 uint16_t u5length=0;
 uint16_t u5length=0;
 uint16_t resetFlag16=0;
 uint16_t resetFlag16=0;
 uint8_t g_MBA32A_8buf[1024]={0};  			//蓝牙接收数组
 uint8_t g_MBA32A_8buf[1024]={0};  			//蓝牙接收数组
@@ -38,17 +41,135 @@ uint16_t 	bt_sfver=0;						//bt
   */
   */
 uint8_t sendCmd_BT(char *pCmd, char *pRes, uint32_t timeOut, uint8_t sendNum);
 uint8_t sendCmd_BT(char *pCmd, char *pRes, uint32_t timeOut, uint8_t sendNum);
 void MBA32AReset(void);
 void MBA32AReset(void);
+void Start_Read_resetFlag16(void);
+void Bt_Connection(void);
+/**
+  * @breaf 非本页方法
+  */
+void execute_interface(Menu_table menu);
+
 
 
 /**
 /**
-  * @breaf 蓝牙初始化
+  * @breaf 蓝牙初始化,工作接口
   */
   */
 void MBA32A_Init(void)
 void MBA32A_Init(void)
+{
+	INIT_BT_FRAME();/** 流水号/用户id/自动施封 **/
+	Start_Read_resetFlag16();/** 启动位读写检查 **/
+	switch(btstep)
+	{
+		case BtStepDefault:
+			break;
+		case UUIDS:
+		{
+			if(sendCmd_BT("AT+UUIDS?\r\n","+UUIDS:FFF0",1,1))//蓝牙芯片默认值,需要修改
+			{
+				if(sendCmd_BT("AT+UUIDS=0002\r\n","OK",1,1))
+				{
+					printf("#01设置主服务成功\n");
+					btstep++;
+				}
+			}
+			else
+			{	//ERROR 其他值
+				MBA32AReset();
+				break;
+			}
+		}
+		case UUIDN:
+		{
+			if(sendCmd_BT("AT+UUIDN?\r\n","+UUIDN:FFF1",1,1))//蓝牙芯片默认值,需要修改
+			{
+				if(sendCmd_BT("AT+UUIDN=FF04\r\n","OK",1,1))
+				{
+					printf("#02设置读服务成功\n");
+					btstep++;
+				}
+			}
+			else
+			{	//ERROR 其他值
+				MBA32AReset();
+				break;
+			}
+		}
+		case UUIDW:
+		{
+			if(sendCmd_BT("AT+UUIDW?\r\n","+UUIDW:FFF2",1,1))//蓝牙芯片默认值,需要修改
+			{
+				if(sendCmd_BT("AT+UUIDW=FFF5\r\n","OK",1,1))
+				{
+					printf("#03设置写服务成功\n");
+					btstep++;
+				}
+			}
+			else
+			{	//ERROR 其他值
+				MBA32AReset();
+				break;
+			}
+		}
+	}
+}
+
+/**
+  * @breaf 蓝牙启动位读写检查
+  */
+void Start_Read_resetFlag16(void)
+{
+	resetFlag16 = read_flash_16(resetDevAddr);
+	if(resetFlag16==0xFFFF)//开机检测(首次启动)
+	{
+		if(sendCmd_BT("AT+RESET=1\r\n","OK",1,1))
+		{
+			Write_Information(resetDevAddr);//写入0xAAAA
+			printf("#复位设备成功\r\n");
+			btstep = UUIDS;
+		}
+		if(!sendCmd_BT("AT+DISCONN=0\r\n","OK",1,1))
+		{
+			printf("#无设备连接\r\n");
+		}
+		else
+		{
+			printf("#已断开连接设备\r\n");
+		}
+	}
+	else if(resetFlag16==0xAAAA)//开机检测(大于1次启动)
+	{
+		printf("#非首次启动\r\n");
+		if (!sendCmd_BT("AT+UUIDS?\r\n","+UUIDS:0002",1,1))
+		{
+			PRINT_NUUID("UUIDS");//UUID项不符合
+			btstep = UUIDS;
+		}
+		if (!sendCmd_BT("AT+UUIDN?\r\n","+UUIDN:FF04",1,1))
+		{
+			PRINT_NUUID("UUIDN");//UUID项不符合
+			btstep = UUIDN;
+		}
+		if (!sendCmd_BT("AT+UUIDW?\r\n","+UUIDW:FFF5",1,1))
+		{
+			PRINT_NUUID("UUIDW");//UUID项不符合
+			btstep = UUIDW;
+		}
+		else
+		{
+			PRINT_UUID("UUID项");//UUID项符合设置项
+			btstep = BtStepDefault;
+		}
+	}
+}
+/**
+  * @breaf 蓝牙初始化,演示接口
+  */
+void MBA32A_Init_demo(void)
 {
 {
 	startdtu = true;
 	startdtu = true;
 	menu.home=0;
 	menu.home=0;
-	btFrame.serialNum = 0x00000001;//流水号
-	btFrame.userId 	  = 0x64747531;//dtu1
-	btFrame.Autoseal  = 0x01;
+	btframe.serialNum = 0x00000001;//流水号
+	btframe.userId 	  = 0x64747531;//dtu1
+	btframe.Autoseal  = 0x01;
+	printf("\r\t\tBTinit%d...",resetcount);
 	
 	
 	resetFlag16 = read_flash_16(resetDevAddr);
 	resetFlag16 = read_flash_16(resetDevAddr);
 	if(resetFlag16==0xFFFF)//开机检测(首次启动)
 	if(resetFlag16==0xFFFF)//开机检测(首次启动)
@@ -105,7 +226,7 @@ void MBA32A_Init(void)
 				{
 				{
 					if(sendCmd_BT("AT+UUIDS=0002\r\n","OK",1,1))
 					if(sendCmd_BT("AT+UUIDS=0002\r\n","OK",1,1))
 					{
 					{
-						printf("设置主服务成功\n");
+						printf("01设置主服务成功\n");
 						step_BT++;
 						step_BT++;
 					}
 					}
 				}
 				}
@@ -130,7 +251,7 @@ void MBA32A_Init(void)
 				{
 				{
 					if(sendCmd_BT("AT+UUIDN=FF04\r\n","OK",1,1))
 					if(sendCmd_BT("AT+UUIDN=FF04\r\n","OK",1,1))
 					{
 					{
-						printf("设置读服务成功\n");
+						printf("02设置读服务成功\n");
 						step_BT++;
 						step_BT++;
 					}
 					}
 				}
 				}
@@ -155,7 +276,7 @@ void MBA32A_Init(void)
 				{
 				{
 					if(sendCmd_BT("AT+UUIDW=FFF5\r\n","OK",1,1))
 					if(sendCmd_BT("AT+UUIDW=FFF5\r\n","OK",1,1))
 					{
 					{
-						printf("设置写服务成功\n");
+						printf("03设置写服务成功\n");
 						step_BT++;
 						step_BT++;
 					}
 					}
 				}
 				}
@@ -202,14 +323,7 @@ void MBA32A_Init(void)
 				}
 				}
 			}
 			}
 		}
 		}
-		
-		
-		
-		
-		
 	}
 	}
-	
-	
 }
 }
 
 
 
 
@@ -221,21 +335,25 @@ void MBA32AReset(void)
 	printf("Bt reset\r\n");   
 	printf("Bt reset\r\n");   
 	HAL_GPIO_WritePin(REST_BT_GPIO_Port,REST_BT_Pin,GPIO_PIN_RESET);
 	HAL_GPIO_WritePin(REST_BT_GPIO_Port,REST_BT_Pin,GPIO_PIN_RESET);
 	HAL_Delay(4000);
 	HAL_Delay(4000);
-	step_BT=0;
+	btstep = UUIDS;
 	resetBTmodule=true;//freertos监测模块重启位
 	resetBTmodule=true;//freertos监测模块重启位
+	resetcount+=1;
 }
 }
 
 
 /**
 /**
-  * @breaf 串口发送命令,有接收数组比较函数
+  * @breaf 串口发送命令函数
   */
   */
 void USART_SendString(UART_HandleTypeDef *huart, char *str)
 void USART_SendString(UART_HandleTypeDef *huart, char *str)
 {
 {
-	
+	printf("\r\n\tTransmit CMD:\t");
 	HAL_UART_Transmit(huart, (uint8_t*)str, strlen(str), 0xFFFF);
 	HAL_UART_Transmit(huart, (uint8_t*)str, strlen(str), 0xFFFF);
     HAL_UART_Transmit(&huart3, (uint8_t*)str, strlen(str), 0xFFFF);
     HAL_UART_Transmit(&huart3, (uint8_t*)str, strlen(str), 0xFFFF);
 	
 	
 }
 }
 
 
+/**
+  * @breaf 串口发送命令,有接收数组比较函数
+  */
 uint8_t sendCmd_BT(char *pCmd, char *pRes, uint32_t timeOut, uint8_t sendNum)
 uint8_t sendCmd_BT(char *pCmd, char *pRes, uint32_t timeOut, uint8_t sendNum)
 {
 {
     uint8_t i = 0;
     uint8_t i = 0;
@@ -245,12 +363,14 @@ uint8_t sendCmd_BT(char *pCmd, char *pRes, uint32_t timeOut, uint8_t sendNum)
         time = timeOut * 10;
         time = timeOut * 10;
         USART_SendString(&huart5, pCmd);
         USART_SendString(&huart5, pCmd);
 		HAL_Delay(30);
 		HAL_Delay(30);
-		printf("-------------->%s",g_MBA32A_8buf_Down);
+		printf("------->%s",g_MBA32A_8buf_Down);
+		//memset(g_MBA32A_8buf_Down,0,50);
 		
 		
         while(time--)
         while(time--)
 		{
 		{
 			if(strstr((const char *)g_MBA32A_8buf_Down, pRes) != NULL)             // 如果检索到关键词
 			if(strstr((const char *)g_MBA32A_8buf_Down, pRes) != NULL)             // 如果检索到关键词
 			{
 			{
+				memset(g_MBA32A_8buf_Down,0,50);
 				return 1;
 				return 1;
 			}
 			}
 			HAL_Delay(100);
 			HAL_Delay(100);
@@ -259,6 +379,9 @@ uint8_t sendCmd_BT(char *pCmd, char *pRes, uint32_t timeOut, uint8_t sendNum)
     return 0;
     return 0;
 }
 }
 
 
+/**
+  * @breaf 20字节串口回显
+  */
 void Echo_BT(uint8_t echosize)
 void Echo_BT(uint8_t echosize)
 {
 {
 	HAL_UART_Transmit(&huart3,g_MBA32A_8buf_Down, echosize, 0xFFFF);//TTL回显
 	HAL_UART_Transmit(&huart3,g_MBA32A_8buf_Down, echosize, 0xFFFF);//TTL回显
@@ -276,6 +399,144 @@ void lock_searchInfo(void)		//
 
 
 }
 }
 
 
+/**
+  * @breaf 蓝牙开锁信息帧
+  */
+void open_lock(BtFrame btframe)					//蓝牙开锁信息帧
+{
+	uint8_t header[2] 	= {0x66, 0x00};//Jl_lock帧头
+	uint8_t open_CMD[] = {0x02, 0x0C, 	0x00,0x00,0x00,0x00,		0x00,0x00,0x00,0x00,	\
+												0x00,0x00,0x00,0x00,   0x00};//开锁命令帧
+	
+	uint32_t serialNum = btframe.serialNum;//流水号
+	open_CMD[2]=(serialNum>>24) & 0xff;
+	open_CMD[3]=(serialNum>>16) & 0xff;
+	open_CMD[4]=(serialNum>>8) & 0xff;
+	open_CMD[5]= serialNum & 0xff;
+												
+	uint32_t userid = btframe.userId;//用户id
+	open_CMD[6]=(userid>>24) & 0xff;
+	open_CMD[7]=(userid>>16) & 0xff;
+	open_CMD[8]=(userid>>8) & 0xff;
+	open_CMD[9]= userid & 0xff;
+												
+	uint32_t ntime = btframe.Ntime;//现在时间
+	open_CMD[10]=(ntime>>24) & 0xff;
+	open_CMD[11]=(ntime>>16) & 0xff;
+	open_CMD[12]=(ntime>>8) & 0xff;
+	open_CMD[13]= ntime & 0xff;
+												
+	open_CMD[14] = btframe.Autoseal;//自动施封时间										
+													
+	sendCombinedArray(header,sizeof(header),open_CMD,sizeof(open_CMD));
+	Echo_BT(20);
+	refresh=true;
+}
+
+/**
+  * @breaf 蓝牙关锁信息帧
+  */
+void close_lock(BtFrame btframe)					//蓝牙关锁信息帧
+{
+	uint8_t header[2] 	= {0x66, 0x00};//Jl_lock帧头
+	uint8_t close_CMD[] = {0x03, 0x0B};//关锁命令帧
+	sendCombinedArray(header,sizeof(header),close_CMD,sizeof(close_CMD));
+	Echo_BT(20);
+	refresh=true;
+}
+
+/**
+  * @breaf 写死的蓝牙连接函数
+  */
+void Bt_Connection(void)
+{
+	if(sendCmd_BT("AT+CONN=101000000003\r\n","+CONNECTED:0,101000000003",3,3))
+	{           
+		if(sendCmd_BT("AT+AUTO_CFG=1\r\n","OK",1,1))
+		{
+			printf("自动重连打开\r\n");
+		}
+		printf("连接成功!");
+		menu.current=2;
+		refresh=true;
+		
+		/** 后期修改 **/
+		BT_CONN=true;
+		L1bd=true;
+	}
+	else if(sendCmd_BT("AT+CONN=101000000003\r\n","+CONNECT TIMEOUT",3,5))
+	{
+		printf("连接超时!");
+		MBA32AReset();		//后台复位
+	}
+	else 
+	{
+		printf("连接失败! %s",g_MBA32A_8buf_Down);
+		MBA32AReset();
+	}	
+}
+
+/**
+  * @breaf 蓝牙扫描MAC切分函数
+  */
+#define JL_LOCK_LENGTH 	11
+#define DEV_LENGTH 		12
+//#define DEV_COUNT 		4
+uint16_t counter_bt = 0;
+void split_BtArr(uint8_t* arr, uint16_t len)
+{
+	bool found_JLLock = false;
+    //uint8_t JLLock[] = {0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+    uint8_t JLLock[] = {0x31, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+    //uint8_t null[] = {0x31, 0x31, 0x31, 0x00, 0x00};
+    for (uint16_t i = 0; i < len - JL_LOCK_LENGTH; i++)
+    {
+        if (memcmp(&arr[i], JLLock, JL_LOCK_LENGTH) == 0)
+        {
+            found_JLLock = true;
+        }
+        
+        if (found_JLLock)
+        {
+			memcpy(dev1, arr+i , DEV_LENGTH);
+			printf("d1:%s",dev1);
+		}
+	}
+}
+
+/**
+  * @breaf 蓝牙扫描函数
+  */
+void Bt_MacScan(char *pCmd)
+{
+	//"AT+SCAN=1\r\n"
+	if(menu.current==3)//MAC1搜索
+	{
+		USART_SendString(&huart5, pCmd);
+		HAL_Delay(300);
+		printf("%s\r\n",g_MBA32A_8buf_Down);
+//		for (int i = 0; i < u5length; i++) {
+//			printf("0x%02x ", g_MBA32A_8buf_Down[i]);
+//		}
+			
+		//split_BtArr(g_MBA32A_8buf_Down, u5length);
+		HAL_Delay(1000);
+	}
+//	else if(menu.current==4)//MAC2搜索
+//	{
+//		USART_SendString(&huart5, pCmd);
+//	}
+//	else if(menu.current==5)//MAC3搜索
+//	{
+//		USART_SendString(&huart5, pCmd);
+//	}	
+//	else if(menu.current==6)//MAC4搜索
+//	{
+//		USART_SendString(&huart5, pCmd);
+//	}	
+	
+}
+
 /**
 /**
   * @breaf 问询蓝牙锁工作信息函数
   * @breaf 问询蓝牙锁工作信息函数
   */
   */
@@ -287,9 +548,6 @@ void workinfo_W(void)
 	{
 	{
 		if(g_MBA32A_8buf_Down[2]==0x01)
 		if(g_MBA32A_8buf_Down[2]==0x01)
 		{
 		{
-			bt_lock_machinesta = g_MBA32A_8buf_Down[11];	//电机状态
-			bt_lock_ropesta = g_MBA32A_8buf_Down[12];		//锁绳状态
-		
 //			bt_dataLength = g_MBA32A_8buf_Down[3];//接收数据长度
 //			bt_dataLength = g_MBA32A_8buf_Down[3];//接收数据长度
 //			bt_error_num = g_MBA32A_8buf_Down[4];	//错误事件数
 //			bt_error_num = g_MBA32A_8buf_Down[4];	//错误事件数
 //			// 将4个字节存入 bt_serial_num流水号
 //			// 将4个字节存入 bt_serial_num流水号
@@ -299,6 +557,8 @@ void workinfo_W(void)
 //			bt_serial_num |= g_MBA32A_8buf_Down[8];
 //			bt_serial_num |= g_MBA32A_8buf_Down[8];
 //			bt_battery = g_MBA32A_8buf_Down[9];	//电量百分比
 //			bt_battery = g_MBA32A_8buf_Down[9];	//电量百分比
 //			bt_log_num = g_MBA32A_8buf_Down[10];//记录型事件
 //			bt_log_num = g_MBA32A_8buf_Down[10];//记录型事件
+			bt_lock_machinesta = g_MBA32A_8buf_Down[11];	//电机状态
+			bt_lock_ropesta    = g_MBA32A_8buf_Down[12];	//锁绳状态
 //			bt_hwver |= g_MBA32A_8buf_Down[13]<<8; 			//硬件版本号
 //			bt_hwver |= g_MBA32A_8buf_Down[13]<<8; 			//硬件版本号
 //			bt_hwver |= g_MBA32A_8buf_Down[14]; 
 //			bt_hwver |= g_MBA32A_8buf_Down[14]; 
 //			bt_sfver |= g_MBA32A_8buf_Down[15]<<8; 			//软件版本号
 //			bt_sfver |= g_MBA32A_8buf_Down[15]<<8; 			//软件版本号
@@ -307,7 +567,7 @@ void workinfo_W(void)
 		}
 		}
 		else if((g_MBA32A_8buf_Down[2]==0x03) && (g_MBA32A_8buf_Down[3]==0x01))//施封(关锁完成)
 		else if((g_MBA32A_8buf_Down[2]==0x03) && (g_MBA32A_8buf_Down[3]==0x01))//施封(关锁完成)
 		{
 		{
-			
+
 		}
 		}
 
 
 		else if((g_MBA32A_8buf_Down[2]==0x02) && (g_MBA32A_8buf_Down[3]==0x01))//解封(关锁完成)
 		else if((g_MBA32A_8buf_Down[2]==0x02) && (g_MBA32A_8buf_Down[3]==0x01))//解封(关锁完成)
@@ -317,75 +577,33 @@ void workinfo_W(void)
 	}
 	}
 
 
 }
 }
-
-void Scan_lock_status(void)
+/**
+  * @breaf 00-施解封操作(Freertos 工作函数)
+  */
+void open_close_lock(void)
 {
 {
-	if(bt_lock_machinesta==0x01 && bt_lock_ropesta==0x00 && g_MBA32A_8buf_Down[0]==0x66)//0x01电机关 0x00锁绳插入
-	{
-		menu.home=0xF000;//关(全部关闭)
-	}
-	else if(bt_lock_machinesta==0x00 && bt_lock_ropesta==0x01 && g_MBA32A_8buf_Down[0]==0x66)
-	{
-		menu.home=0x1000;//开(全部开启)
-	}
-	else if(bt_lock_ropesta==0x00 && bt_lock_machinesta==0x00 && g_MBA32A_8buf_Down[0]==0x66)
-	{
-		menu.home=0x1000;//开(电机打开,锁绳插入,可按键拔出)
+	if(menu.up == 1 && menu.current == 0x0C && tipsflag!=Abnormal_motor  && tipsflag == Default){
+
+		btframe.serialNum+=1;
+		// 施封操作
+		tipsflag = InProgress;//进行中
+		close_lock(btframe);
+
 	}
 	}
-	else if(bt_lock_ropesta==0x01 && bt_lock_machinesta==0x00 && g_MBA32A_8buf_Down[0]==0x66)
+	else if(menu.up == 0 && menu.current == 0x0C &&  tipsflag!=Abnormal_motor && tipsflag == Default)
 	{
 	{
-		menu.home=0x1000;//开(电机关闭,锁绳拔出)
-	}
-}
-
+		btframe.serialNum+=1;
+		// 解封操作
+		tipsflag = InProgress;//进行中
+		open_lock(btframe);
 
 
-/**
-  * @breaf 蓝牙开锁信息帧
-  */
-void open_lock(Bt_frame btFrame)					//蓝牙开锁信息帧
-{
-	uint8_t header[2] 	= {0x66, 0x00};//Jl_lock帧头
-	uint8_t open_CMD[] = {0x02, 0x0C, 	0x00,0x00,0x00,0x00,		0x00,0x00,0x00,0x00,	\
-												0x00,0x00,0x00,0x00,   0x00};//开锁命令帧
-	
-	uint32_t serialNum = btFrame.serialNum;//流水号
-	open_CMD[2]=(serialNum>>24) & 0xff;
-	open_CMD[3]=(serialNum>>16) & 0xff;
-	open_CMD[4]=(serialNum>>8) & 0xff;
-	open_CMD[5]= serialNum & 0xff;
-												
-	uint32_t userid = btFrame.userId;//用户id
-	open_CMD[6]=(userid>>24) & 0xff;
-	open_CMD[7]=(userid>>16) & 0xff;
-	open_CMD[8]=(userid>>8) & 0xff;
-	open_CMD[9]= userid & 0xff;
-												
-	uint32_t ntime = btFrame.Ntime;//现在时间
-	open_CMD[10]=(ntime>>24) & 0xff;
-	open_CMD[11]=(ntime>>16) & 0xff;
-	open_CMD[12]=(ntime>>8) & 0xff;
-	open_CMD[13]= ntime & 0xff;
-												
-	open_CMD[14] = btFrame.Autoseal;//自动施封时间										
-													
-	sendCombinedArray(header,sizeof(header),open_CMD,sizeof(open_CMD));
-	Echo_BT(20);
+	}  
 }
 }
 
 
 /**
 /**
-  * @breaf 蓝牙关锁信息帧
+  * @breaf 01-key跳转回按键后current跳转0x0C
   */
   */
-void close_lock(Bt_frame btFrame)					//蓝牙关锁信息帧
-{
-	uint8_t header[2] 	= {0x66, 0x00};//Jl_lock帧头
-	uint8_t close_CMD[] = {0x03, 0x0B};//关锁命令帧
-	sendCombinedArray(header,sizeof(header),close_CMD,sizeof(close_CMD));
-	Echo_BT(20);
-}
-
-
-
-void Seal_Unseal(void)
+void Seal_Unseal_Jumptips(void)
 {
 {
 	if (menu.enter == 4)
 	if (menu.enter == 4)
 	{
 	{
@@ -393,28 +611,92 @@ void Seal_Unseal(void)
 		{
 		{
 			if (menu.up == 1)
 			if (menu.up == 1)
 			{
 			{
-				// 施封操作
-				close_lock(btFrame);
-				HAL_Delay(1000);
-				menu.current=0;
-				refresh=true;
-				
+				menu.current = 0x0C;		
+				HAL_Delay(300);
 			}
 			}
 			else if (menu.up == 0)
 			else if (menu.up == 0)
 			{
 			{
-				// 解封操作
-				open_lock(btFrame);
-				HAL_Delay(1000);
-				menu.current=0;
-				refresh=true;
+				menu.current =  0x0C;		
+				HAL_Delay(300);
 			}
 			}
 		}
 		}
 	}
 	}
 }
 }
 
 
 
 
-void tips()
+/**
+  * @breaf 02-设置锁位状态
+  * @enter InProgress
+  */
+unsigned char warning[]="WARNING";
+unsigned char left[]="<<";
+unsigned char right[]=">>";
+void tips(void)
 {
 {
+	if (tipsflag == Default) {
+		// 执行默认操作
+		
+	} else if (tipsflag == InProgress) {	
+		
+		tipsflag = Default;
+		OLED_ShowString(37,5,warning,16,0);
+		OLED_ShowString(13,32, right,16,1);
+		OLED_ShowString(95,32,left,16,1);
+		// 执行操作中的操作
+		OLED_ShowChinese(38,32,22,16,1);//操
+		OLED_ShowChinese(58,32,23,16,1);//作
+		OLED_ShowChinese(78,32, 0,16,1);//中
+	}
+	else if (tipsflag == Abnormal_motor)
+    {
+		OLED_ShowString(20,52,">>",12,1);				//显示ASCII字符	 
+		OLED_ShowChinese(38,52,17,12,1);//电
+		OLED_ShowChinese(51,52,18,12,1);//机
+		OLED_ShowChinese(64,52,19,12,1);//异
+		OLED_ShowChinese(77,52,20,12,1);//常
+		OLED_ShowString(92,52,"<<",12,1);				//显示ASCII字符	 
+    }
+	else {
+		// 处理其他情况
+		
+	}
+	
 	
 	
 }
 }
 
 
+/**
+  * @breaf 03-扫描锁位状态
+  */
+void Scan_lock_status(void)
+{
+	if(bt_lock_machinesta==0x01 && bt_lock_ropesta==0x00 && g_MBA32A_8buf_Down[0]==0x66)//0x01电机关 0x00锁绳插入
+	{
+		tipsflag = Default;
+		menu.home=0xF000;//关(全部关闭)
+	}
+	else if(bt_lock_machinesta==0x00 && bt_lock_ropesta==0x01 && g_MBA32A_8buf_Down[0]==0x66)
+	{
+		tipsflag = Default;
+		menu.home=0x1000;//开(全部开启)
+	}
+	else if(bt_lock_ropesta==0x00 && bt_lock_machinesta==0x00 && g_MBA32A_8buf_Down[0]==0x66)
+	{
+		tipsflag = Default;
+		menu.home=0x1000;//开(电机打开,锁绳插入,可按键拔出)
+	}
+	else if(bt_lock_ropesta==0x01 && bt_lock_machinesta==0x00 && g_MBA32A_8buf_Down[0]==0x66)
+	{
+		tipsflag = Default;
+		menu.home=0x1000;//开(电机关闭,锁绳拔出)
+	}
+	else if(bt_lock_ropesta==0x01 && bt_lock_machinesta==0x01 && g_MBA32A_8buf_Down[0]==0x66)
+	{
+		tipsflag = Default;
+		menu.home=0x1000;//开(电机关闭,锁绳拔出)
+	}
+	else if(bt_lock_machinesta == 0x02 && g_MBA32A_8buf_Down[0]==0x66)
+	{
+		tipsflag = Abnormal_motor;
+	}
+
+}

+ 2 - 3
Core/Src/usart.c

@@ -22,8 +22,6 @@
 
 
 /* USER CODE BEGIN 0 */
 /* USER CODE BEGIN 0 */
 
 
-
-
 /* USER CODE END 0 */
 /* USER CODE END 0 */
 
 
 UART_HandleTypeDef huart4;
 UART_HandleTypeDef huart4;
@@ -618,7 +616,8 @@ PUTCHAR_PROTOTYPE
 /**
 /**
   *	@brief printfÈ«¾Ö´òÓ¡
   *	@brief printfÈ«¾Ö´òÓ¡
   */
   */
-	UART_PRINT(&huart3);//TTL
+
+  UART_PRINT(&huart3);//TTL
   return ch;
   return ch;
 }
 }
 
 

+ 1 - 6
MDK-ARM/dtu.uvoptx

@@ -140,7 +140,7 @@
         <SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
           <Number>0</Number>
           <Key>JL2CM3</Key>
           <Key>JL2CM3</Key>
-          <Name>-U69618568 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103RE$Flash\STM32F10x_512.FLM)</Name>
+          <Name>-U69618568 -O78 -S3 -ZTIFSpeedSel3000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103RE$Flash\STM32F10x_512.FLM)</Name>
         </SetRegEntry>
         </SetRegEntry>
         <SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
           <Number>0</Number>
@@ -158,11 +158,6 @@
         <Ww>
         <Ww>
           <count>1</count>
           <count>1</count>
           <WinNumber>1</WinNumber>
           <WinNumber>1</WinNumber>
-          <ItemText>dev2</ItemText>
-        </Ww>
-        <Ww>
-          <count>2</count>
-          <WinNumber>1</WinNumber>
           <ItemText>dev1</ItemText>
           <ItemText>dev1</ItemText>
         </Ww>
         </Ww>
       </WatchWindow1>
       </WatchWindow1>

文件差异内容过多而无法显示
+ 3114 - 3061
Output/dtu.hex