瀏覽代碼

0220_commit-from_zack

zack 1 年之前
父節點
當前提交
cff209d2c0
共有 20 個文件被更改,包括 4491 次插入4499 次删除
  1. 100 43
      Core/Inc/ConfigMacros.h
  2. 2 17
      Core/Inc/interface.h
  3. 0 11
      Core/Inc/key.h
  4. 3 35
      Core/Inc/main.h
  5. 3 37
      Core/Inc/mba32a.h
  6. 2 7
      Core/Inc/usart.h
  7. 21 592
      Core/Src/freertos.c
  8. 831 258
      Core/Src/interface.c
  9. 117 248
      Core/Src/key.c
  10. 16 65
      Core/Src/main.c
  11. 231 311
      Core/Src/mba32a.c
  12. 2 2
      Core/Src/net4g.c
  13. 1 1
      Core/Src/oled.c
  14. 1 2
      Core/Src/rtc.c
  15. 11 70
      Core/Src/stm32f1xx_it.c
  16. 40 115
      Core/Src/usart.c
  17. 44 86
      MDK-ARM/dtu.uvoptx
  18. 0 5
      MDK-ARM/dtu.uvprojx
  19. 3066 2593
      Output/dtu.hex
  20. 0 1
      Output/dtu.lnp

+ 100 - 43
Core/Inc/ConfigMacros.h

@@ -1,51 +1,108 @@
 #ifndef __CONFIGMACROS_H
 #define __CONFIGMACROS_H
 
+#include "oled.h"
+#include "key.h"
+#include "interface.h"
 
-#define TIM2_IT_EN()				HAL_TIM_Base_Start_IT(&htim2);						//定时器2中断
-#define TIM3_IT_EN() 				HAL_TIM_Base_Start_IT(&htim3);						//定时器3中断
 
-#define OLED_INIT_EN()          	OLED_Init();											//初始化oled
-#define OLED_COLOR_EN()     		OLED_ColorTurn(0);									//颜色显示	>> 0正常显示,1 反色显示
-#define OLED_DISPLAY_EN()   		OLED_DisplayTurn(0); 								//屏幕显示	>> 0正常显示, 1 屏幕翻转显示
+/**
+  * @breaf 简化函数单体
+  */
+#define open16			11	//开字
+#define close16			12	//关字
+
+#define resetDevAddr					((uint32_t)0x8075000)  
+#define TIM_Start(htim) 				HAL_TIM_Base_Start_IT(htim)
+#define LED_TOGGLE(pin)       			HAL_GPIO_TogglePin(GPIOC, (pin))		//运行灯
+#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 HELLO(message) 					printf("%s\r\n", message)
+
+
+/**
+  * @breaf 简化函数多体
+  */
+#define OLED_DISPLAY(color, display) do { \
+    OLED_Init(); \
+    OLED_ColorTurn(color); \
+    OLED_DisplayTurn(display);  \
+} while(0)
+
+#define SET_MENU_STATUS(current_value, up_value, next_value, enter_value) \
+do { \
+    menu.current = current_value; \
+    menu.up = up_value; \
+    menu.next = next_value; \
+    menu.enter = enter_value; \
+		refresh = true;\
+} while(0)
+
+#define TOGGLE_WDI_PIN(htim_instance) \
+do { \
+    if ((htim_instance)->Instance == TIM2) { \
+        HAL_GPIO_TogglePin(WDI_GPIO_Port, WDI_Pin); \
+    } \
+} while(0)
+
+#define UPDATE_EXECUTE_REFRESH() \
+do { \
+    updatekeystate(); \
+    execute_interface(menu); \
+    OLED_Refresh(); \
+} 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
+
+
+
+/**
+  * @breaf 结构体定义
+  */
+typedef struct
+{
+    uint8_t current;		//当前状态索引号
+    uint8_t up; 			//向下一个
+    uint8_t next; 			//向下一个
+    uint8_t enter; 	    	//确定
+	unsigned char* sn; 	//sn
+	uint32_t home;
 	
-#define UART_DMA_1_EN(recvBuff)   	enableUartAndReceiveDMA(&huart1, recvBuff);			//DMA1接收中断
-#define UART_DMA_2_EN(recvBuff)   	enableUartAndReceiveDMA(&huart2, recvBuff);			//DMA2接收中断
-#define UART_DMA_3_EN(recvBuff)   	enableUartAndReceiveDMA(&huart3, recvBuff);			//DMA3接收中断
-#define UART_DMA_4_EN(recvBuff)   	enableUartAndReceiveDMA(&huart4, recvBuff);			//DMA4接收中断
-#define UART_IT_5_EN(g_MBA32A_8buf) 	enableUartAndReceiveIT(&huart5, g_MBA32A_8buf);		//uart5接收中断
-#define LED_TOGGLE()					HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_9);				//运行灯
-
-#define HELLO()   					printf("DTU start_0\r\n");
-
-#define timHand						1					//1开启 0关闭	时间中断
-#define oledOpen						1					//1开启 0关闭	oled显示
-#define uartHand						1					//1开启 0关闭	串口中断
-#define respects						1					//1开启 0关闭	开机响应
-#define init_4G						0					//1开启 0关闭	4G初始化
-#define init_BT						1					//1开启 0关闭	BT初始化
-#define ledToggle					1					//1开启 0关闭	运行闪烁灯
+} Menu_table;
+
+
+struct keys
+{
+	unsigned char judge_sta;	//判断按键按键按下的动作到了第几步
+	bool key_sta;				//如果按键被按下,为0
+	bool key_flag;				//如果确认被按下,为1
+};
+
+typedef struct
+{
+    uint32_t serialNum;	//4字节流水号
+		uint32_t userId;	 	//4字节userid
+		uint32_t Ntime;			//4字节时间
+		uint8_t	 Autoseal;	//1字节自动施封
 	
-#define keyDebuginfo					0					//1开启 0关闭	key打印info
-#define ClearOled		 			0					//1开启 0关闭	清除oledInfo
-#define debug4GInfo	 				0					//1开启 0关闭	4GInfoDisplay
-#define debugBTInfo	 				1					//1开启 0关闭	BTInfoDisplay
-
-//printf
-#define UART_485_EN					0					//1开启 0关闭	485发送使能
-#define UART_232_EN					0					//1开启 0关闭	232发送使能
-#define UART_TTL_EN					1					//1开启 0关闭	TTL发送使能
-#define UART_4G_EN					0					//1开启 0关闭	向4G发送使能
-#define UART_BT_EN					0					//1开启 0关闭	向BT发送使能
-
-//测试功能模块
-#define CAN_TEST						0					//1开启 0关闭	can测试
-#define RTC_TEST						0					//1开启 0关闭	rtc测试
-#define RESET_4G_TEST				0					//1开启 0关闭	4G复位测试
-#define RESET_BT_TEST				0					//1开启 0关闭	BT复位测试
-#define WDI_EN						1					//1开启 0关闭	看门狗		
-
-//测试
-#define WORK_4G_TEST					0					//1开启 0关闭	4G工作测试
-#define WORK_BT_TEST					1					//1开启 0关闭	BT工作测试
+} Bt_frame;
+
+
+
 #endif /*__CONFIGMACROS_H*/

+ 2 - 17
Core/Inc/interface.h

@@ -3,23 +3,8 @@
 #include "main.h"
 
 
+void asc_display(unsigned char *asc);
 
-
-
-void home(unsigned char L1_s);
-void mainMenu(void);	//主菜单(SN+上锁)
-void SNbinding(void);	//SN绑定界面
-void chooseBt(void);	//蓝牙绑定
-void workMenu(void);	//对锁作业
-						//默认显示
-void setLock(void);		//操作锁	
-
-
-
-void dtustart(void);
-void tiemout(void);
-
-void ReadMba32aStatus(void);
-
+	
 #endif /*__INTERFACE_H*/
 

+ 0 - 11
Core/Inc/key.h

@@ -1,7 +1,6 @@
 #ifndef __KEY_H
 #define __KEY_H
 #include "main.h"
-//#include "ConfigMacros.h"
 
 
 
@@ -12,16 +11,6 @@ void updatekeystate(void);
 
 
 
-
-
-
-
-
-
-
-
-
-
 #endif /*__KEY_H*/
 
 

+ 3 - 35
Core/Inc/main.h

@@ -31,41 +31,19 @@ extern "C" {
 
 /* Private includes ----------------------------------------------------------*/
 /* USER CODE BEGIN Includes */
-#include "stdbool.h"
 #include "stdio.h"
-
-#include "net4g.h"
-#include "oled.h"
-#include "key.h"
-#include "interface.h"
 #include "string.h"
+#include "stdbool.h"
+
 #include "mba32a.h"
 #include "ConfigMacros.h"
-//#include "bmp.h"
 
-//#include "bmp.h"
+
 
 /* USER CODE END Includes */
 
 /* Exported types ------------------------------------------------------------*/
 /* USER CODE BEGIN ET */
-struct keys
-{
-	unsigned char judge_sta;	//判断按键按键按下的动作到了第几步
-	bool key_sta;				//如果按键被按下,为0
-	bool key_flag;				//如果确认被按下,为1
-};
-typedef struct
-{
-    uint8_t current;	//当前状态索引号
-    uint8_t up; 		//向下一个
-    uint8_t next; 		//向下一个
-    uint8_t enter; 	    //确定
-	uint8_t back; 		//退出
-	unsigned char* sn; 		//sn
-	unsigned char home;
-	
-} Menu_table;
 
 
 /* USER CODE END ET */
@@ -78,10 +56,6 @@ typedef struct
 /* Exported macro ------------------------------------------------------------*/
 /* USER CODE BEGIN EM */
 
-#define BUFFER_SIZE 256
-extern uint8_t recvBuff[BUFFER_SIZE];  //接收数据缓存
-extern volatile uint8_t recvLength;  //接收一帧数据的长度
-extern volatile uint8_t recvDndFlag; //一帧数据接收完成标志
 /* USER CODE END EM */
 
 /* Exported functions prototypes ---------------------------------------------*/
@@ -89,8 +63,6 @@ void Error_Handler(void);
 
 /* USER CODE BEGIN EFP */
 
-void updatekeystate(void);
-void execute_function(Menu_table menu);
 /* USER CODE END EFP */
 
 /* Private defines -----------------------------------------------------------*/
@@ -120,10 +92,6 @@ void execute_function(Menu_table menu);
 /* USER CODE BEGIN Private defines */
 
 
-#define open16			11
-#define close16			12
-
-#define resetDevAddr			((uint32_t)0x8075000)  
 /* USER CODE END Private defines */
 
 #ifdef __cplusplus

+ 3 - 37
Core/Inc/mba32a.h

@@ -3,47 +3,13 @@
 #include "main.h"
 
 
-
-
-
-
 extern uint8_t g_MBA32A_8buf[1024];
 extern uint8_t g_MBA32A_8buf_Down[1024];
 
-extern uint8_t u5RecvFlag;    
-extern char receiveBuffer[100];
-
-extern bool resetMBA32A ;
-
-
+void workinfo_W(void);
 void MBA32A_Init(void);
-void MBA32AReset(void);
-void clearBuf_BT(void);
-uint8_t sendCmd_BT(char *pCmd, char *pRes, uint32_t timeOut, uint8_t sendNum);
-
-
-
-void workinfo(void);
 void lock_searchInfo(void);
-
-void close_lock(void);
-void open_lock(void);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+void Scan_lock_status(void);
+void Seal_Unseal(void);
 #endif /*__MBA32A_H*/
 

+ 2 - 7
Core/Inc/usart.h

@@ -54,15 +54,10 @@ void MX_USART2_UART_Init(void);
 void MX_USART3_UART_Init(void);
 
 /* USER CODE BEGIN Prototypes */
-void enableUartAndReceiveDMA(UART_HandleTypeDef *huart, uint8_t *recvBuff) ;
-void enableUartAndReceiveIT(UART_HandleTypeDef *huart, uint8_t *recvBuff) ;
-int countValidData(uint8_t arr[], int size, int invalidValue);
-void addToCombinedArray(uint8_t combinedArray[], uint8_t header[], uint8_t cmd_array[], uint16_t result_frame);
-uint8_t xorBytes(uint8_t arr[], int size);
-uint16_t crc16(uint8_t *data, size_t len) ;
-void sendCombinedArray(uint8_t *header, size_t headerLength, uint8_t *command, size_t commandLength);
+
 uint16_t read_flash_16(uint32_t addr);
 void Write_Information(uint32_t addr);
+void sendCombinedArray(uint8_t *header, size_t headerLength, uint8_t *command, size_t commandLength);
 /* USER CODE END Prototypes */
 
 #ifdef __cplusplus

+ 21 - 592
Core/Src/freertos.c

@@ -25,10 +25,6 @@
 
 /* Private includes ----------------------------------------------------------*/
 /* USER CODE BEGIN Includes */
-#include "usart.h"
-#include "can.h"
-#include "ConfigMacros.h"
-//#include "net4g.h"
 
 /* USER CODE END Includes */
 
@@ -44,37 +40,16 @@
 
 /* Private macro -------------------------------------------------------------*/
 /* USER CODE BEGIN PM */
-uint8_t test  = 0;
-uint8_t count = 0;
+
 extern Menu_table menu;
-extern UART_HandleTypeDef huart1;
-extern UART_HandleTypeDef huart2;
-extern UART_HandleTypeDef huart3;
-extern UART_HandleTypeDef huart4;
-extern UART_HandleTypeDef huart5;
-extern unsigned char SN1[];
-extern char DisConnected[];
-extern char Connected_phone[];
-extern bool warningtag ;
-extern bool resetML307A;
 extern bool refresh; 
-extern bool resetFlag;
-extern bool sealFlag; 
 extern bool BT_CONN;
-extern bool REBOOT;
-extern bool	bd_flag;	//已绑定标志位
-extern bool	open_flagw;
-extern bool	close_flagw;
-extern bool bt_lock_ropesta;
-extern bool bt_lock_machinesta;
-
-extern uint8_t u4RecvFlag;      // 串口4接收标志串口接收完成标志
-extern RTC_HandleTypeDef hrtc;
-extern CAN_HandleTypeDef hcan;
-
-RTC_DateTypeDef GetData;  //获取日期结构体
-RTC_TimeTypeDef GetTime;   //获取时间结构体
+extern bool resetBTmodule;
 
+extern bool L1bd;		
+extern bool L2bd;		
+extern bool L3bd;		
+extern bool L4bd;		
 /* USER CODE END PM */
 
 /* Private variables ---------------------------------------------------------*/
@@ -88,6 +63,8 @@ osThreadId loginfoTaskHandle;
 /* Private function prototypes -----------------------------------------------*/
 /* USER CODE BEGIN FunctionPrototypes */
 
+void execute_interface(Menu_table menu);
+
 /* USER CODE END FunctionPrototypes */
 
 void StartScanKeyTask(void const * argument);
@@ -176,10 +153,9 @@ void StartScanKeyTask(void const * argument)
   for(;;)
   {
     osDelay(1);
-		updatekeystate();
-		execute_function(menu);
-		OLED_Refresh();
-	  workinfo();			//搬移蓝牙数据
+	UPDATE_EXECUTE_REFRESH();// 更新按键状态,执行界面操作,并刷新OLED
+	workinfo_W();
+	RESET_BT_MODULE();
   }
   /* USER CODE END StartScanKeyTask */
 }
@@ -198,113 +174,9 @@ void StarBT4GTask(void const * argument)
   /* Infinite loop */
   for(;;)
   {
-	  
     osDelay(1);
-
-	  if(resetMBA32A)			//freertos监测蓝牙复位标志位
-	  {
-			MBA32A_Init();
-	  }
-	  else if(warningtag)	//freertos监测施解封确认标志位
-	  {
-		  HAL_Delay(2000);	//延时显示1.2s
-		  menu.current=0;		//回到首界面显示
-		  refresh=true;			//清除界面元素标志位
-		  warningtag=false;	//复位施解封确认标志位
-		  Write_Information(resetDevAddr+FLASH_PAGE_SIZE);
-		  //printf("******解封标志:%s\t%d   %d   %d   %d   %d\n",(sealFlag ? "true":"false"), menu.current, menu.up, menu.next, menu.enter, menu.back);
-	  }
-	  
-		else if(REBOOT && bd_flag)//初始化完成,并且已经绑定
-		{
-			
-			BT_CONN=true;
-
-			if(bt_lock_ropesta==0x01 && bt_lock_machinesta==0x01)// 0x01电机关 0x01锁绳拔出
-			{
-					menu.home=0x04;//关(电机关上,锁绳未插入)
-					menu.sn=SN1;
-			}
-			else if(bt_lock_ropesta==0x01 && bt_lock_machinesta==0x00)// 0x00电机开 0x01锁绳拔出
-			{
-					menu.home=0x01;//开(全部打开)
-					menu.sn=SN1;
-			}
-			else if(bt_lock_ropesta==0x00 && bt_lock_machinesta==0x00)//0x00电机开 0x00锁绳插入
-			{
-					menu.home=0x03;//开(电机没关,锁绳已插入)
-					menu.sn=SN1;
-			}
-			else if(bt_lock_ropesta==0x00 && bt_lock_machinesta==0x01)//0x01电机关 0x00锁绳插入
-			{
-					menu.home=0x02;//关(全部关闭)
-					menu.sn=SN1;
-			}
-
-			else
-			{
-				//default status
-					menu.home=0;
-					menu.sn=SN1;
-			}
-		}
-		else
-		{
-			//default status
-				menu.home=0;
-				menu.sn=SN1;
-		}
-
-	
-//	USART_SendString(&huart5, "AT+MAC?\r\n");
-//	HAL_Delay(100);
-//	printf("%s", g_MBA32A_8buf_Down); // 使用接收缓冲区的内容
-//	USART_SendString(&huart5, "AT+DISCONN=0\r\n");
-//	  HAL_Delay(50);
-//	USART_SendString(&huart5, "AT+AUTO_DEL\r\n");
-//	  HAL_Delay(50);
-//	USART_SendString(&huart5, "AT+RESET=1\r\n");
-	  
-//	USART_SendString(&huart5, "AT+UUIDS?\r\n");
-//	HAL_UART_Transmit(&huart1,g_MBA32A_8buf_Down, 30, 0xFFFF);//485回显
-//	USART_SendString(&huart5, "AT+UUIDW?\r\n");
-//	HAL_UART_Transmit(&huart1,g_MBA32A_8buf_Down, 30, 0xFFFF);//485回显
-//	USART_SendString(&huart5, "AT+UUIDN?\r\n");
-//	HAL_UART_Transmit(&huart1,g_MBA32A_8buf_Down, 30, 0xFFFF);//485回显
-	  
-
-	  
-//	  if(UART_485_EN)
-//	  {
-//			printf("485 output\r\n");
-//	  }
-//	  if(UART_TTL_EN)
-//	  {
-//			printf("TTL output\r\n");
-//	  }
-
-//	if(test==1)
-//	{
-		//test=0;
-		//int txLen = sprintf((char *)recvBuff, "RecvAT>>%s<<",g_ML307A_8buf_Down);//4g
-//		int txLen = sprintf((char *)recvBuff, "RecvAT>>\r\n%s<<",g_MBA32A_8buf);//bt
-//		HAL_UART_Transmit(&huart3,recvBuff,txLen,0xffff);	
-
-//		memcpy(g_ML307A_8buf_Down,g_ML307A_8buf,20);
-//		
-//		printf("buf:%s\r\n",g_MBA32A_8buf);
-//		printf("bufD:%s\r\n",g_ML307A_8buf_Down);
-
-  
-//	}
-//	test ++;
-//	
-//	if(test==2)
-//	{
-//		test =0;
-//		
-//	}
-	//printf("%d\r\n",test);
+	Scan_lock_status();//扫描状态
+	Seal_Unseal();//施解封监测
 
   }
   /* USER CODE END StarBT4GTask */
@@ -320,460 +192,13 @@ void StarBT4GTask(void const * argument)
 void StartTestTask(void const * argument)
 {
   /* USER CODE BEGIN StartTestTask */
-	
-#ifdef CAN_TEST
-	#if CAN_TEST ==1
-	CAN_TxHeaderTypeDef TxHeader;
-	uint8_t TxData[8] = {1, 2, 3, 4, 5, 6, 7, 8};
-	uint32_t TxMailbox;
-	TxHeader.StdId = 0x123;
-	TxHeader.ExtId = 0;
-	TxHeader.RTR = CAN_RTR_DATA;
-	TxHeader.IDE = CAN_ID_STD;
-	TxHeader.DLC = 8;
-	TxHeader.TransmitGlobalTime = DISABLE;
-	CAN_RxHeaderTypeDef RxHeader;  // 添加这行定义RxHeader变量
-	uint8_t RxData[8];  // 添加这行定义RxData变量
-	#endif
-#endif
+
   /* Infinite loop */
   for(;;)
   {
-    osDelay(1500);
-#ifdef WORK_BT_TEST
-	#if WORK_BT_TEST ==1
-	{
-		test++;
-	
-//测试协议报文		
-//	uint8_t header[2] = {0x66, 0x00};//Jl_lock帧头
-//	//uint8_t serchInfo_CMD[] = {0x01, 0x00};//查询信息命令帧
-//	uint8_t openlock_CMD[] = {0x00,0x00,       0x00,0x00,0x00,0x01,      0x55,0x55,0x55,0x55,    0x24,0x02,0x04,0x0E     ,0x01};//开锁命令帧
-//	uint8_t openlock_head = 0x02;
-//	uint8_t openlock_length = (sizeof(openlock_CMD)-2);
-//	openlock_CMD[0]=openlock_head;
-//	openlock_CMD[1]=openlock_length;
-//	sendCombinedArray(header,sizeof(header),openlock_CMD,sizeof(openlock_CMD));
-
-
-		if(close_flagw && (open_flagw==false))
-		{
-			close_lock();
-		}
-		else if(open_flagw && (close_flagw==false))
-		{
-			open_lock();
-		}
-		else if((close_flagw==false)&&(open_flagw==false)&& bd_flag)
-		{
-			lock_searchInfo();
-		}
-
-		//open_lock();
-//		close_lock();
-
-	
-//测试条件语句		
-//	USART_SendString(&huart5, "AT+RESET=1\r\n");
-//	HAL_Delay(50);
-//	HAL_UART_Transmit(&huart1,g_MBA32A_8buf_Down, 30, 0xFFFF);//485回显
-//	  
-	
-//		test++;
-
-//			USART_SendString(&huart5, "AT+DEV?\r\n");
-//			HAL_Delay(100);
-//			printf("%s", g_MBA32A_8buf_Down); // 使用接收缓冲区的内容
-//			USART_SendString(&huart5, "AT+NAME?\r\n");
-//			HAL_Delay(100);
-//			printf("%s", g_MBA32A_8buf_Down); // 使用接收缓冲区的内容
-//			USART_SendString(&huart5, "AT+MAC?\r\n");
-//			HAL_Delay(100);
-//			printf("%s", g_MBA32A_8buf_Down); // 使用接收缓冲区的内容
-		
-			//USART_SendString(&huart5, "AT+RESET=1\r\n");
-//			HAL_Delay(100);
-//			USART_SendString(&huart5, "AT+CONN=1500000000cb\r\n");//连接指定 MAC 地址设备
-//			HAL_Delay(100);
-////			USART_SendString(&huart5, "AT+DEV?\r\n");	//查询当前已连接的设备
-//			count = countValidData(g_MBA32A_8buf,1024,0);
-//			printf("Mbabuf:%s\r\n_%d\r\n",g_MBA32A_8buf,count);
-			
-			{
-			/**蓝牙发送命令无需带内冒号**/
-		//BLE 协议说明
-		//0xfff2	Write	写入的数据会从串口TX输出
-		//0xfff1	Notify	从串口 RX 输入的数据将会在此通道产生通知发给移动设备!!!移动接收
-		//APP 通过 0xFFF2 通道 将数据发送给 MCU:MCU 通过 0xFFF1 通道将数据发送给 APP,用户也可通过 AT 指令对读写通道进行自定义。
-				
-				
-				
-	//		USART_SendString(&huart5, "AT+UUIDS=0000000200001000800000805f9b34fb\r\n");	//设置主服务通道
-	//		HAL_Delay(50);
-	//		USART_SendString(&huart5, "AT+UUIDN=0000ff0500001000800000805f9b34fb\r\n");	//设置读服务通道
-	//		HAL_Delay(50);
-	//		USART_SendString(&huart5, "AT+UUIDW=0000ff0400001000800000805f9b34fb\r\n");	//设置写服务通道
-	//		HAL_Delay(50);
-	//		USART_SendString(&huart5, "AT+UUIDS=0000180100001000800000805f9b34fb\r\n");	//设置主服务通道
-	//		HAL_Delay(50);		
-			//USART_SendString(&huart5, "AT+RESET=1\r\n");//恢复出厂设置	//	USART_SendString(&huart5, "AT+RESET=1\r\n");//恢复出厂设置
-	//		USART_SendString(&huart5, "AT+NAME?\r\n");//23字节(0-22)
-	//		HAL_Delay(50);
-	//		printf("%s",g_MBA32A_8buf);
-			//USART_SendString(&huart5, "AT+MAC?\r\n");	//查询蓝牙 4.0 地址码
-	//		HAL_Delay(50);
-	//		printf("1%s",g_MBA32A_8buf);
-	//		printf("2%s",&g_MBA32A_8buf[23]);
-	//		HAL_Delay(100);
-			//USART_SendString(&huart5, "AT+DEV?\r\n");	//查询当前已连接的设备		
-	//		HAL_UART_Receive(&huart5,&g_MBA32A_8buf[0],20,150);
-	//		printf("%s\r\n",g_MBA32A_8buf);
-			//USART_SendString(&huart5, "AT+RESET=1\r\n");//恢复出厂设置
-	//		HAL_Delay(100);
-	
-//			USART_SendString(&huart5, "AT+CONN=1500000000cb\r\n");	
-//			HAL_Delay(100);
-//			printf("%s", g_MBA32A_8buf_Down); // 使用接收缓冲区的内容
-			
-			
-			
-			
-	//		USART_SendString(&huart5, "AT+UUIDN?\r\n");	
-	//		HAL_Delay(100);
-	//		USART_SendString(&huart5, "AT+UUIDW?\r\n");	
-	//		USART_SendString(&huart5, "AT+DISCONN=0\r\n");
-	//		USART_SendString(&huart5, "AT+CONN=1500000000cb\r\n");//连接指定 MAC 地址设备
-	//		USART_SendString(&huart5, "AT+UUIDS=0000fff000001000800000805f9b34fb\r\n");	//设置主服务通道
-	//		USART_SendString(&huart5, "AT+UUIDW=0000ff0500001000800000805f9b34fb\r\n");	//设置写服务通道
-	//		USART_SendString(&huart5, "AT+UUIDN=0000ff0400001000800000805f9b34fb\r\n");	//设置读服务通道
-	//		USART_SendString(&huart5, "AT+AUTO_CFG=1\r\n");
-	//		HAL_Delay(100);
-	//		USART_SendString(&huart5, "AT+AUTO_MAC=1500000000cb\r\n");
-	//		HAL_Delay(100);		
-	//		USART_SendString(&huart5, "AT+CONN=1500000000cb\r\n");//连接指定 MAC 地址设备
-	//		HAL_Delay(100);
-	//		USART_SendString(&huart5, "AT+TXPOWER=10\r\n");	
-	//		uint8_t data[] = {0x01, 0x00,0x00};
-	//		HAL_UART_Transmit(&huart1,data,3,0xffff);
-	//		HAL_UART_Transmit(&huart5,data,3,0xffff);
-	//		uint8_t len = sizeof(data) / sizeof(data[0]);
-	//		uint8_t data_open[] = {0x02, 0x04,0x01,0,0,0};
-	//		uint8_t len = sizeof(data_open) / sizeof(data_open[0]);
-	//		uint8_t crc = crc16(data_open, len);
-	//		uint8_t sendData[len + 1];
-	//		for (uint8_t i = 0; i < len; i++) {
-	//			sendData[i] = data_open[i];
-	//		}
-	//		sendData[len] = crc;
-			//printf("Send Data with CRC: ");
-	//		for (uint8_t i = 0; i < len + 1; i++) {
-	//			printf("%02X ", sendData[i]);
-	//		}
-			//printf("\n");
-			//USART_SendString(&huart5, "AT+SCAN=1\r\n");//查询扫描蓝牙 4.0 BLE 设备(0-关闭 1-开启)
-	//		USART_SendString(&huart5, "AT+UUIDW?\r\n");	//查询 BLE 写服务通道fff2
-	//		HAL_UART_Receive(&huart5,g_MBA32A_8buf,BUFFER_SIZE,100);
-	//		USART_SendString(&huart5, "AT+DISCONN=1\r\n");//断开蓝牙连接(0-断开所有连接的从设备 1-主动断开与主机端设备的连接)
-	//		USART_SendString(&huart5, "AT+AINTVL?\r\n");//查询广播间隔 单位ms
-	//		HAL_Delay(50);
-	//		USART_SendString(&huart5, "AT+VER?\r\n");	//读取软件版本
-	//		HAL_Delay(50);
-	//		USART_SendString(&huart5, "AT+TXPOWER?\r\n");//查询模块的发射功率
-	//		HAL_Delay(50);
-	//		int count = countValidData(g_MBA32A_8buf,256,0);
-	//		if(count<2)
-	//		{
-	//			test = 0;
-	//			//HAL_Delay(100);
-	//		}else {
-	//			printf("mba:%s-%d",g_MBA32A_8buf,count);
-	//		}
-		//	USART_SendString(&huart5, "AT+REBOOT=1\r\n");//设置模块重启
-		//	USART_SendString(&huart5, "AT+SCAN_MANU=1\r\n");//扫描蓝牙自定义广播数据
-	//		USART_SendString(&huart5, "AT+SCAN=1\r\n");//查询扫描蓝牙 4.0 BLE 设备(0-关闭 1-开启)
-	//		HAL_Delay(200);
-		//	USART_SendString(&huart5, "AT+CONN=DC:2D:04:C7:21:8A\r\n");//连接指定 MAC 地址设备
-		//	USART_SendString(&huart5, "AT+DISCONN=0\r\n");//断开蓝牙连接(0-断开所有连接的从设备 1-主动断开与主机端设备的连接)
-		//	USART_SendString(&huart5, "AT+ADV?\r\n");//查询广播状态(0-关闭 1-开启)
-		//	USART_SendString(&huart5, "AT+UART?\r\n");//查询模块串口波特率(0:9600/ 1:14400/ 2:19200/ 3:38400/ 4:57600/ 5:115200/ 6:230400)
-	//	}	
-	//	}
-			//USART_SendString(&huart5, "AT+DEV?\r\n");//查询当前已连接的设备
-		//}
-	//	else if(test == 3)
-	//	{
-	//		//USART_SendString(&huart5, "AT+VER?\r\n");//查询当前已连接的设备
-	//	}		   
-//		}
-		}	
-	}
-	#endif
-#endif
-	  
-	  
-#ifdef WORK_4G_TEST  	
-	#if WORK_4G_TEST == 1  	  
-{
-//if(test==1)
-//{		  
-//1 必须步骤AT
-	//USART_SendString(&huart4, "AT\r\n");
-	
-//2 查询SIM卡状态
-	//USART_SendString(&huart4, "AT+CPIN?\r\n");
-	  
-//3 查询协议栈是否打开(return 1)
-	//USART_SendString(&huart4, "AT+CFUN?\r\n");//确保驻网前为1
-	  
-//4 查询信号质量(小于10表示信号弱)
-	//USART_SendString(&huart4, "AT+CSQ\r\n");
-	
-//5 设置APN(中国移动 return ok)
-	//USART_SendString(&huart4, "AT+CGDCONT=1,\"IP\",\"CMNET\"\r\n");
-	
-//6 查询是否驻网成功 (return 0,1)
-	//USART_SendString(&huart4, "AT+CEREG?\r\n");//查看是否附着(驻网)成功
-	
-//7 激活PDP (return ok))
-	//USART_SendString(&huart4, "AT+CGACT=1,1\r\n");
-	
-//8 测试tcp连接(网址为ubuntu公网)
-	//USART_SendString(&huart4, "AT+MIPOPEN=1,\"TCP\",\"121.36.7.137\",22\r\n");
-	//USART_SendString(&huart4, "AT+MIPCLOSE=1\r\n");
-
-//9连接mqtt
-
-
-//若省略可选参数,则是查询
-	//USART_SendString(&huart4, "AT+CREG?\r\n");//查看是否GSM成功
-	//USART_SendString(&huart4, "AT+CPIN?\r\n");
-	  
-	//USART_SendString(&huart4, "AT+MGNSSCFG=?\r\n");//AT+MGNSSCFG GNSS测试命令
-
-	//USART_SendString(&huart4, "ATI\r\n");//查询产品版本信息
-	//USART_SendString(&huart4, "ATI\r\n");//查询产品版本信息
-	//USART_SendString(&huart4, "AT+MCCID\r\n");//读取ICCID
-	//USART_SendString(&huart4, "AT+MDIALUP=1,1\r\n");//拨号上网
-	//USART_SendString(&huart4, "AT+MCHIPINFO=‘temp’\r\n");//查询芯片温度
-	
-	//USART_SendString(&huart4, "AT+CPIN?\r\n");//SIM卡状态
-	//USART_SendString(&huart4, "AT+CSQ\r\n");//查看信号强度
-	//USART_SendString(&huart4, "AT+CREG?\r\n");
-	//USART_SendString(&huart4, "AT+CFUN?\r\n");//确保驻网前为1
-	//USART_SendString(&huart4, "AT+CEREG?\r\n");//查看是否附着(驻网)成功
-	//USART_SendString(&huart4, "AT+MIPCALL?\r\n");// 查询拨号状态
-
-	/*已激活请跳过*/
-	//USART_SendString(&huart4, "AT+CGDCONT=1,\"IPV4V6\",\"cmnet\"\r\n");// //配置PDP上下文
-	//USART_SendString(&huart4, "AT+MIPCALL=1,1\r\n");// 激活PDP,建立应用层拨号连接。
-	
-	//USART_SendString(&huart4, "AT+MUECONFIG=\"autoconn\",1\r\n");// 配置为自动连网(模组应用层网络)
-	//USART_SendString(&huart4, "AT+MDIALUPCFG=\"auto\",1\r\n");// 配置为自动拨号(上位机网卡拨号)
-	
-	//USART_SendString(&huart4, "AT+CMGF=0\r\n");//配置PDU模式(默认)
-	//USART_SendString(&huart4, "AT+CSMP=33,167,0,0\r\n");//设置文本模式参数为:有效期为相对时间格式,并且编码类型为GSM 7bit
-	//USART_SendString(&huart4, "AT+CNMI=2,2,0,2,0\r\n");//配置接收到短信时自动上报
-	//USART_SendString(&huart4, "AT+CMGS=23\r\n");//发送PDU短信,PDU长度23字节,数据以ctrl-z(0x1A)结尾。
-	
-	//USART_SendString(&huart4, "AT+CMGF=1\r\n");// //配置文本模式
-	//USART_SendString(&huart4, "AT+CSMP=33,167,0,0\r\n");//设置发送为bit7。(可根据实际设置为bit8/bit16)
-	
-	//发送短信
-	//char msg[] = "Hello, World!";
-	//char smsCmd[50];
-	//sprintf(smsCmd, "AT+CMGS=\"**\"\r\n%s%c", msg, 0x1A);  // 使用Ctrl+Z (0x1A) 结束短信内容
-	//USART_SendString(&huart4, smsCmd);
-	
-	//USART_SendString(&huart4, "AT+CCLK?\r\n");//驻网自动同步网络时间
-	//USART_SendString(&huart4, "AT+MQTTCONN=?\r\n");
-	
-	//查询mqtt版本	
-	//AT+MQTTCFG="version",<connect_id>[,<version>]
-	//+MQTTCFG: "version",<version>
-	//USART_SendString(&huart4, "AT+MQTTCFG=\"version\"\r\n");	//+MQTTCFG: "version",4
-	
-	//查询mqtt客户端使用的pdp	
-	//AT+MQTTCFG="cid",<connect_id>[,<cid>]
-	//+MQTTCFG: "cid"[,<cid>]
-	//USART_SendString(&huart4, "AT+MQTTCFG=\"cid\"\r\n");		//+MQTTCFG: "cid",1
-	
-	//查询当前MQTT SSL模式以及SSL上下文索引配置情况	
-	//AT+MQTTCFG="ssl",<connect_id>[,<ssl_enable>[,<ssl_id>]]
-	//+MQTTCFG: "ssl",<ssl_enable>,<ssl_id>
-	//USART_SendString(&huart4, "AT+MQTTCFG=\"ssl\"\r\n");		//+MQTTCFG: "ssl",0,0
-	//USART_SendString(&huart4, "AT+MQTTCFG=\"ssl\",2,1\r\n");		//OK
-	
-	//查询当前保活时间	
-	//AT+MQTTCFG="keepalive",<connect_id>[,<keepalive_time>]
-	//+MQTTCFG: "keepalive",<keepalive_time>
-	//USART_SendString(&huart4, "AT+MQTTCFG=\"keepalive\"\r\n");//+MQTTCFG: "keepalive",120
-	
-	//查询当前会话类型	
-	//AT+MQTTCFG="clean",<connect_id>[,<clean_session>]
-	//+MQTTCFG: "clean",<clean_session>
-	//USART_SendString(&huart4, "AT+MQTTCFG=\"clean\"\r\n");	//+MQTTCFG: "clean",0
-	
-	//查询当前设置的重传间隔以及重传次数配置	
-	//AT+MQTTCFG="retrans",<connect_id>[,<retrans_interval>[,<retry_times>]]
-	//+MQTTCFG: "retrans",<retrans_interval>,<retry_times>
-	//USART_SendString(&huart4, "AT+MQTTCFG=\"retrans\"\r\n");	//+MQTTCFG: "retrans",20,0
-	
-	//查询设置命令(配置Will flag、qos及retain信息)
-	//AT+MQTTCFG="willoption",<connect_id>[,<will_flag>[,<will_qos>[,<will_retain>]]]	
-	//+MQTTCFG: "willoption",<will_flag>,<will_qos>,<will_retain>
-	//USART_SendString(&huart4, "AT+MQTTCFG=\"willoption\"\r\n");	//+MQTTCFG: "willoption",0,0,0
-	
-	//设置命令(配置 Will topic和message信息)查询当前 Will Topic和Will Message信息,<will_msg>输入格式解析受"encoding"配置影响
-	//AT+MQTTCFG="willpayload",<connect_id>[,<will_topic>,<will_msg>]
-	//+MQTTCFG: "willpayload",<will_topic>,<will_msg>
-	//USART_SendString(&huart4, "AT+MQTTCFG=\"willpayload\"\r\n");	//+MQTTCFG: "willpayload",,
-	
-	//设置命令(配置MQTT心跳请求间隔) 则查询当前MQTT的心跳间隔
-	//AT+MQTTCFG="pingreq",<connect_id>[,<ping_interval>]
-	//+MQTTCFG: "pingreq",<ping_interval>
-	//USART_SendString(&huart4, "AT+MQTTCFG=\"pingreq\"\r\n");		//+MQTTCFG: "pingreq",120
-	
-	//设置命令(配置MQTT心跳请求回显) 查询当前MQTT的心跳回显配置
-	//AT+MQTTCFG="pingresp",<connect_id>[,<pingack>]
-	//+MQTTCFG: "pingresp",<pingack>
-	//USART_SendString(&huart4, "AT+MQTTCFG=\"pingresp\",0,1\r\n");		//+MQTTCFG: "pingresp",0
-	
-	//设置命令(配置MQTT消息的输入编码以及输出打印编码) 则查询当前编码配置
-	//AT+MQTTCFG="encoding",<connect_id>[,<input_format>[,<output_format>]]	
-	//+MQTTCFG: "encoding",<input_format>,<output_format>
-	//USART_SendString(&huart4, "AT+MQTTCFG=\"encoding\"\r\n");		//+MQTTCFG: "encoding",0,0
-	
-	//设置命令(配置MQTT消息缓存输出模式) 查询当前缓存配置
-	//AT+MQTTCFG="cached",<connect_id>[,<cached_mode>]	
-	//+MQTTCFG: "cached",<cached_mode>
-	//USART_SendString(&huart4, "AT+MQTTCFG=\"cached\"\r\n");		//+MQTTCFG: "cached",0
-	
-	//设置命令(配置MQTT重连次数) 查询当前重连配置
-	//AT+MQTTCFG="reconn",<connect_id>[,<recon_times>[,<reconn_interval>[,<mode>]]]
-	//+MQTTCFG: "reconn",<reconn_times>,<reconn_interval>,<mode>
-	//USART_SendString(&huart4, "AT+MQTTCFG=\"reconn\"\r\n");			//+MQTTCFG: "reconn",3,20,0
-	
-	//设置命令(查询MQTT配置信息)
-	//AT+MQTTCFG="query",<connect_id>
-	/*	+MQTTCFG: "version",<version>
-		+MQTTCFG: "cid",<cid>
-		+MQTTCFG: "ssl",<ssl_enable>,<ssl_id>
-		+MQTTCFG: "keepalive",<keepalive_time>
-		+MQTTCFG: "clean",<clean_session>
-		+MQTTCFG: "retrans",<retrans_interval>,<retry_times>
-		+MQTTCFG: "willoption",<will_flag>,<will_qos>,<will_retain>
-		+MQTTCFG: "willpayload",[<will_topic>,<will_msg>]
-		+MQTTCFG: "pingreq",<ping_interval>
-		+MQTTCFG: "pingresp",<pingack>
-		+MQTTCFG: "encoding",<input_format>,<output_format>
-		+MQTTCFG: "cached",<cached_mode>
-		+MQTTCFG: "reconn",<reconn_times>,<reconn_interval>,<mode>*/
-	//USART_SendString(&huart4, "AT+MQTTCFG=\"query\"\r\n");			//+MQTTCFG: "reconn",3,20,0
-	
-	
-	//mqttconn 连接(连接至MQTT或MQTTS服务器)
-	//AT+MQTTCONN=?
-	//+MQTTCONN: <connect_id>,<host>,<port>,<clientID>,<user>,<passwd>
-	//USART_SendString(&huart4, "AT+MQTTCONN=?\r\n");			//+MQTTCONN: (0-5),,(0-65535),,,
-	//USART_SendString(&huart4, "AT+MQTTSTART\r\n");			//+MQTTCONN: (0-5),,(0-65535),,,
-	
-	
-	
-	//设置命令 
-	//AT+MQTTCONN=<connect_id>,<host>[,<port>[,<clientID>,<user>,<passwd>]]
-	//+MQTTURC: "conn",<connect_id>,<conn_state>
-	//USART_SendString(&huart4, "AT+MQTTCONN=0,\"iot-06z00aohulvp4gg.mqtt.iothub.aliyuncs.com\",1883,\"k0qza26L4FE.4g_dtuV1.0|securemode=2,signmethod=hmacsha256,timestamp=1705036680114|\",\"4g_dtuV1.0&k0qza26L4FE\",\"42177cf93ab7ae09ac82ef151b27b94e123cea0237a77fdb3e24b32a2423b7dc\"\r\n");			
-	
-	
-	//AT+MQTTSUB订阅主题
-	//AT+MQTTSUB=<connect_id>,<topic>,<qos>[,<topic1>,<qos1>..]
-	//+MQTTSUB: <connect_id>,<mid>
-	//成功+MQTTURC: "suback",<connect_id>,<mid>,<code>[,<code1>,...]
-	//超时+MQTTURC: "timeout",<connect_id>,<mid>
-	//USART_SendString(&huart4, "AT+MQTTSUB=0,\"/sys/k0qza26L4FE/${4g_dtuV1.0}/thing/service/property/set\",1\r\n");			
-	
-	//USART_SendString(&huart4, "AT+MQTTSUB=0\r\n");			
-}	
-	#endif	  
-#endif	  
-	  
-	  
-	  
-#ifdef RTC_TEST
-	#if RTC_TEST ==1
-	/* Get the RTC current Time */
-	HAL_RTC_GetTime(&hrtc, &GetTime, RTC_FORMAT_BIN);
-	/* Get the RTC current Date */
-	HAL_RTC_GetDate(&hrtc, &GetData, RTC_FORMAT_BIN);
-	/* Display date Format : yy/mm/dd */
-	printf("%02d/%02d/%02d\t",2000 + GetData.Year, GetData.Month, GetData.Date);
-	/* Display time Format : hh:mm:ss */
-	printf("%02d:%02d:%02d\r\n",GetTime.Hours, GetTime.Minutes, GetTime.Seconds);
-	//printf("test\r\n");
-	#endif	  
-#endif	  
-		  
-#ifdef CAN_TEST  
-	#if CAN_TEST ==1
-	//CANTEST,cpu发
-	//	if (HAL_CAN_GetTxMailboxesFreeLevel(&hcan) > 0) {
-	//      if (HAL_CAN_AddTxMessage(&hcan, &TxHeader, TxData, &TxMailbox) == HAL_OK) {
-	//        // 成功发送CAN消息
-	//        // 可以在这里添加自定义的测试代码
-	//		  
-	//      }
-	//    }
-
-	//CANTEST,收发测试
-	if (HAL_CAN_GetTxMailboxesFreeLevel(&hcan) > 0) {
-		if (HAL_CAN_AddTxMessage(&hcan, &TxHeader, TxData, &TxMailbox) == HAL_OK) {
-			// 成功发送CAN消息
-			// 可以在这里添加自定义的测试代码
-			// 修改代码段开始
-			if (HAL_CAN_GetRxFifoFillLevel(&hcan, CAN_RX_FIFO0) > 0) {
-				HAL_CAN_GetRxMessage(&hcan, CAN_RX_FIFO0, &RxHeader, RxData);
-				// 处理接收到的CAN消息
-				// 示例代码:将接收到的数据回传
-				if (HAL_CAN_AddTxMessage(&hcan, (CAN_TxHeaderTypeDef*)&RxHeader, RxData, &TxMailbox) != HAL_OK) {
-					// 发送CAN消息失败,处理错误情况
-				}
-			}
-			// 修改代码段结束
-			//HAL_CAN_AddTxMessage(&hcan, &TxHeader, TxData,&TxMailbox);
-		}
-	}
-	#endif
-#endif
+    osDelay(1);
 
-#ifdef RESET_4G_TEST
-	#if RESET_4G_TEST ==1
-	  //reset_4G();  
-	if(resetML307A)
-	{
-	resetML307A = false;
-	ML307A_Init();
 	}
-	#endif
-#endif
-#ifdef RESET_BT_TEST
-	#if RESET_BT_TEST ==1
-	if(resetMBA32A)
-	{
-	  
-	resetMBA32A = false;
-	HAL_GPIO_WritePin(REST_BT_GPIO_Port,REST_BT_Pin,GPIO_PIN_SET);
-	MBA32A_Init();
-	}
-	#endif
-#endif
-#ifdef RESET_CPU_TEST
-	#if RESET_CPU_TEST ==1
-	//HAL_Delay(50000);//关闭看门狗
-	#endif
-#endif
-
-
-  }
   /* USER CODE END StartTestTask */
 }
 
@@ -790,8 +215,12 @@ void StartloginfoTaskTask(void const * argument)
   /* Infinite loop */
   for(;;)
   {
-    osDelay(500);
-		//printf("长度:%d,事件:%d,流水号:%d,电量:%d,log:%d,MS:%d,RS:%d,HW:%04X,SW:%04X\r\n",bt_dataLength,bt_error_num,bt_serial_num,bt_battery,bt_log_num,bt_lock_machinesta,bt_lock_ropesta,bt_hwver,bt_sfver);
+    osDelay(1000);
+	if (BT_CONN && (L1bd || L2bd || L3bd || L4bd) && (menu.current < 8 || menu.current > 11))//连接后轮询
+	{
+		lock_searchInfo();
+	}
+		
 
   }
   /* USER CODE END StartloginfoTaskTask */

文件差異過大導致無法顯示
+ 831 - 258
Core/Src/interface.c


+ 117 - 248
Core/Src/key.c

@@ -1,29 +1,21 @@
 #include "key.h"
-#include "main.h"
 
-extern bool refresh;
-extern bool BT_CONN;
 extern Menu_table menu;
+extern Bt_frame btFrame;
+extern bool refresh;
+
 bool sent1_key = false;
 bool sent2_key = false;
 bool sent3_key = false;
 bool sent4_key = false;
-
-bool close_flagw=false;	//循环关锁
-bool open_flagw=false;	//循环开锁
-bool sealFlag = false; 					//施解封确认标志位(false:施封,true:解封)
-	
 uint8_t keyvalue[4]={0};
 struct keys key[4]={0,0,0,0};
-extern unsigned char SN1[];
-extern char _BT_CONN[];
-extern char Connected[];
 
 
 uint8_t KEY_1_Scan(void)
 {
-    static uint8_t key_state = 1;
-    static uint8_t last_key_state = 1;
+    static uint8_t key_state = 0;
+    static uint8_t last_key_state = 0;
     static uint32_t debounce_time = 0;
 
     key_state = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_3); 
@@ -43,71 +35,45 @@ uint8_t KEY_1_Scan(void)
 				{
 					switch(menu.current)
 					{
-						case 1:
-						case 4:
-						case 7:
-							if(menu.up==1)
+							case 0:
 							{
-								menu.up=0;
-								menu.next=1;
-								if(menu.current==7)
-								{
-#ifdef keyDebuginfo
-#if keyDebuginfo ==1
-									printf("已选择解封,解封标志:%s\r\n",sealFlag ? "true" : "false");
-#endif
-#endif
-									}
-								refresh=true;
+								SET_MENU_STATUS(0,0,0,0);
+								break;
 							}
-							else
+							case 1:
 							{
-								menu.up+=1;
-								menu.next-=1;
-								if(menu.current==7)
-								{
-#ifdef keyDebuginfo
-#if keyDebuginfo ==1
-									printf("已选择施封,解封标志:%s\r\n",sealFlag ? "true" : "false");
-#endif
-#endif								
-								}
-								refresh=true;
+								SET_MENU_STATUS(1,1,0,1);
+								break;
 							}
-							break;
-						case 2:
-						case 5:
-							if(menu.up==4)
+							case 2:
+							case 7:
 							{
-								menu.up=1;
-								menu.next=3;
+								if(menu.up!=4)
+								{
+									menu.up+=1;
+									menu.next-=1;
+								}
 								refresh=true;
+								break;
 							}
-							else
+							case 8:
+							case 9:
+							case 0xa:
+							case 0xb:
 							{
-								menu.up+=1;
-								menu.next-=1;
-								refresh=true;
+								SET_MENU_STATUS(menu.current,1,0,3);
+								break;
 							}
-							break;
-						case 3:
-							//选择蓝牙
-							break;
+								
 					}
-					
-#ifdef keyDebuginfo
-#if keyDebuginfo ==1
-					printf("******k1 pressed\t%d   %d   %d   %d   %d\n",menu.current,menu.up,menu.next,menu.enter,menu.back);	
-#endif 
-#endif
+					//PRINT_MENU_STATUS("K1");
 					sent1_key = true;
 				}
-				
-                return 1;
+				return 1;
             }
             else // 按键释放
             {
-				sent1_key = false;
+								sent1_key = false;
                 return 0;
             }
         }
@@ -139,71 +105,44 @@ uint8_t KEY_2_Scan(void)
 				{
 					switch (menu.current)
 					{
+						case 0:
+						{
+							SET_MENU_STATUS(0,0,0,0);
+							break;
+						}
 						case 1:
-						case 4:
-						case 7:
-							if (menu.up == 0)
-							{
-								menu.up = 1;
-								menu.next = 0;
-								if(menu.current==7)
-								{
-#ifdef keyDebuginfo
-#if keyDebuginfo ==1
-									printf("已选择施封,解封标志:%s\r\n",sealFlag ? "true" : "false");
-#endif
-#endif
-									}
-								refresh = true;
-							}
-							
-							else
-							{
-								menu.up -= 1;
-								menu.next += 1;
-								if(menu.current==7)
-								{
-#ifdef keyDebuginfo
-#if keyDebuginfo ==1
-									printf("已选择解封,解封标志:%s\r\n",sealFlag ? "true" : "false");
-#endif
-#endif
-									}
-								refresh = true;
-							}
+						{
+							SET_MENU_STATUS(1,0,1,1);
 							break;
+						}
 						case 2:
-						case 5:
-							if (menu.up == 1)
-							{
-								menu.up = 4;
-								menu.next = 0;
-								refresh = true;
-							}
-							else
-							{
-								menu.up -= 1;
-								menu.next += 1;
-								refresh = true;
-							}
-							break;
-						case 3:
-							//选择蓝牙
+						case 7:
+						{
+								if(menu.next!=3)
+								{
+									menu.up-=1;
+									menu.next+=1;
+								}
+								refresh=true;
+								break;
+						}
+						case 8:
+						case 9:
+						case 0xa:
+						case 0xb:
+						{
+							SET_MENU_STATUS(menu.current,0,1,3);
 							break;
+						}
 					}
-					
-#ifdef keyDebuginfo
-#if keyDebuginfo ==1
-					printf("******k2 pressed\t%d   %d   %d   %d   %d\n", menu.current, menu.up, menu.next, menu.enter, menu.back);
-#endif
-#endif
+					//PRINT_MENU_STATUS("K2");
 					sent2_key = true;
 				}
 				return 1;
             }
             else // 按键释放
             {
-				sent2_key = false;
+								sent2_key = false;
                 return 0;
             }
         }
@@ -234,100 +173,57 @@ uint8_t KEY_3_Scan(void)
             {
 				if (!sent3_key) {
 					switch (menu.current) {
-						case 0:
-							menu.current += 1;
-							menu.up += 1;
-							menu.enter += 1;
-							refresh = true;
+						case 0://跳转到1界面
+						{
+							SET_MENU_STATUS(1,1,0,1);
 							break;
-							
+						}
 						case 1:
-							if (menu.up == 0 && menu.next == 1) {
-								menu.current += 3;
-								menu.up = 1;
-								menu.next = 0;
-								menu.enter += 1;
-								refresh = true;
-							} else {
-								menu.current += 1;
-								menu.up = 4;
-								menu.next = 0;
-								menu.enter += 1;
-								refresh = true;
+						{
+							if (menu.up==1) {
+								SET_MENU_STATUS(2,4,0,2);
+							}else{
+								SET_MENU_STATUS(7,4,0,2);
 							}
 							break;
-							
+						}
 						case 2:
-							menu.current += 1;
-							menu.enter += 1;
-							refresh = true;
-							break;
-							
+						{
+							SET_MENU_STATUS(7 - menu.up, 4, 0, 3);
+							break;	
+						}
 						case 3:
-							// 选择蓝牙
-							menu.enter=4;
-							if(menu.enter==4)
-							{
-								BT_CONN = true;
-							}
+						{
+							SET_MENU_STATUS(3,4,0,4);
 							break;
-							
-						case 4:
-							if (menu.next == 1) {
-								menu.current += 2;
-								menu.enter += 1;
-								refresh = true;
-							} else {
-								menu.current += 1;
-								menu.up = 4;
-								menu.next = 0;
-								menu.enter += 1;
-								refresh = true;
-							}
-							break;
-							
-						case 5:
-							menu.current = 7;
-							menu.up = 1;
-							menu.next = 0;
-							menu.enter += 1;
-							refresh = true;
-							break;
-						
+						}
 						case 7:
-							if(menu.sn==SN1)
+						{
+							SET_MENU_STATUS(12 - menu.up, 1, 0, 3);
+							break;	
+						}
+
+						case 8:
+						case 9:
+						case 0xa:
+						case 0xb:
+						{
+							if(menu.up == 1)
 							{
-								menu.current+=1;
-								refresh = true;
-								if(menu.up==1)
-								{
-									//sealFlag=false;
-										sendCmd_BT("AT+CONN=101000000003\r\n","+CONNECTED:0,101000000003",1,1);
-										close_flagw=true;
-								}
-								else
-								{
-									sendCmd_BT("AT+CONN=101000000003\r\n","+CONNECTED:0,101000000003",1,1);
-									open_flagw=true;
-//									sealFlag=true;
-								}
+								SET_MENU_STATUS(menu.current, 1, 0, 4);
+								btFrame.serialNum+=1;		
 							}
+
 							else
 							{
-								menu.current=7;
-								refresh = true;
+								SET_MENU_STATUS(menu.current, 0, 1, 4);
+								btFrame.serialNum+=1;	
 							}
-
 							break;
-							
-							
+						}
 					}
-					
-#ifdef keyDebuginfo
-#if keyDebuginfo ==1
-					printf("******k3 pressed\t%d   %d   %d   %d   %d\n", menu.current, menu.up, menu.next, menu.enter, menu.back);
-#endif
-#endif
+
+					PRINT_MENU_STATUS("K3");
 					sent3_key = true;
 				}
 				return 1;
@@ -362,73 +258,43 @@ uint8_t KEY_4_Scan(void)
         {
             if (key_state == GPIO_PIN_RESET) // 按键按下
             {
-				if (!sent4_key) {
+				if (!sent4_key) {//返回
 					switch (menu.current) {
 						case 1:
-							menu.current = 0;
-							menu.up = 0;
-							menu.next = 0;
-							menu.enter = 0;
-							refresh = true;
+						{
+							SET_MENU_STATUS(0,0,0,0);
 							break;
+						}
 						case 2:
-							menu.current = 1;
-							menu.up = 1;
-							menu.next = 0;
-							menu.enter = 1;
-							menu.back = 0;
-							refresh = true;
+						case 7:
+						{
+							SET_MENU_STATUS(1,1,0,1);
 							break;
+						}
+						/* L*绑定 */
 						case 3:
-							menu.current = 2;
-							menu.up = 4;
-							menu.next = 0;
-							menu.enter = 2;
-							menu.back = 1;
-							refresh = true;
-							break;
 						case 4:
-							menu.current = 1;
-							menu.up = 1;
-							menu.next = 0;
-							menu.enter = 1;
-							menu.back = 0;
-							refresh = true;
-							break;
 						case 5:
-							menu.current = 4;
-							menu.up = 1;
-							menu.next = 0;
-							menu.back = 1;
-							refresh = true;
-							break;
 						case 6:
-							menu.current = 4;
-							menu.up = 1;
-							menu.next = 0;
-							menu.back = 1;
-							refresh = true;
+						{
+							SET_MENU_STATUS(2,4,0,2);
 							break;
-						case 7:
-							menu.current = 5;
-							menu.up = 4;
-							menu.next = 0;
-							menu.back = 1;
-							refresh = true;
+						}
+						
 
-							break;
 						case 8:
-
-							refresh = true;
+						case 9:
+						case 0xa:
+						case 0xb:
+						{
+							SET_MENU_STATUS(7,4,0,2);
 							break;
+						}
+
 						
 							
 					}
-#ifdef keyDebuginfo
-#if keyDebuginfo ==1
-					printf("******k4 pressed\t%d   %d   %d   %d   %d\n", menu.current, menu.up, menu.next, menu.enter, menu.back);
-#endif
-#endif
+					//PRINT_MENU_STATUS("K4");
 					sent4_key = true;
 				}
 				return 1;
@@ -444,6 +310,10 @@ uint8_t KEY_4_Scan(void)
     return 0;
 }
 
+
+
+
+
 void updatekeystate(void)
 {
 
@@ -454,4 +324,3 @@ void updatekeystate(void)
 }
 
 
-

+ 16 - 65
Core/Src/main.c

@@ -45,17 +45,14 @@
 /* Private macro -------------------------------------------------------------*/
 /* USER CODE BEGIN PM */
 
+extern Menu_table menu;
+extern bool refresh;
 /* USER CODE END PM */
 
 /* Private variables ---------------------------------------------------------*/
 
 /* USER CODE BEGIN PV */
-
-uint16_t connectedDev[4];
-bool startdtu=false;
-extern Menu_table menu;
-extern bool BT_CONN;
-extern bool refresh;
+uint8_t recvBuff[2048];
 /* USER CODE END PV */
 
 /* Private function prototypes -----------------------------------------------*/
@@ -67,6 +64,7 @@ void MX_FREERTOS_Init(void);
 
 /* Private user code ---------------------------------------------------------*/
 /* USER CODE BEGIN 0 */
+
 /* USER CODE END 0 */
 
 /**
@@ -110,56 +108,16 @@ int main(void)
   MX_CAN_Init();
   MX_RTC_Init();
   /* USER CODE BEGIN 2 */
-#ifdef timHand 
-  #if timHand == 1
-  TIM2_IT_EN()
-  TIM3_IT_EN()
-  #endif
-#endif 
-#ifdef oledOpen
-  #if oledOpen == 1
-  OLED_INIT_EN();
-  OLED_COLOR_EN();
-  OLED_DISPLAY_EN();
-  //dtustart();
-  #endif
-#endif 
-#ifdef uartHand
-  //UART_DMA_1_EN(recvBuff)
-  //UART_DMA_2_EN(recvBuff)
-  //UART_DMA_3_EN(recvBuff)
-#ifdef init_4G
-  #if init_4G == 1
-  UART_DMA_4_EN(recvBuff)
-  #endif 
-#endif 
-#ifdef init_BT
-  #if init_BT == 1
-  UART_IT_5_EN(g_MBA32A_8buf)
-  #endif 
-#endif 
-
-#endif 
-#ifdef	respects
-  #if respects == 1
-  HELLO()
-  #endif 
-#endif 
-
-#ifdef init_4G
-  #if init_4G == 1
-  ML307A_Init();
-  #endif 
-#endif 
-#ifdef init_BT
-  #if init_BT == 1
-  startdtu=true;
-  execute_function(menu);
-  OLED_Refresh();
-  
-  MBA32A_Init();
-  #endif 
-#endif 
+	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
+	MBA32A_Init();
+	#endif
+#endif
   /* USER CODE END 2 */
 
   /* Call init function for freertos objects (in freertos.c) */
@@ -250,15 +208,8 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
     HAL_IncTick();
   }
   /* USER CODE BEGIN Callback 1 */
-#ifdef WDI_EN
-  #if WDI_EN == 1
-  if (htim->Instance == TIM2) 
-  {
-    HAL_GPIO_TogglePin(WDI_GPIO_Port, WDI_Pin); 
-	//printf("not WEIGOU\r\n");
-  }
-  #endif
-#endif
+	//ι¹·
+	TOGGLE_WDI_PIN(&htim2);
   /* USER CODE END Callback 1 */
 }
 

+ 231 - 311
Core/Src/mba32a.c

@@ -1,247 +1,113 @@
 #include "mba32a.h"
-#include "main.h"
-#include "interface.h"
 #include "usart.h"
 
-extern UART_HandleTypeDef huart1;
-extern UART_HandleTypeDef huart2;
+
+/**
+  * @breaf 外部定义
+  */
 extern UART_HandleTypeDef huart3;
-extern UART_HandleTypeDef huart4;
 extern UART_HandleTypeDef huart5;
-extern Menu_table menu;
-extern unsigned char NOSETLOCK[];
-
-bool resetMBA32A = false;			//模块重启标志位
-bool resetFlag = false;				//复位标志位
-bool BT_CONN =false; 	
-bool REBOOT =false;						//已绑定后重启
-
-extern bool	bd_flag;	//已绑定标志位
-extern bool startdtu;
-extern bool refresh;
-extern bool sealFlag ; 
-extern bool	open_flagw;
-extern bool	close_flagw;
-
-uint8_t g_MBA32A_8buf[1024]={0};  
-uint8_t g_MBA32A_8buf_Down[1024] ={0} ;
+extern bool startdtu;					//声明外部启动界面切换标志位
+extern Menu_table menu;					//结构体
+extern bool L1bd;		
+extern bool refresh;		
+/**
+  * @breaf 本页定义
+  */
+Bt_frame btFrame;
+bool BT_CONN = false;
+bool connected = false;						//连接断进程标志位
+bool resetBTmodule = false;
 uint8_t step_BT=0;
-
-
-uint16_t bt_dataLength=0;				//bt接收有效数据长度
-
-uint8_t bt_error_num=0;					//bt接收的错误事件
-uint32_t bt_serial_num=0;				//bt接收的流水号
-uint8_t bt_battery=0;						//bt剩余电量百分比
-uint8_t bt_log_num=0;						//bt记录事件数量
-uint8_t bt_lock_machinesta=0;		//bt锁(电机)状态(0x00开;0x01关;0x02异常)
-uint8_t bt_lock_ropesta=0;			//bt锁(锁绳)状态(0x00插入;0x01拔出
-uint16_t bt_hwver=0;						//bt硬件版本号
-uint16_t bt_sfver=0;						//bt软件版本号
-
+uint16_t u5length=0;
+uint16_t resetFlag16=0;
+uint8_t g_MBA32A_8buf[1024]={0};  			//蓝牙接收数组
+uint8_t g_MBA32A_8buf_Down[1024]={0} ;		//蓝牙搬移数组
+uint16_t 	bt_dataLength=0;				//bt接收有效数据长度
+uint8_t 	bt_error_num=0;					//bt接收的错误事件
+uint32_t 	bt_serial_num=0;				//bt接收的流水号
+uint8_t 	bt_battery=0;					//bt剩余电量百分比
+uint8_t 	bt_log_num=0;					//bt记录事件数量
+uint8_t 	bt_lock_machinesta=0;			//bt锁(电机)状态(0x00开;0x01关;0x02异常
+uint8_t 	bt_lock_ropesta=0;				//bt锁(锁绳)状态(0x00插入;0x01拔出)
+uint16_t 	bt_hwver=0;						//bt硬件版本号
+uint16_t 	bt_sfver=0;						//bt软件版本号
 
 /**
-  * @brief  问询设备定义
+  * @breaf 本页方法
   */
-char dev[]="+DEV:\r\n";							
-//char __dev[]="+DEV:0,1500000000CB";
-char __dev[]="+DEV:0,101000000003";
-
-
-char _BT_CONN[]="AT+CONN=101000000003\r\n";
-char _BT_CONN_TO[]="+CONNECT TIMEOUT";
-
-char _DIS_CONN[]="AT+DISCONN=0\r\n";
-//char Connected[]="+CONNECTED:0,1500000000CB";
-//char DisConnected[]="+DISCONN:0,1500000000CB";
-char Connected[]="+CONNECTED:0,101000000003";
-char DisConnected[]="+DISCONN:0,101000000003";
-
-//char Connected_phone[]="+CONNECTED:1,56A27D34A53F\r\n";
-
-char s_DEV[]="AT+DEV?\r\n";
-char _s_DEV[]="+DEV:\r\n";
-
-char s_sService[]="AT+UUIDS?\r\n";
-char _s_sService_default[]="+UUIDS:FFF0";
-
-char s_wService[]="AT+UUIDW?\r\n";
-char _s_wService_default[]="+UUIDW:FFF2";
-
-char s_nService[]="AT+UUIDN?\r\n";
-char _s_nService_default[]="+UUIDN:FFF1";
-
-//char s_sService_SET[]="AT+UUIDS=0000fff000001000800000805f9b34fb\r\n";
-//char s_wService_SET[]="AT+UUIDW=0000ff0500001000800000805f9b34fb\r\n";
-//char s_nService_SET[]="AT+UUIDN=0000ff0400001000800000805f9b34fb\r\n";
-char s_sService_SET[]="AT+UUIDS=0002\r\n";
-char s_wService_SET[]="AT+UUIDW=FFF5\r\n";
-char s_nService_SET[]="AT+UUIDN=FF04\r\n";
-
-//char _s_sService_SET[]="+UUIDS:0000000200001000800000805F9B34FB";//设置主服务
-//char _s_wService_SET[]="+UUIDW:0000FFF500001000800000805F9B34FB";//设置写服务
-//char _s_nService_SET[]="+UUIDN:0000FF0400001000800000805F9B34FB";//设置读服务
-char _s_sService_SET[]="+UUIDS:0002";//设置主服务
-char _s_wService_SET[]="+UUIDW:FFF5";//设置写服务
-char _s_nService_SET[]="+UUIDN:FF04";//设置读服务
-
-char autocfgmac[]="AT+AUTO_MAC=101000000003\r\n";
-char broadcast[]="AT+ADV=1\r\n";//广播
-char broadcast_interval[]="AT+AINTVL=100\r\n";//广播间隔
-char txpower[]="AT+TXPOWER=2\r\n";//发射功率
-
-char at_OK[]="OK\r\n";
-
-bool connected = false;
-
+uint8_t sendCmd_BT(char *pCmd, char *pRes, uint32_t timeOut, uint8_t sendNum);
+void MBA32AReset(void);
 
+/**
+  * @breaf 蓝牙初始化
+  */
 void MBA32A_Init(void)
-{			
-	resetMBA32A=false;//freertos监测蓝牙模块重启标志位
-  REBOOT=true;	//初始化开启标志.
-	
-#ifdef debugBTInfo
-	#if debugBTInfo == 1
-	printf("MBA32A_Init_1\r\n");
-	menu.sn=NOSETLOCK;//null显示
-	#endif
-#endif
+{
+	startdtu = true;
+	menu.home=0;
+	btFrame.serialNum = 0x00000001;//流水号
+	btFrame.userId 	  = 0x64747531;//dtu1
+	btFrame.Autoseal  = 0x01;
 	
-	uint16_t resetFlag16 = read_flash_16(resetDevAddr);
-
+	resetFlag16 = read_flash_16(resetDevAddr);
 	if(resetFlag16==0xFFFF)//开机检测(首次启动)
 	{
-		if(sendCmd_BT("AT+RESET=1\r\n",at_OK,1,2))
+		if(sendCmd_BT("AT+RESET=1\r\n","OK",1,1))
 		{
-			Write_Information(resetDevAddr);
+			Write_Information(resetDevAddr);//写入0xAAAA
 			printf("复位设备成功\r\n");
-			
-			resetFlag16 = read_flash_16(resetDevAddr);
-			if(sendCmd_BT("AT+AUTO_DEL\r\n",at_OK,1,1))
-			{
-				printf("删除重连列表\r\n");
-			}
-			if(sendCmd_BT(broadcast_interval,at_OK,1,1))
-			{
-				printf("广播间隔设置\r\n");
-			}
-			if(sendCmd_BT(txpower,at_OK,1,1))
-			{
-				printf("发送频率设置\r\n");
-			}
-			if(sendCmd_BT(broadcast,at_OK,1,1))
-			{
-				printf("设备开启广播\r\n");
-			}
-			if(sendCmd_BT("AT+DISCONN=0\r\n",at_OK,1,1))
-			{
-				printf("取消连接所有设备\r\n");
-			}
-			if(sendCmd_BT("AT+DISCONN=1\r\n",at_OK,1,1))
-			{
-				printf("取消连接所有主机端设备\r\n");
-			}
-
+		}
+		else if(sendCmd_BT("AT+DISCONN=0\r\n","OK",1,1))
+		{
+			printf("取消连接所有设备\r\n");
 		}
 		else
 		{
 			printf("复位失败\r\n");
-			resetFlag=false;
 		}
 	}
 	else if(resetFlag16==0xAAAA)//开机检测(大于1次启动)
 	{
-		printf("无需复位设备\r\n");
-		resetFlag=true;
-		//REBOOT=true;
+		//printf("复位%X\r\n",resetFlag16);
+		printf("非首次启动\r\n");
 	}
 	
-
-	
 	switch(step_BT)
 	{
 		case 0:
 		{
-			if(sendCmd_BT(s_DEV,_s_DEV,1,2))									//(at+dev?	+DEV:)					未连接设备
+			if(sendCmd_BT("AT+DEV?\r\n","+DEV:0,101000000003",1,1))
 			{
-				printf("未连接设备\r\n");
-				if(sendCmd_BT("AT+AUTO_CFG=1\r\n",at_OK,1,1))		//设置自动重连
-				{
-					printf("开启自动重连1\r\n");
-				}
-				step_BT++;
-			}
-			else if(sendCmd_BT(s_DEV,__dev,1,2))							//(at+dev?	+DEV:1010***03)已连接设备
-			{
-					bd_flag=true;
-					printf("连接绑定成功!");
-					if(sendCmd_BT("AT+AUTO_CFG=1\r\n",at_OK,1,1))	//开启自动重连
-					{
-						printf("开启自动重连2\r\n");
-						startdtu=false;	//关闭开始界面
-						refresh=true;		//刷新屏幕
-					}
-					else if(resetFlag16==0xAAAA)				//连接后判定,非第一次启动!							
-					{
-						startdtu=false;	//关闭开始界面
-						refresh=true;		//刷新屏幕
-						connected=true;	//断掉后方进程
-						resetFlag=true;	//已进行过复位,说明已经绑定
-						//REBOOT=true;
-						//BT_CONN=true;
-						//直接显示连接设备
-						printf("设备加载成功\r\n");
-					}
-//					else if(sendCmd_BT(autocfgmac,at_OK,1,1))				//开启自动重连
-//					{
-//						printf("自动重连已设置1\r\n");
-//					}
-					break;
+				printf("设备已连接\r\n");
+				startdtu=false;	//关闭开始界面
+				BT_CONN=true;
+				connected=true;
+				//L1bd=true;
+				break;
 			}
-			else
+			else if(sendCmd_BT("AT+DEV?\r\n","+DEV:",1,1))	
 			{
-				if(sendCmd_BT(_BT_CONN,Connected,5,3))					//(at+conn“mac”)自动重新连mac
-				{           
-					printf("连接成功!");
-					if(sendCmd_BT(autocfgmac,at_OK,1,1))					//自动重连
-					{
-						printf("开启自动重连3\r\n");
-//						if(read_flash_16(resetDevAddr)==0xAAAA)
-//						{
-						startdtu=false;		//关闭开始界面
-						refresh=true;			//刷新屏幕
-						resetFlag=true;		//freertos监测位
-						REBOOT=true;			//freertos监测位
-						printf("设备加载成功\r\n");
-//						}
-					}
-					break;
-				}
-//				MBA32AReset();
-				//已设置其他设置
-//				USART_SendString(&huart5, "AT+DISCONN=0\r\n");
-//				USART_SendString(&huart5, "AT+RESET=1\r\n");
-//				MBA32AReset();
-				break;
+				printf("未连接设备\r\n");
 			}
+			step_BT++;
 		}
-		
 		case 1:
 		{
+			printf("设备未连接\r\n");
 			if(!connected)//断进程标志位
 			{
-				if(sendCmd_BT(s_sService,_s_sService_default,1,1))//蓝牙芯片默认值,需要修改
+				if(sendCmd_BT("AT+UUIDS?\r\n","+UUIDS:FFF0",1,1))//蓝牙芯片默认值,需要修改
 				{
-					//设置主服务
-					if(sendCmd_BT(s_sService_SET,at_OK,1,1))
+					if(sendCmd_BT("AT+UUIDS=0002\r\n","OK",1,1))
 					{
-						printf("查询并设置主服务成功\n");
+						printf("设置主服务成功\n");
 						step_BT++;
 					}
 				}
-				else if(sendCmd_BT(s_sService,_s_sService_SET,1,1))
+				else if(sendCmd_BT("AT+UUIDS?\r\n","+UUIDS:0002",1,1))
 				{
-					printf("主服务不是默认值,但符合设置项\n");
+					printf("UUIDS非默认值,符合\n");
 					step_BT++;
 				}
 				else
@@ -250,231 +116,285 @@ void MBA32A_Init(void)
 					break;
 				}
 			}
-
 		}
-		
+
 		case 2:
 		{
 			if(!connected)//断进程标志位
 			{
-				if(sendCmd_BT(s_wService,_s_wService_default,1,1))
-				{//蓝牙芯片默认值,需要修改
-					//设置写服务
-					if(sendCmd_BT(s_wService_SET,at_OK,1,1))
+				if(sendCmd_BT("AT+UUIDN?\r\n","+UUIDN:FFF1",1,1))//蓝牙芯片默认值,需要修改
+				{
+					if(sendCmd_BT("AT+UUIDN=FF04\r\n","OK",1,1))
 					{
-						printf("查询并设置写服务成功\n");
+						printf("设置读服务成功\n");
 						step_BT++;
 					}
 				}
-				else if(sendCmd_BT(s_wService,_s_wService_SET,1,1))
+				else if(sendCmd_BT("AT+UUIDN?\r\n","+UUIDN:FF04",1,1))
 				{
-					printf("写服务不是默认值,但符合设置项\n");
+					printf("UUIDN非默认值,符合\n");
 					step_BT++;
 				}
 				else
-				{	
-					//ERROR 其他值
+				{	//ERROR 其他值
 					MBA32AReset();
 					break;
 				}
 			}
 		}
-
+		
 		case 3:
 		{
 			if(!connected)//断进程标志位
 			{
-				if(sendCmd_BT(s_nService,_s_nService_default,1,1))//蓝牙芯片默认值,需要修改
+				if(sendCmd_BT("AT+UUIDW?\r\n","+UUIDW:FFF2",1,1))//蓝牙芯片默认值,需要修改
 				{
-					//设置主服务
-					if(sendCmd_BT(s_nService_SET,at_OK,1,1))
+					if(sendCmd_BT("AT+UUIDW=FFF5\r\n","OK",1,1))
 					{
-						printf("查询并设置读服务成功\n");
+						printf("设置写服务成功\n");
 						step_BT++;
 					}
 				}
-				else if(sendCmd_BT(s_nService,_s_nService_SET,1,1))
+				else if(sendCmd_BT("AT+UUIDW?\r\n","+UUIDW:FFF5",1,1))
 				{
-					printf("读服务不是默认值,但符合设置项\n");
+					printf("UUIDW非默认值,符合\n");
 					step_BT++;
 				}
 				else
-				{
-					//ERROR 其他值
+				{	//ERROR 其他值
 					MBA32AReset();
 					break;
 				}
 			}
 		}
-			
+		
 		case 4:
 		{
 			if(!connected)//断进程标志位
 			{
-				if(sendCmd_BT(_BT_CONN,Connected,5,3))
+				if(sendCmd_BT("AT+CONN=101000000003\r\n","+CONNECTED:0,101000000003",3,3))
 				{           
 					printf("连接成功!");
-					if(sendCmd_BT(autocfgmac,at_OK,1,1))
-					{
-						printf("自动重连已设置3\r\n");
-//						if(read_flash_16(resetDevAddr)==0xAAAA)
-//						{
-							startdtu=false;	//关闭开始界面
-							refresh=true;	//刷新屏幕
-							printf("设备加载成功\r\n");
-							resetFlag=true;
-						  step_BT++;
-//						}
-					}
+					startdtu=false;	//关闭开始界面
+					BT_CONN=true;
+					//L1bd=true;
 					break;
 				}
-				else if(sendCmd_BT(_BT_CONN,_BT_CONN_TO,1,1))
+				else if(sendCmd_BT("AT+CONN=101000000003\r\n","+CONNECT TIMEOUT",3,5))
 				{
 					printf("连接超时!");
-					startdtu=false;		//取消启动欢迎进入工作界面
-					refresh=true;
 					MBA32AReset();		//后台复位
 					break;
-					//MBA32AReset();
 				}
 				else 
 				{
 					printf("连接失败! %s",g_MBA32A_8buf_Down);
 					MBA32AReset();
 					break;
-					//MBA32AReset(); 
 				}
 			}
 		}
 		
-		case 5:
-		{
-			if(connected)
-			{
-				printf("已连接\r\n");
-				break;
-			}
-			
-		}
+		
+		
+		
+		
 	}
+	
+	
 }
 
 
-
-
-
+/**
+  * @breaf 模块复位函数(接收数组清0)
+  */		
 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_Delay(4000);
 	step_BT=0;
-	resetMBA32A=true;//freertos监测模块重启位
+	resetBTmodule=true;//freertos监测模块重启位
 }
 
-
-void clearBuf_BT(void)
+/**
+  * @breaf 串口发送命令,有接收数组比较函数
+  */
+void USART_SendString(UART_HandleTypeDef *huart, char *str)
 {
-	memset(g_MBA32A_8buf,0,sizeof(g_MBA32A_8buf));
-	memset(g_MBA32A_8buf,0,sizeof(g_MBA32A_8buf_Down));
+	
+	HAL_UART_Transmit(huart, (uint8_t*)str, strlen(str), 0xFFFF);
+    HAL_UART_Transmit(&huart3, (uint8_t*)str, strlen(str), 0xFFFF);
+	
 }
 
-
 uint8_t sendCmd_BT(char *pCmd, char *pRes, uint32_t timeOut, uint8_t sendNum)
 {
     uint8_t i = 0;
-    uint32_t time;                                                           
-	
+    uint32_t time;          
     for(i = 0; i < sendNum; i++)
 	{
         time = timeOut * 10;
         USART_SendString(&huart5, pCmd);
-		
-#ifdef debugBTInfo
-		#if debugBTInfo == 1
-		//printf("Send AT >>%s",pCmd);
-		printf("%s",g_MBA32A_8buf_Down);
-		#endif
-#endif
+		HAL_Delay(30);
+		printf("-------------->%s",g_MBA32A_8buf_Down);
 		
         while(time--)
-        {
+		{
 			if(strstr((const char *)g_MBA32A_8buf_Down, pRes) != NULL)             // 如果检索到关键词
+			{
 				return 1;
+			}
 			HAL_Delay(100);
         }
-		
     }
     return 0;
 }
 
+void Echo_BT(uint8_t echosize)
+{
+	HAL_UART_Transmit(&huart3,g_MBA32A_8buf_Down, echosize, 0xFFFF);//TTL回显
+}
+
+/**
+  * @breaf 查询蓝牙锁信息帧
+  */
+void lock_searchInfo(void)		//蓝牙查询信息帧
+{
+	uint8_t header[2] 		= {0x66, 0x00};//Jl_lock帧头
+	uint8_t serchInfo_CMD[] = {0x01, 0x00};//查询信息命令帧
+	sendCombinedArray(header,sizeof(header),serchInfo_CMD,sizeof(serchInfo_CMD));
+	Echo_BT(20);
+}
 
-void workinfo(void)
+/**
+  * @breaf 问询蓝牙锁工作信息函数
+  */
+void workinfo_W(void)
 {	
+	if(*g_MBA32A_8buf_Down == NULL)
+		return;
 	if(g_MBA32A_8buf_Down[0]==0x66 && g_MBA32A_8buf_Down[1]==0x00  )//未加密帧头(命令字0x01)
 	{
 		if(g_MBA32A_8buf_Down[2]==0x01)
 		{
-				bt_dataLength = g_MBA32A_8buf_Down[3];//接收数据长度
-				bt_error_num = g_MBA32A_8buf_Down[4];	//错误事件数
-				// 将4个字节存入 bt_serial_num流水号
-				bt_serial_num |= g_MBA32A_8buf_Down[5]<<24;
-				bt_serial_num |= g_MBA32A_8buf_Down[6]<<16;
-				bt_serial_num |= g_MBA32A_8buf_Down[7]<<8;
-				bt_serial_num |= g_MBA32A_8buf_Down[8];
-				bt_battery = g_MBA32A_8buf_Down[9];	//电量百分比
-				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[14]; 
-				bt_sfver |= g_MBA32A_8buf_Down[15]<<8; 			//软件版本号
-				bt_sfver |= g_MBA32A_8buf_Down[16]; 
+			bt_lock_machinesta = g_MBA32A_8buf_Down[11];	//电机状态
+			bt_lock_ropesta = g_MBA32A_8buf_Down[12];		//锁绳状态
+		
+//			bt_dataLength = g_MBA32A_8buf_Down[3];//接收数据长度
+//			bt_error_num = g_MBA32A_8buf_Down[4];	//错误事件数
+//			// 将4个字节存入 bt_serial_num流水号
+//			bt_serial_num |= g_MBA32A_8buf_Down[5]<<24;
+//			bt_serial_num |= g_MBA32A_8buf_Down[6]<<16;
+//			bt_serial_num |= g_MBA32A_8buf_Down[7]<<8;
+//			bt_serial_num |= g_MBA32A_8buf_Down[8];
+//			bt_battery = g_MBA32A_8buf_Down[9];	//电量百分比
+//			bt_log_num = g_MBA32A_8buf_Down[10];//记录型事件
+//			bt_hwver |= g_MBA32A_8buf_Down[13]<<8; 			//硬件版本号
+//			bt_hwver |= g_MBA32A_8buf_Down[14]; 
+//			bt_sfver |= g_MBA32A_8buf_Down[15]<<8; 			//软件版本号
+//			bt_sfver |= g_MBA32A_8buf_Down[16]; 
+			
 		}
-		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))//施封(关锁完成
 		{
-			sealFlag=false;//关锁
-			close_flagw=false;
+			
 		}
-		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))//解封(关锁完成)
 		{
-			sealFlag=true;//开锁
-			open_flagw=false;
+
 		}
 	}
-	
+
 }
 
-void lock_searchInfo(void)
+void Scan_lock_status(void)
 {
-	uint8_t header[2] = {0x66, 0x00};//Jl_lock帧头
-	uint8_t serchInfo_CMD[] = {0x01, 0x00};//查询信息命令帧
-	sendCombinedArray(header,sizeof(header),serchInfo_CMD,sizeof(serchInfo_CMD));
-	HAL_UART_Transmit(&huart3,g_MBA32A_8buf_Down, 20, 0xFFFF);//485回显
-	memset(g_MBA32A_8buf_Down,0,sizeof(g_MBA32A_8buf_Down));
+	if(bt_lock_machinesta==0x01 && bt_lock_ropesta==0x00)//0x01电机关 0x00锁绳插入
+	{
+		menu.home=0xF000;//关(全部关闭)
+	}
+	else if(bt_lock_machinesta==0x00 && bt_lock_ropesta==0x01)
+	{
+		menu.home=0x1000;//开(全部开启)
+	}
+	else if(bt_lock_ropesta==0x00 && bt_lock_machinesta==0x00 && g_MBA32A_8buf_Down[0]==0x66)
+	{
+		menu.home=0x1000;//开(电机打开,锁绳插入,可按键拔出)
+	}
+
 }
 
 
-void close_lock(void)
+/**
+  * @breaf 蓝牙开锁信息帧
+  */
+void open_lock(Bt_frame btFrame)					//蓝牙开锁信息帧
 {
-	uint8_t header[2] = {0x66, 0x00};//Jl_lock帧头
-	uint8_t close_CMD[] = {0x03, 0x0B};//关锁命令帧
+	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 蓝牙关锁信息帧
+  */
+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));
-	HAL_UART_Transmit(&huart3,g_MBA32A_8buf_Down, 20, 0xFFFF);//TTL回显
-	memset(g_MBA32A_8buf_Down,0,sizeof(g_MBA32A_8buf_Down));
+	Echo_BT(20);
 }
 
 
-void open_lock(void)
+
+
+
+
+
+void Seal_Unseal(void)
 {
-	uint8_t header[2] = {0x66, 0x00};//Jl_lock帧头
-	uint8_t close_CMD[] = {0x02, 0x0C};//开锁命令帧
-	
-	sendCombinedArray(header,sizeof(header),close_CMD,sizeof(close_CMD));
-	HAL_UART_Transmit(&huart3,g_MBA32A_8buf_Down, 20, 0xFFFF);//TTL回显
-	memset(g_MBA32A_8buf_Down,0,sizeof(g_MBA32A_8buf_Down));
+	if (menu.enter == 4)
+	{
+		if ((menu.current == 8 || menu.current == 9 || menu.current == 0xa || menu.current == 0xb))
+		{
+			if (menu.up == 1)
+			{
+				// 施封操作
+				close_lock(btFrame);
+				
+			}
+			else if (menu.up == 0)
+			{
+				// 解封操作
+				open_lock(btFrame);
+			}
+		}
+	}
 }
 

+ 2 - 2
Core/Src/net4g.c

@@ -210,7 +210,7 @@ void USART_SendString(UART_HandleTypeDef *huart, char *str)
 {
 	
 		HAL_UART_Transmit(huart, (uint8_t*)str, strlen(str), 0xFFFF);
-    //HAL_UART_Transmit(&huart1, (uint8_t*)str, strlen(str), 0xFFFF);//485
+    HAL_UART_Transmit(&huart1, (uint8_t*)str, strlen(str), 0xFFFF);//485
     HAL_UART_Transmit(&huart3, (uint8_t*)str, strlen(str), 0xFFFF);//ttl
 	
 }
@@ -219,7 +219,7 @@ void USART_SendHexArray(UART_HandleTypeDef *huart, uint8_t *data, int length)
 {
 	
 	HAL_UART_Transmit(huart,data, length, 0xFFFF);
-    //HAL_UART_Transmit(&huart1,data, length, 0xFFFF);//485
+  HAL_UART_Transmit(&huart1,data, length, 0xFFFF);//485
   HAL_UART_Transmit(&huart3, data, length, 0xFFFF);//ttl
 }
 

+ 1 - 1
Core/Src/oled.c

@@ -468,7 +468,7 @@ void OLED_Init(void)
 	OLED_Clear();
 	OLED_WR_Byte(0xAF,OLED_CMD); /*display ON*/
 	
-	interface_work = true;
+	//printf("ok");
 }
 
 

+ 1 - 2
Core/Src/rtc.c

@@ -61,8 +61,7 @@ if(HAL_RTCEx_BKUPRead(&hrtc,RTC_BKP_DR1)!= 0x5051)
 		
   /* USER CODE END Check_RTC_BKUP */
 
-  /** Initialize RTC and set the Time and Date
-  */
+  /** Initialize RTC and set the Time and Date */
   sTime.Hours = 0x13;
   sTime.Minutes = 0x0;
   sTime.Seconds = 0x0;

+ 11 - 70
Core/Src/stm32f1xx_it.c

@@ -43,6 +43,7 @@
 /* Private variables ---------------------------------------------------------*/
 /* USER CODE BEGIN PV */
 
+extern uint16_t u5length;
 /* USER CODE END PV */
 
 /* Private function prototypes -----------------------------------------------*/
@@ -77,7 +78,6 @@ extern TIM_HandleTypeDef htim1;
 
 /* USER CODE BEGIN EV */
 
-extern uint8_t u4RecvFlag ; 
 /* USER CODE END EV */
 
 /******************************************************************************/
@@ -366,11 +366,10 @@ void TIM2_IRQHandler(void)
 void TIM3_IRQHandler(void)
 {
   /* USER CODE BEGIN TIM3_IRQn 0 */
-#ifdef ledToggle
-  #if ledToggle ==1
-  LED_TOGGLE()
-  #endif
-#endif
+	
+	/* 运行指示灯 */ 
+	LED_TOGGLE(GPIO_PIN_9);
+	
   /* USER CODE END TIM3_IRQn 0 */
   HAL_TIM_IRQHandler(&htim3);
   /* USER CODE BEGIN TIM3_IRQn 1 */
@@ -384,24 +383,7 @@ void TIM3_IRQHandler(void)
 void USART1_IRQHandler(void)
 {
   /* USER CODE BEGIN USART1_IRQn 0 */
-	uint32_t tmpFlag = 0;
-	uint32_t temp;
-	tmpFlag =__HAL_UART_GET_FLAG(&huart1,UART_FLAG_IDLE); //获取IDLE标志位
-	if((tmpFlag != RESET))//idle标志被置位
-	{ 
-		__HAL_UART_CLEAR_IDLEFLAG(&huart1);//清除标志位
-		
-		HAL_UART_DMAStop(&huart1); //
-		temp  =  __HAL_DMA_GET_COUNTER(&hdma_usart1_rx);// 获取DMA中未传输的数据个数   
-		recvLength  =  BUFFER_SIZE - temp; //总计数减去未传输的数据个数,得到已经接收的数据个数
-		recvDndFlag  = 1;	// 接受完成标志位置1	
-		HAL_UART_Transmit_DMA(&huart1, recvBuff, recvLength);
-		recvLength = 0;//清除计数
-		recvDndFlag = 0;//清除接收结束标志位
-
-		memset(recvBuff,0,recvLength);
-		HAL_UART_Receive_DMA(&huart1, recvBuff, BUFFER_SIZE);//重新打开DMA接收,不然只能接收一次数据
-	 }
+
   /* USER CODE END USART1_IRQn 0 */
   HAL_UART_IRQHandler(&huart1);
   /* USER CODE BEGIN USART1_IRQn 1 */
@@ -429,23 +411,7 @@ void USART2_IRQHandler(void)
 void USART3_IRQHandler(void)
 {
   /* USER CODE BEGIN USART3_IRQn 0 */
-	uint32_t tmpFlag = 0;
-	uint32_t temp;
-	tmpFlag =__HAL_UART_GET_FLAG(&huart3,UART_FLAG_IDLE); //获取IDLE标志位
-	if((tmpFlag != RESET))//idle标志被置位
-	{ 
-		__HAL_UART_CLEAR_IDLEFLAG(&huart3);//清除标志位
-		
-		HAL_UART_DMAStop(&huart3); //
-		temp  =  __HAL_DMA_GET_COUNTER(&hdma_usart3_rx);// 获取DMA中未传输的数据个数   
-		recvLength  =  BUFFER_SIZE - temp; //总计数减去未传输的数据个数,得到已经接收的数据个数
-		recvDndFlag  = 1;	// 接受完成标志位置1	
-		HAL_UART_Transmit_DMA(&huart3, recvBuff, recvLength);
-		recvLength = 0;//清除计数
-		recvDndFlag = 0;//清除接收结束标志位
-		memset(recvBuff,0,recvLength);
-		HAL_UART_Receive_DMA(&huart3, recvBuff, BUFFER_SIZE);//重新打开DMA接收,不然只能接收一次数据
-	 }
+
   /* USER CODE END USART3_IRQn 0 */
   HAL_UART_IRQHandler(&huart3);
   /* USER CODE BEGIN USART3_IRQn 1 */
@@ -459,29 +425,7 @@ void USART3_IRQHandler(void)
 void UART4_IRQHandler(void)
 {
   /* USER CODE BEGIN UART4_IRQn 0 */
-	uint32_t tmpFlag = 0;
-	uint32_t temp;
-	tmpFlag =__HAL_UART_GET_FLAG(&huart4,UART_FLAG_IDLE); //获取IDLE标志位
-	if((tmpFlag != RESET))//idle标志被置位
-	{ 
-		__HAL_UART_CLEAR_IDLEFLAG(&huart4);//清除标志位
-		
-		HAL_UART_DMAStop(&huart4); //
-		temp  =  __HAL_DMA_GET_COUNTER(&hdma_uart4_rx);// 获取DMA中未传输的数据个数   
-		recvLength  =  BUFFER_SIZE - temp; //总计数减去未传输的数据个数,得到已经接收的数据个数
-		//recvDndFlag  = 1;	// 接受完成标志位置1	
-		
-		
-	    u4RecvFlag = 1;
-//		HAL_UART_Transmit_DMA(&huart4, g_ML307A_8buf, recvLength);
-//		recvLength = 0;//清除计数
-//		recvDndFlag = 0;//清除接收结束标志位
-//		memset(g_ML307ABuf,0,recvLength);
-		
-		memcpy(g_ML307A_8buf_Down, g_ML307A_8buf, recvLength);
-		memset(g_ML307A_8buf, 0, 20);
-		HAL_UART_Receive_DMA(&huart4, g_ML307A_8buf, BUFFER_SIZE);//重新打开DMA接收,不然只能接收一次数据
-	 }
+
 		 		
   /* USER CODE END UART4_IRQn 0 */
   HAL_UART_IRQHandler(&huart4);
@@ -497,7 +441,7 @@ void UART5_IRQHandler(void)
 {
   /* USER CODE BEGIN UART5_IRQn 0 */
  	static int index = 0; // 用于记录存储到数组中的位置
-    uint8_t data;
+  uint8_t data;
 	
 	if (index > 0 && __HAL_UART_GET_FLAG(&huart5, UART_FLAG_IDLE) == SET)
 	{
@@ -512,18 +456,15 @@ void UART5_IRQHandler(void)
         {
             index++; // 将记录位置的变量加1
         }
+		u5length = index;
 		memset(g_MBA32A_8buf_Down,0,index);
+		
 		// 将剩余数据转移到g_MBA32A_8buf_Down中去处理
 		for (int i = 0; i < index; i++)
 		{
 			g_MBA32A_8buf_Down[i] = g_MBA32A_8buf[i];
-			
 		}
-
-
     }
-
-
   /* USER CODE END UART5_IRQn 0 */
   HAL_UART_IRQHandler(&huart5);
   /* USER CODE BEGIN UART5_IRQn 1 */

+ 40 - 115
Core/Src/usart.c

@@ -22,10 +22,7 @@
 
 /* USER CODE BEGIN 0 */
 
-uint8_t recvBuff[BUFFER_SIZE];  	//接收数据缓存数组
-volatile uint8_t recvLength = 0;  	//接收一帧数据的长度
-volatile uint8_t recvDndFlag = 0; 	//一帧数据接收完成标志
-extern bool sealFlag;
+
 
 /* USER CODE END 0 */
 
@@ -600,7 +597,7 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
 }
 
 /* USER CODE BEGIN 1 */
-#include "stdio.h"
+
 #ifdef __GNUC__
   /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
      set to 'Yes') calls __io_putchar() */
@@ -621,79 +618,52 @@ PUTCHAR_PROTOTYPE
 /**
   *	@brief printf全局打印
   */
-#ifdef UART_485_EN
-#if UART_485_EN == 1
-  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);//485
-#endif
-#endif
-#ifdef UART_232_EN
-#if UART_232_EN == 1
-  HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF);//232
-#endif
-	#endif
-#ifdef UART_TTL_EN
-#if UART_TTL_EN == 1
-  HAL_UART_Transmit(&huart3, (uint8_t *)&ch, 1, 0xFFFF);//TTL
-#endif
-#endif
-#ifdef UART_4G_EN
-#if UART_4G_EN == 1
-  HAL_UART_Transmit(&huart4, (uint8_t *)&ch, 1, 0xFFFF);//4G
-#endif
-#endif
-#ifdef UART_BT_EN
-#if UART_BT_EN == 1
-  HAL_UART_Transmit(&huart5, (uint8_t *)&ch, 1, 0xFFFF);//BT
-#endif
-#endif
+	UART_PRINT(&huart3);//TTL
   return ch;
 }
 
-
-void enableUartAndReceiveDMA(UART_HandleTypeDef *huart, uint8_t *recvBuff) {
-  __HAL_UART_ENABLE_IT(huart, UART_IT_IDLE); // 使能IDLE中断  DMA
-  HAL_UART_Receive_DMA(huart, recvBuff, BUFFER_SIZE);
-}
-void enableUartAndReceiveIT(UART_HandleTypeDef *huart, uint8_t *recvBuff) {
-  __HAL_UART_ENABLE_IT(huart, UART_IT_RXNE); // 使能接收中断	 普通中断
-  //HAL_UART_Receive_IT(huart, recvBuff, BUFFER_SIZE);
+uint16_t read_flash_16(uint32_t addr){
+    uint16_t data = *(volatile uint16_t*)addr;     // 从Flash中读取2个字节
+    return data;
 }
 
-
-
-int countValidData(uint8_t arr[], int size, int invalidValue) {
-  int count = 0;
-  for (int i = 0; i < size; i++) {
-    if (arr[i] != invalidValue) {
-      count++;
+void erase_flash(uint32_t ADDR_FLASH){                //进行擦除
+    FLASH_EraseInitTypeDef erase_init;
+    erase_init.TypeErase = FLASH_TYPEERASE_PAGES;  // 擦除类型为页擦除
+    erase_init.PageAddress = ADDR_FLASH;  
+    erase_init.NbPages = 1;  // 擦除的页数
+    uint32_t page_error = 0;
+    HAL_FLASH_Unlock();  // 解锁Flash
+    HAL_StatusTypeDef status = HAL_FLASHEx_Erase(&erase_init, &page_error);  // 执行擦除操作
+    HAL_FLASH_Lock();  // 上锁Flash
+    if(status == HAL_OK){
+        if(ADDR_FLASH == resetDevAddr) {
+			//可添加复位标志
+        }
     }
-  }
-  return count;
 }
 
-void addToCombinedArray(uint8_t combinedArray[], uint8_t header[], uint8_t cmd_array[], uint16_t result_frame) {
-    // 添加header到combinedArray
-    combinedArray[0] = header[0];
-    combinedArray[1] = header[1];
-    
-    // 添加cmd_array到combinedArray
-    for (int i = 0; i < 16; i++) {
-        combinedArray[i + 2] = cmd_array[i];
-    }
-    
-    // 添加result_frame到combinedArray
-    combinedArray[18] = (result_frame >> 8) & 0xFF;
-    combinedArray[19] = result_frame & 0xFF;
+void Write_Information(uint32_t addr) {
+    uint16_t newValue = 0;
+	erase_flash(addr);
+    HAL_FLASH_Unlock();  // 解锁Flash
+	
+    if (addr == resetDevAddr) {  // 写入地址到Flash
+        newValue = 0xAAAA;
+        HAL_StatusTypeDef status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, addr, newValue);
+        if (status == HAL_OK) {
+			//复位写入成功
+        }
+    }    
+	HAL_FLASH_Lock();  // 上锁Flash
 }
 
-
 uint8_t xorBytes(uint8_t arr[], int size) {
     uint8_t result = arr[0]; // 初始化结果为第一个元素
     
     for (int i = 1; i < size; i++) {
         result ^= arr[i]; // 将结果与当前元素进行异或操作
     }
-    
     //printf("异或结果: %02X\n", result); // 打印异或结果
 	return result;
 }
@@ -715,6 +685,13 @@ uint16_t crc16(uint8_t *data, size_t len) {
     return wcrc;
 }
 
+void USART_SendHexArray(UART_HandleTypeDef *huart, uint8_t *data, int length)
+{
+	
+	HAL_UART_Transmit(huart,data, length, 0xFFFF);
+	HAL_UART_Transmit(&huart3, data, length, 0xFFFF);//ttl
+}
+
 void sendCombinedArray(uint8_t *header, size_t headerLength, uint8_t *command, size_t commandLength) {
     // 创建一个长度为20的数组
     uint8_t combinedArray[20] = {0};
@@ -740,60 +717,8 @@ void sendCombinedArray(uint8_t *header, size_t headerLength, uint8_t *command, s
     combinedArray[18] = result_frame & 0xFF;		//低字节在前
     combinedArray[19] = (result_frame >> 8) & 0xFF;
     // 发送combinedArray
-    USART_SendHexArray(&huart5, combinedArray, sizeof(combinedArray));
-}
-
-uint16_t read_flash_16(uint32_t addr){
-    uint16_t data = *(volatile uint16_t*)addr;     // 从Flash中读取2个字节
-    return data;
-}
-
-void erase_flash(uint32_t ADDR_FLASH){                //进行擦除
-    FLASH_EraseInitTypeDef erase_init;
-    erase_init.TypeErase = FLASH_TYPEERASE_PAGES;  // 擦除类型为页擦除
-    erase_init.PageAddress = ADDR_FLASH;  
-    erase_init.NbPages = 1;  // 擦除的页数
-    uint32_t page_error = 0;
-    HAL_FLASH_Unlock();  // 解锁Flash
-    HAL_StatusTypeDef status = HAL_FLASHEx_Erase(&erase_init, &page_error);  // 执行擦除操作
-    HAL_FLASH_Lock();  // 上锁Flash
-    if(status == HAL_OK){
-        if(ADDR_FLASH == resetDevAddr) {
-			//可添加复位标志
-        }
-    }
-}
-
-void Write_Information(uint32_t addr) {
-    uint16_t newValue = 0;
-		erase_flash(addr);
-    HAL_FLASH_Unlock();  // 解锁Flash
 	
-    if (addr == resetDevAddr) {  // 写入地址到Flash
-        newValue = 0xAAAA;
-        HAL_StatusTypeDef status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, addr, newValue);
-        if (status == HAL_OK) {
-			//复位写入成功
-        }
-    }    
-//		else if (addr == (resetDevAddr+FLASH_PAGE_SIZE)) {  // 写入地址到Flash
-//			if(!sealFlag)					//施解封确认标志位(false:施封,true:解封)
-//			{
-//				newValue = 0xBBBB;	//施封信息
-//			}
-//			else if(sealFlag)
-//			{
-//				newValue = 0xCCCC;	//解封信息
-//			}
-//					HAL_StatusTypeDef status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, addr, newValue);
-//					if (status == HAL_OK) {
-//				//复位写入成功
-//					}
-//			}
+    USART_SendHexArray(&huart5, combinedArray, sizeof(combinedArray));
 
-	
-	HAL_FLASH_Lock();  // 上锁Flash
 }
-
-
 /* USER CODE END 1 */

+ 44 - 86
MDK-ARM/dtu.uvoptx

@@ -153,47 +153,17 @@
         <Ww>
           <count>0</count>
           <WinNumber>1</WinNumber>
-          <ItemText>bt_dataLength</ItemText>
+          <ItemText>g_MBA32A_8buf_Down</ItemText>
         </Ww>
         <Ww>
           <count>1</count>
           <WinNumber>1</WinNumber>
-          <ItemText>bt_error_num</ItemText>
+          <ItemText>dev2</ItemText>
         </Ww>
         <Ww>
           <count>2</count>
           <WinNumber>1</WinNumber>
-          <ItemText>bt_serial_num</ItemText>
-        </Ww>
-        <Ww>
-          <count>3</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>bt_battery</ItemText>
-        </Ww>
-        <Ww>
-          <count>4</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>bt_log_num</ItemText>
-        </Ww>
-        <Ww>
-          <count>5</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>bt_lock_machinesta</ItemText>
-        </Ww>
-        <Ww>
-          <count>6</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>bt_lock_ropesta</ItemText>
-        </Ww>
-        <Ww>
-          <count>7</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>bt_hwver</ItemText>
-        </Ww>
-        <Ww>
-          <count>8</count>
-          <WinNumber>1</WinNumber>
-          <ItemText>bt_sfver</ItemText>
+          <ItemText>dev1</ItemText>
         </Ww>
       </WatchWindow1>
       <Tracepoint>
@@ -317,18 +287,6 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\Core\Src\net4g.c</PathWithFileName>
-      <FilenameWithoutPath>net4g.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>2</GroupNumber>
-      <FileNumber>6</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
       <PathWithFileName>..\Core\Src\mba32a.c</PathWithFileName>
       <FilenameWithoutPath>mba32a.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
@@ -336,7 +294,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>7</FileNumber>
+      <FileNumber>6</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -348,7 +306,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>8</FileNumber>
+      <FileNumber>7</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -360,7 +318,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>9</FileNumber>
+      <FileNumber>8</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -372,7 +330,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>10</FileNumber>
+      <FileNumber>9</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -384,7 +342,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>11</FileNumber>
+      <FileNumber>10</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -396,7 +354,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>12</FileNumber>
+      <FileNumber>11</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -408,7 +366,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>13</FileNumber>
+      <FileNumber>12</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -420,7 +378,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>14</FileNumber>
+      <FileNumber>13</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -432,7 +390,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>15</FileNumber>
+      <FileNumber>14</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -444,7 +402,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>16</FileNumber>
+      <FileNumber>15</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -456,7 +414,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>17</FileNumber>
+      <FileNumber>16</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -468,7 +426,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>18</FileNumber>
+      <FileNumber>17</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -488,7 +446,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>19</FileNumber>
+      <FileNumber>18</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -500,7 +458,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>20</FileNumber>
+      <FileNumber>19</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -512,7 +470,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>21</FileNumber>
+      <FileNumber>20</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -524,7 +482,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>22</FileNumber>
+      <FileNumber>21</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -536,7 +494,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>23</FileNumber>
+      <FileNumber>22</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -548,7 +506,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>24</FileNumber>
+      <FileNumber>23</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -560,7 +518,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>25</FileNumber>
+      <FileNumber>24</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -572,7 +530,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>26</FileNumber>
+      <FileNumber>25</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -584,7 +542,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>27</FileNumber>
+      <FileNumber>26</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -596,7 +554,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>28</FileNumber>
+      <FileNumber>27</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -608,7 +566,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>29</FileNumber>
+      <FileNumber>28</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -620,7 +578,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>30</FileNumber>
+      <FileNumber>29</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -632,7 +590,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>31</FileNumber>
+      <FileNumber>30</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -644,7 +602,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>32</FileNumber>
+      <FileNumber>31</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -656,7 +614,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>33</FileNumber>
+      <FileNumber>32</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -668,7 +626,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>34</FileNumber>
+      <FileNumber>33</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -680,7 +638,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>35</FileNumber>
+      <FileNumber>34</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -692,7 +650,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>36</FileNumber>
+      <FileNumber>35</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -712,7 +670,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>37</FileNumber>
+      <FileNumber>36</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -732,7 +690,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>38</FileNumber>
+      <FileNumber>37</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -744,7 +702,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>39</FileNumber>
+      <FileNumber>38</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -756,7 +714,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>40</FileNumber>
+      <FileNumber>39</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -768,7 +726,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>41</FileNumber>
+      <FileNumber>40</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -780,7 +738,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>42</FileNumber>
+      <FileNumber>41</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -792,7 +750,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>43</FileNumber>
+      <FileNumber>42</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -804,7 +762,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>44</FileNumber>
+      <FileNumber>43</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -816,7 +774,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>45</FileNumber>
+      <FileNumber>44</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -828,7 +786,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>46</FileNumber>
+      <FileNumber>45</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -840,7 +798,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>47</FileNumber>
+      <FileNumber>46</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>

+ 0 - 5
MDK-ARM/dtu.uvprojx

@@ -409,11 +409,6 @@
               <FileType>1</FileType>
               <FilePath>..\Core\Src\oled.c</FilePath>
             </File>
-            <File>
-              <FileName>net4g.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\Core\Src\net4g.c</FilePath>
-            </File>
             <File>
               <FileName>mba32a.c</FileName>
               <FileType>1</FileType>

文件差異過大導致無法顯示
+ 3066 - 2593
Output/dtu.hex


+ 0 - 1
Output/dtu.lnp

@@ -3,7 +3,6 @@
 "..\output\interface.o"
 "..\output\key.o"
 "..\output\oled.o"
-"..\output\net4g.o"
 "..\output\mba32a.o"
 "..\output\main.o"
 "..\output\gpio.o"