porkling office vor 2 Wochen
Ursprung
Commit
55226a8fb1

+ 18 - 0
OnlyUpdateApp_IAP/APP/ch32v20x_it.c

@@ -15,6 +15,8 @@
  */
 #include "ch32v20x_it.h"
 #include "CONFIG.h"
+#include "ws2812b_spi.h"
+#include "user_ws2812b.h"
 
 /*********************************************************************
  * LOCAL FUNCTIONS
@@ -23,6 +25,7 @@ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
 void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
 void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
 //void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
+void USER_WS2812B_DMA_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
 
 /*********************************************************************
  * @fn      NMI_Handler
@@ -74,3 +77,18 @@ void BB_IRQHandler(void)
 //{
 //    LLE_IRQLibHandler();
 //}
+
+void USER_WS2812B_DMA_IRQHandler(void)
+{
+    if(DMA_GetITStatus(USER_WS2812B_DMA_IT_TC))
+    {
+        // 清除中断标志
+        DMA_ClearITPendingBit(USER_WS2812B_DMA_IT_TC);
+
+        DMA_Cmd(USER_WS2812B_DMA_CHANNEL, DISABLE);
+        SPI_I2S_DMACmd(USER_WS2812B_SPI, SPI_I2S_DMAReq_Tx, DISABLE);
+        // 在这里处理传输完成逻辑
+        // 例如: 设置标志、准备下一次传输等
+        vUser_ws2812b_set_tx_stat(false);
+    }
+}

+ 16 - 17
OnlyUpdateApp_IAP/APP/include/define.h

@@ -7,35 +7,34 @@
 #include "CONFIG.h"
 #include "HAL.h"
 
-#define LOG_OUTPUT_TIME						3000
+#define LOG_OUTPUT_TIME						                    3000
 
-#define Timecount                           256
+#define Timecount                                               256
 
-#define REBYTE_LEN                          512
-#define SEND_LEN                            128
+#define REBYTE_LEN                                              512
+#define SEND_LEN                                                128
 
-#define HIGH							    1
-#define LOW							        0
+#define HIGH							                        1
+#define LOW							                            0
 
-#define SOFTWARE_VERSION					0x10
-#define HARDWARE_VERSION					0x14
-
-#define AES_ENABLE						    0
+#define SOFTWARE_VERSION					                    0x10
+#define HARDWARE_VERSION					                    0x14
 
+#define AES_ENABLE						                        0
 
 /* OTA upgrade logo */
-#define IMAGE_OTA_FLAG       			    0x03
+#define IMAGE_OTA_FLAG       			                        0x03
 
 /* Store on the DataFlash address, the position of Bluetooth cannot be occupied */
-#define OTA_DATAFLASH_ADDR                  0x08077000
+#define OTA_DATAFLASH_ADDR                                      0x08077000
 
-#define IMAGE_FLAG_1                        0x1A
-#define IMAGE_FLAG_2                        0x2A
-#define IMAGE_FLAG_3                        0x3A
+#define IMAGE_FLAG_1                                            0x1A
+#define IMAGE_FLAG_2                                            0x2A
+#define IMAGE_FLAG_3                                            0x3A
 
-#define USER_WS2812B_COUNT_DEFAULT          6
+#define USER_WS2812B_COUNT_DEFAULT                              6
 
-#define KEY_GPIO_RCC_ENABLE					                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD, ENABLE)
+#define KEY_GPIO_RCC_ENABLE					                    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD, ENABLE)
 #define ELECT_01_OPEN_GPIO                                    	GPIOB
 #define ELECT_01_OPEN_PIN                                     	GPIO_Pin_5
 #define ELECT_01_OPEN_ON						                GPIO_WriteBit(ELECT_01_OPEN_GPIO, ELECT_01_OPEN_PIN, Bit_SET)

+ 27 - 0
OnlyUpdateApp_IAP/APP/include/user_upgrade.h

@@ -0,0 +1,27 @@
+#ifndef __USER_UPGRADE_H__
+#define __USER_UPGRADE_H__
+
+#include "define.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum
+{
+    USER_UPGRADE_QUEUE_TIME 		= 0,
+    USER_UPGRADE_QUEUE_ENTER_APP 	= 1,
+}USER_UPGRADE_QUEUE_TYPE;
+
+void user_upgrade_init(void);
+void user_upgrade_start(void);
+void ota_timeout_task_start(bool stat);
+void Set_User_Upgrade_Queue(USER_UPGRADE_QUEUE_TYPE type);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // __USER_UPGRADE_H__
+
+/** @} */

+ 3 - 1
OnlyUpdateApp_IAP/APP/peripheral.c

@@ -22,6 +22,7 @@
 #include "OTA.h"
 #include "OTAprofile.h"
 #include "led.h"
+#include "user_upgrade.h"
 
 /*********************************************************************
  * MACROS
@@ -390,7 +391,7 @@ static void peripheralStateNotificationCB(gapRole_States_t newState, gapRoleEven
 
             conn_interval = event->connInterval;
             PRINT("Connected.. \n");
-
+            ota_timeout_task_start(false);
             if(conn_interval > DEFAULT_DESIRED_MAX_CONN_INTERVAL)
             {
                 PRINT("Send Update\r\n");
@@ -413,6 +414,7 @@ static void peripheralStateNotificationCB(gapRole_States_t newState, gapRoleEven
             // Set the GAP Role Parameters
             GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t), &initial_advertising_enable);
             PRINT("Disconnected..\n");
+            ota_timeout_task_start(true);
         }
         break;
 

+ 3 - 0
OnlyUpdateApp_IAP/APP/peripheral_main.c

@@ -19,6 +19,7 @@
 #include "OTAprofile.h"
 #include "led.h"
 #include "user_ws2812b.h"
+#include "user_upgrade.h"
 
 /* ¼Ç¼µ±Ç°µÄImage */
 unsigned char CurrImageFlag = 0xff;
@@ -203,10 +204,12 @@ int main(void)
     Peripheral_Init();
     vUser_ws2812b_init(USER_WS2812B_COUNT_DEFAULT);
     led_task_init();
+    user_upgrade_start();
     vUser_ws2812b_task_start();
     led_task_start();
 	vUser_led_set_view_stat(LED_VIEW_ENTER_OTA);
     PRINT("start task\n");
+    ota_timeout_task_start(true);
     Main_Circulation();
 }
 

+ 64 - 0
OnlyUpdateApp_IAP/APP/user_upgrade.c

@@ -0,0 +1,64 @@
+#include "user_upgrade.h"
+#include "peripheral.h"
+#include "ota.h"
+#include "led.h"
+
+static tmosTaskID user_upgrade_task_id = INVALID_TASK_ID;
+
+static bool ota_timeout_check = false;
+static uint16_t ota_timeout_delay_count = 60;
+
+static void user_upgrade_time_pro(void)
+{
+    if(ota_timeout_check == true)
+    {
+	if(ota_timeout_delay_count > 0)
+	{
+	    ota_timeout_delay_count--;
+	    if(ota_timeout_delay_count == 1)
+	    {
+		    Set_User_Upgrade_Queue(USER_UPGRADE_QUEUE_ENTER_APP);
+	    }
+	}
+    }
+}
+
+void Set_User_Upgrade_Queue(USER_UPGRADE_QUEUE_TYPE type)
+{
+    bStatus_t stat = tmos_start_task(user_upgrade_task_id, (1 << type), MS1_TO_SYSTEM_TIME(10));
+}
+
+//task的event处理回调函数,需要在注册task时候,传进去
+static uint16_t user_upgrade_task_process_event(uint8_t task_id, uint16_t events)
+{
+    //event 处理
+    if(events & (1 << USER_UPGRADE_QUEUE_TIME))
+    {
+        user_upgrade_time_pro();
+        return (events ^ (1 << USER_UPGRADE_QUEUE_TIME)); //异或的方式清除该事件运行标志,并返回未运行的事件标志
+    }
+    //event 处理
+    if(events & (1 << USER_UPGRADE_QUEUE_ENTER_APP))
+    {
+        /* Close all the current use interrupt, or it is convenient to directly close */
+        __disable_irq();
+        PRINT("ota timeout jump App \n");
+        Delay_Ms(10);
+        app_start();
+    	return (events ^ (1 << USER_UPGRADE_QUEUE_ENTER_APP)); //异或的方式清除该事件运行标志,并返回未运行的事件标志
+    }
+
+    return 0;
+}
+
+void ota_timeout_task_start(bool stat)
+{
+  ota_timeout_check = stat;
+  ota_timeout_delay_count = 30;
+}
+
+void user_upgrade_start(void)
+{
+    user_upgrade_task_id  = TMOS_ProcessEventRegister(user_upgrade_task_process_event);
+    bStatus_t stat = tmos_start_reload_task(user_upgrade_task_id, (1 << USER_UPGRADE_QUEUE_TIME), MS1_TO_SYSTEM_TIME(1000));
+}

+ 25 - 1
OnlyUpdateApp_IAP/obj/APP/ch32v20x_it.d

@@ -29,7 +29,15 @@ APP/ch32v20x_it.o: ../APP/ch32v20x_it.c \
  d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/ch32v20x_it.h \
  d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_misc.h \
  d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/CONFIG.h \
- d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/LIB/WCHBLE_ROM.H
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/LIB/WCHBLE_ROM.H \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/ws2812b_spi.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/define.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/HAL.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/config.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/RTC.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/SLEEP.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/user_ws2812b.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/ws2812b_spi.h
 
 d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/ch32v20x_it.h:
 
@@ -92,3 +100,19 @@ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library
 d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/CONFIG.h:
 
 d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/LIB/WCHBLE_ROM.H:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/ws2812b_spi.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/define.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/HAL.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/config.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/RTC.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/SLEEP.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/user_ws2812b.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/ws2812b_spi.h:

+ 4 - 1
OnlyUpdateApp_IAP/obj/APP/peripheral.d

@@ -38,7 +38,8 @@ APP/peripheral.o: ../APP/peripheral.c \
  d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/HAL.h \
  d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/config.h \
  d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/RTC.h \
- d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/SLEEP.h
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/SLEEP.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/user_upgrade.h
 
 d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/CONFIG.h:
 
@@ -119,3 +120,5 @@ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library
 d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/RTC.h:
 
 d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/SLEEP.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/user_upgrade.h:

+ 4 - 1
OnlyUpdateApp_IAP/obj/APP/peripheral_main.d

@@ -40,7 +40,8 @@ APP/peripheral_main.o: ../APP/peripheral_main.c \
  d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/led.h \
  d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/define.h \
  d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/user_ws2812b.h \
- d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/ws2812b_spi.h
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/ws2812b_spi.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/user_upgrade.h
 
 d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/define.h:
 
@@ -125,3 +126,5 @@ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpd
 d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/user_ws2812b.h:
 
 d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/ws2812b_spi.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/user_upgrade.h:

+ 4 - 0
OnlyUpdateApp_IAP/obj/APP/subdir.mk

@@ -10,6 +10,7 @@ C_SRCS += \
 ../APP/peripheral.c \
 ../APP/peripheral_main.c \
 ../APP/system_ch32v20x.c \
+../APP/user_upgrade.c \
 ../APP/user_ws2812b.c \
 ../APP/ws2812b_spi.c 
 
@@ -19,6 +20,7 @@ C_DEPS += \
 ./APP/peripheral.d \
 ./APP/peripheral_main.d \
 ./APP/system_ch32v20x.d \
+./APP/user_upgrade.d \
 ./APP/user_ws2812b.d \
 ./APP/ws2812b_spi.d 
 
@@ -28,6 +30,7 @@ OBJS += \
 ./APP/peripheral.o \
 ./APP/peripheral_main.o \
 ./APP/system_ch32v20x.o \
+./APP/user_upgrade.o \
 ./APP/user_ws2812b.o \
 ./APP/ws2812b_spi.o 
 
@@ -38,6 +41,7 @@ EXPANDS += \
 ./APP/peripheral.c.234r.expand \
 ./APP/peripheral_main.c.234r.expand \
 ./APP/system_ch32v20x.c.234r.expand \
+./APP/user_upgrade.c.234r.expand \
 ./APP/user_ws2812b.c.234r.expand \
 ./APP/ws2812b_spi.c.234r.expand 
 

+ 118 - 0
OnlyUpdateApp_IAP/obj/APP/user_upgrade.d

@@ -0,0 +1,118 @@
+APP/user_upgrade.o: ../APP/user_upgrade.c \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/user_upgrade.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/define.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/CONFIG.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/LIB/WCHBLE_ROM.H \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Core/core_riscv.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/system_ch32v20x.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/ch32v20x_conf.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_adc.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_bkp.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_can.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_crc.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_dbgmcu.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_dma.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_exti.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_flash.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_gpio.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_i2c.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_iwdg.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_pwr.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_rcc.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_rtc.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_spi.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_tim.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_tim5.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_tim.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_usart.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_wwdg.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/ch32v20x_it.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Debug/debug.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_misc.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/HAL.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/config.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/RTC.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/SLEEP.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/peripheral.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/ota.h \
+ d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/led.h
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/user_upgrade.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/define.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/CONFIG.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/LIB/WCHBLE_ROM.H:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Core/core_riscv.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/system_ch32v20x.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/ch32v20x_conf.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_adc.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_bkp.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_can.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_crc.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_dbgmcu.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_dma.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_exti.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_flash.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_gpio.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_i2c.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_iwdg.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_pwr.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_rcc.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_rtc.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_spi.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_tim.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_tim5.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_tim.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_usart.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_wwdg.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/ch32v20x_it.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Debug/debug.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/SRC/Peripheral/inc/ch32v20x_misc.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/HAL.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/config.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/RTC.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/Library/HAL/include/SLEEP.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/peripheral.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/ota.h:
+
+d:/git_workspace/bozz/loto/bozz_loto_software/for_can/ISCS_LOCK_BASE_CAN/OnlyUpdateApp_IAP/APP/include/led.h:

BIN
OnlyUpdateApp_IAP/obj/OnlyUpdateApp_IAP.bin


Datei-Diff unterdrückt, da er zu groß ist
+ 324 - 281
OnlyUpdateApp_IAP/obj/OnlyUpdateApp_IAP.lst


Datei-Diff unterdrückt, da er zu groß ist
+ 399 - 370
OnlyUpdateApp_IAP/obj/OnlyUpdateApp_IAP.map


+ 2 - 2
mainboard/User/app_main.c

@@ -80,12 +80,12 @@ static void task_init(void)
 
 static void task_start(void)
 {
+  vUser_ws2812b_task_start();
   dipsw_task_start();
   elect_task_start();
   electsw_task_start();
   vUser_nfc_task_start();
   vUser_server_task_start();
-  vUser_ws2812b_task_start();
   led_task_start();
 }
 
@@ -115,7 +115,7 @@ int main(void)
     Peripheral_Init();
     task_init();
     task_start();
-    set_led_indication(DEV_LED, WS2812B_NORMAL_RGB, LED_WORK_INVERT, 5000, 2500, 0);
+    // set_led_indication(DEV_LED, WS2812B_NORMAL_RGB, LED_WORK_INVERT, 5000, 2500, 0);
     Main_Circulation();
 }
 

+ 41 - 3
mainboard/components/action/user_sever.c

@@ -452,7 +452,11 @@ void vUser_server_task_start(void)
 *******************************************************************************/
 static void vUser_server_set_led_stat(uint8_t idx)
 {
-    if(((lock_data.elect_stat & (1 << idx)) != 0 ) && ((lock_data.lock_stat & (1 << idx)) != 0))
+    if(((lock_data.elect_stat & (1 << (idx + 8))) != 0 ))
+    {
+        vUser_led_set_view_stat(idx, LED_VIEW_ELECT_FAUIL);
+    }
+    else if(((lock_data.elect_stat & (1 << idx)) != 0 ) && ((lock_data.lock_stat & (1 << idx)) != 0))
     {
         vUser_led_set_view_stat(idx, LED_VIEW_LOCK_ELECT);
     }
@@ -496,6 +500,26 @@ static void prvUser_can_recv_data_callback(uint8_t *data, uint8_t size)
     bStatus_t stat = tmos_start_task(user_server_task_id, (1 << SERVER_QUEUE_CAN), MS1_TO_SYSTEM_TIME(1));
 }
 
+/*******************************************************************************
+  * @函数名称   prvUser_server_check_elect_stat
+  * @函数说明   检测电磁锁状态是否正常
+  * @输入参数  	idx:挂锁底座号
+  * @输出参数   无
+  * @返回参数   无
+*******************************************************************************/
+static void prvUser_server_check_elect_stat(uint8_t idx)
+{
+    if((lock_data.elect_act & (1 << (idx + 8))) != 0)
+    {
+        lock_data.elect_stat |= (1 << (idx + 8));
+    }
+    else{
+        lock_data.elect_stat &= ~(1 << (idx + 8));
+    }
+    // PRINT("elect stat=0x%04X,0x%04X\n", lock_data.elect_stat, lock_data.elect_act);
+    vUser_server_set_led_stat(idx);
+}
+
 /*******************************************************************************
   * @函数名称   vUser_nfc_upload_card_callback
   * @函数说明   钥匙nfc标签读取上报回调
@@ -524,10 +548,11 @@ static void prvUser_nfc_upload_card_callback(uint8_t idx, bool stat, unsigned ch
   * @函数说明   设置挂锁位电磁锁状态回调
   * @输入参数   idx:挂锁底座号
                 stat:电磁锁是否锁死
+                finish:电磁锁工作状态
   * @输出参数   无
   * @返回参数   无
 *******************************************************************************/
-static void vUser_elect_upload_stat_callback(uint8_t idx, bool stat)
+static void vUser_elect_upload_stat_callback(uint8_t idx, bool stat, bool finish)
 {
 	if(stat == true)
 	{
@@ -536,7 +561,17 @@ static void vUser_elect_upload_stat_callback(uint8_t idx, bool stat)
 	else{
 		lock_data.elect_act &= ~(1 << idx);
 	}
-    vUser_server_set_led_stat(idx);
+
+    if(finish == false)
+    {
+        if((lock_data.elect_act & (1 << idx)) != (lock_data.elect_stat & (1 << idx)))
+        {
+            lock_data.elect_act |= (1 << (idx + 8));
+        }
+    }
+    else{
+        prvUser_server_check_elect_stat(idx);
+    }
 }
 
 /*******************************************************************************
@@ -579,6 +614,9 @@ static void prvElectsw_upload_callback(uint8_t idx, bool stat)
 	else{
 		lock_data.elect_stat &= ~(1 << idx);
 	}
+
+    lock_data.elect_act &= ~(1 << (idx + 8));
+    prvUser_server_check_elect_stat(idx);
 }
 
 /*******************************************************************************

+ 20 - 9
mainboard/components/electlock/elect_sw.c

@@ -11,7 +11,7 @@ static electsw_work_s electsw_work[5] =
 {
   {
     .idx = 0,
-    .electsw_stat = 2,
+    .electsw_stat = ELECTSW_STAT_NULL,
     .electsw_finish = false,
     .electsw_on_count = ELECT_SW_CHECK_COUNT,
     .electsw_off_count = ELECT_SW_CHECK_COUNT,
@@ -19,7 +19,7 @@ static electsw_work_s electsw_work[5] =
   },
   {
     .idx = 1,
-    .electsw_stat = 2,
+    .electsw_stat = ELECTSW_STAT_NULL,
     .electsw_finish = false,
     .electsw_on_count = ELECT_SW_CHECK_COUNT,
     .electsw_off_count = ELECT_SW_CHECK_COUNT,
@@ -27,7 +27,7 @@ static electsw_work_s electsw_work[5] =
   },
   {
     .idx = 2,
-    .electsw_stat = 2,
+    .electsw_stat = ELECTSW_STAT_NULL,
     .electsw_finish = false,
     .electsw_on_count = ELECT_SW_CHECK_COUNT,
     .electsw_off_count = ELECT_SW_CHECK_COUNT,
@@ -35,7 +35,7 @@ static electsw_work_s electsw_work[5] =
   },
   {
     .idx = 3,
-    .electsw_stat = 2,
+    .electsw_stat = ELECTSW_STAT_NULL,
     .electsw_finish = false,
     .electsw_on_count = ELECT_SW_CHECK_COUNT,
     .electsw_off_count = ELECT_SW_CHECK_COUNT,
@@ -43,7 +43,7 @@ static electsw_work_s electsw_work[5] =
   },
   {
     .idx = 4,
-    .electsw_stat = 2,
+    .electsw_stat = ELECTSW_STAT_NULL,
     .electsw_finish = false,
     .electsw_on_count = ELECT_SW_CHECK_COUNT,
     .electsw_off_count = ELECT_SW_CHECK_COUNT,
@@ -212,9 +212,9 @@ static void electsw_check(electsw_work_s *electsw)
       if(electsw->electsw_finish == false)
       {
         electsw->electsw_finish = true;
-        if(electsw->electsw_stat != 1)
+        if(electsw->electsw_stat != ELECTSW_STAT_OPEN)
         {
-          electsw->electsw_stat = 1;
+          electsw->electsw_stat = ELECTSW_STAT_OPEN;
           if(electsw_upload != NULL)
           {
             PRINT("No.%d elect stat is open\n", electsw->idx);
@@ -235,9 +235,9 @@ static void electsw_check(electsw_work_s *electsw)
       if(electsw->electsw_finish == false)
       {
         electsw->electsw_finish = true;
-        if(electsw->electsw_stat != 0)
+        if(electsw->electsw_stat != ELECTSW_STAT_CLOSE)
         {
-          electsw->electsw_stat = 0;
+          electsw->electsw_stat = ELECTSW_STAT_CLOSE;
           if(electsw_upload != NULL)
           {
             PRINT("No.%d elect stat is close\n", electsw->idx);
@@ -312,3 +312,14 @@ void vElectsw_set_upload_func(electsw_upload_func func)
     electsw_upload = func;
 }
 
+/*******************************************************************************
+  * @函数名称   bElectsw_get_stat
+  * @函数说明   获取电磁锁当前状态
+  * @输入参数  	idx:电磁锁下标
+  * @输出参数   无
+  * @返回参数   电磁锁状态
+*******************************************************************************/
+electsw_stat_e bElectsw_get_stat(uint8_t idx)
+{
+  return electsw_work[idx].electsw_stat;
+}

+ 8 - 1
mainboard/components/electlock/elect_sw.h

@@ -38,9 +38,15 @@ extern "C" {
 
 typedef bool (*get_level_func)(void);
 
+typedef enum{
+  ELECTSW_STAT_NULL = 0,
+  ELECTSW_STAT_OPEN = 1,
+  ELECTSW_STAT_CLOSE = 2,
+}electsw_stat_e;
+
 typedef struct{
   uint8_t idx;
-  uint8_t electsw_stat;
+  electsw_stat_e electsw_stat;
   bool electsw_finish;
   uint8_t electsw_on_count;
   uint8_t electsw_off_count;
@@ -53,5 +59,6 @@ void vElectsw_init(void);
 void electsw_task_start(void);
 void vElectsw_set_upload_func(electsw_upload_func func);
 uint16_t electsw_task_process_event(uint8_t task_id, uint16_t events);
+electsw_stat_e bElectsw_get_stat(uint8_t idx);
 
 #endif	//_SWITCH_H__

+ 20 - 3
mainboard/components/electlock/user_elect.c

@@ -252,9 +252,26 @@ static void elect_05_work_stat(bool stat, elect_work_type_e type)
 void set_elect_work_stat(uint8_t idx, bool stat)
 {
   PRINT("No.%d elect = %s\n", idx, (stat == true)?"true":"false");
+
+  electsw_stat_e electswStat = bElectsw_get_stat(idx);
+
+  if(electswStat == ELECTSW_STAT_OPEN && stat == false)
+  {
+      return;
+  }
+  else if(electswStat == ELECTSW_STAT_CLOSE && stat == true)
+  {
+      return;
+  }
+
 	elect_work[idx].stat = stat;
 	elect_work[idx].type = ELECT_WORK_START;
 	elect_work[idx].workTime = 0;
+  if(xUpload_stat != NULL)
+  {
+      // PRINT("No.%d elect upload stat\n", elect->idx);
+      xUpload_stat(idx, elect_work[idx].stat, false);
+  }
 }
 
 /*******************************************************************************
@@ -280,8 +297,8 @@ static void elect_work_pro(elect_work_s *elect)
 			elect->type = ELECT_WORK_NULL;
       if(xUpload_stat != NULL)
       {
-          PRINT("No.%d elect upload stat\n", elect->idx);
-          xUpload_stat(elect->idx, elect->stat);
+          // PRINT("No.%d elect upload stat\n", elect->idx);
+          xUpload_stat(elect->idx, elect->stat, true);
       }
 		}
 	}
@@ -327,7 +344,7 @@ static uint16_t elect_task_process_event(uint8_t task_id, uint16_t events)
     {
         for(int i = 0; i < ELECT_COUNT; i++)
         {
-          elect_work[i].type = ELECT_WORK_START;
+          set_elect_work_stat(i, elect_work[i].stat);
         }
         return (events ^ (1 << ELECT_QUEUE_START)); //异或的方式清除该事件运行标志,并返回未运行的事件标志
     }

+ 15 - 15
mainboard/components/electlock/user_elect.h

@@ -16,52 +16,52 @@ extern "C" {
 #define ELECT_GPIO_RCC_ENABLE					                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOD, ENABLE)
 
 #define ELECT_01_OPEN_GPIO                                    	GPIOB
-#define ELECT_01_OPEN_PIN                                     	GPIO_Pin_4
+#define ELECT_01_OPEN_PIN                                     	GPIO_Pin_5
 #define ELECT_01_OPEN_ON						                GPIO_WriteBit(ELECT_01_OPEN_GPIO, ELECT_01_OPEN_PIN, Bit_SET)
 #define ELECT_01_OPEN_OFF						                GPIO_WriteBit(ELECT_01_OPEN_GPIO, ELECT_01_OPEN_PIN, Bit_RESET)
 
 #define ELECT_01_CLOSE_GPIO                                   	GPIOB
-#define ELECT_01_CLOSE_PIN                                    	GPIO_Pin_5
+#define ELECT_01_CLOSE_PIN                                    	GPIO_Pin_4
 #define ELECT_01_CLOSE_ON						                GPIO_WriteBit(ELECT_01_CLOSE_GPIO, ELECT_01_CLOSE_PIN, Bit_SET)
 #define ELECT_01_CLOSE_OFF						            	GPIO_WriteBit(ELECT_01_CLOSE_GPIO, ELECT_01_CLOSE_PIN, Bit_RESET)
 
-#define ELECT_02_OPEN_GPIO                                    	GPIOD
-#define ELECT_02_OPEN_PIN                                     	GPIO_Pin_2
+#define ELECT_02_OPEN_GPIO                                    	GPIOB
+#define ELECT_02_OPEN_PIN                                     	GPIO_Pin_3
 #define ELECT_02_OPEN_ON						                GPIO_WriteBit(ELECT_02_OPEN_GPIO, ELECT_02_OPEN_PIN, Bit_SET)
 #define ELECT_02_OPEN_OFF						                GPIO_WriteBit(ELECT_02_OPEN_GPIO, ELECT_02_OPEN_PIN, Bit_RESET)
 
-#define ELECT_02_CLOSE_GPIO                                   	GPIOB
-#define ELECT_02_CLOSE_PIN                                    	GPIO_Pin_3
+#define ELECT_02_CLOSE_GPIO                                   	GPIOD
+#define ELECT_02_CLOSE_PIN                                    	GPIO_Pin_2
 #define ELECT_02_CLOSE_ON						                GPIO_WriteBit(ELECT_02_CLOSE_GPIO, ELECT_02_CLOSE_PIN, Bit_SET)
 #define ELECT_02_CLOSE_OFF						            	GPIO_WriteBit(ELECT_02_CLOSE_GPIO, ELECT_02_CLOSE_PIN, Bit_RESET)
 
 #define ELECT_03_OPEN_GPIO                                    	GPIOC
-#define ELECT_03_OPEN_PIN                                     	GPIO_Pin_11
+#define ELECT_03_OPEN_PIN                                     	GPIO_Pin_12
 #define ELECT_03_OPEN_ON						                GPIO_WriteBit(ELECT_03_OPEN_GPIO, ELECT_03_OPEN_PIN, Bit_SET)
 #define ELECT_03_OPEN_OFF						                GPIO_WriteBit(ELECT_03_OPEN_GPIO, ELECT_03_OPEN_PIN, Bit_RESET)
 
 #define ELECT_03_CLOSE_GPIO                                   	GPIOC
-#define ELECT_03_CLOSE_PIN                                    	GPIO_Pin_12
+#define ELECT_03_CLOSE_PIN                                    	GPIO_Pin_11
 #define ELECT_03_CLOSE_ON						                GPIO_WriteBit(ELECT_03_CLOSE_GPIO, ELECT_03_CLOSE_PIN, Bit_SET)
 #define ELECT_03_CLOSE_OFF						            	GPIO_WriteBit(ELECT_03_CLOSE_GPIO, ELECT_03_CLOSE_PIN, Bit_RESET)
 
-#define ELECT_04_OPEN_GPIO                                    	GPIOC
-#define ELECT_04_OPEN_PIN                                     	GPIO_Pin_10
+#define ELECT_04_OPEN_GPIO                                    	GPIOA
+#define ELECT_04_OPEN_PIN                                     	GPIO_Pin_15
 #define ELECT_04_OPEN_ON						                GPIO_WriteBit(ELECT_04_OPEN_GPIO, ELECT_04_OPEN_PIN, Bit_SET)
 #define ELECT_04_OPEN_OFF						                GPIO_WriteBit(ELECT_04_OPEN_GPIO, ELECT_04_OPEN_PIN, Bit_RESET)
 
-#define ELECT_04_CLOSE_GPIO                                   	GPIOA
-#define ELECT_04_CLOSE_PIN                                    	GPIO_Pin_15
+#define ELECT_04_CLOSE_GPIO                                   	GPIOC
+#define ELECT_04_CLOSE_PIN                                    	GPIO_Pin_10
 #define ELECT_04_CLOSE_ON						                GPIO_WriteBit(ELECT_04_CLOSE_GPIO, ELECT_04_CLOSE_PIN, Bit_SET)
 #define ELECT_04_CLOSE_OFF						            	GPIO_WriteBit(ELECT_04_CLOSE_GPIO, ELECT_04_CLOSE_PIN, Bit_RESET)
 
 #define ELECT_05_OPEN_GPIO                                    	GPIOD
-#define ELECT_05_OPEN_PIN                                     	GPIO_Pin_6
+#define ELECT_05_OPEN_PIN                                     	GPIO_Pin_5
 #define ELECT_05_OPEN_ON						                GPIO_WriteBit(ELECT_05_OPEN_GPIO, ELECT_05_OPEN_PIN, Bit_SET)
 #define ELECT_05_OPEN_OFF						                GPIO_WriteBit(ELECT_05_OPEN_GPIO, ELECT_05_OPEN_PIN, Bit_RESET)
 
 #define ELECT_05_CLOSE_GPIO                                   	GPIOD
-#define ELECT_05_CLOSE_PIN                                    	GPIO_Pin_5
+#define ELECT_05_CLOSE_PIN                                    	GPIO_Pin_6
 #define ELECT_05_CLOSE_ON						                GPIO_WriteBit(ELECT_05_CLOSE_GPIO, ELECT_05_CLOSE_PIN, Bit_SET)
 #define ELECT_05_CLOSE_OFF						            	GPIO_WriteBit(ELECT_05_CLOSE_GPIO, ELECT_05_CLOSE_PIN, Bit_RESET)
 
@@ -88,7 +88,7 @@ typedef enum
 	ELECTSW_QUEUE_TIME	= 2,
 }ELECT_QUEUE_TYPE;
 
-typedef void (*vUser_elect_upload_stat_func)(uint8_t idx, bool stat);
+typedef void (*vUser_elect_upload_stat_func)(uint8_t idx, bool stat, bool finish);
 
 void elect_task_init(void);
 void elect_task_start(void);

+ 1 - 0
mainboard/components/led/user_led.c

@@ -422,6 +422,7 @@ void vUser_led_set_view_stat(LED_TYPE idx, led_view_stat_e stat)
         {
             case LED_VIEW_ALARM:set_led_indication(idx + 1, LED_VIEW_ALARM_COLOR, LED_WORK_INVERT, 1000, 500, 0);break;                       //报警
             case LED_VIEW_WARN:set_led_indication(idx + 1, LED_VIEW_WARN_COLOR, LED_WORK_BREATHE, 3000, 1500, 0, 500, 500);break;            //警告
+            case LED_VIEW_ELECT_FAUIL:set_led_indication(idx + 1, LED_VIEW_ELECT_FAULT_COLOR, LED_WORK_INVERT, 200, 100, 0);break;            //电磁锁故障
             case LED_VIEW_LOCK_ELECT:set_led_indication(idx + 1, LED_VIEW_LOCK_ELECT_COLOR, LED_WORK_ON);break;                                       //有挂锁并上锁
             case LED_VIEW_NOLOCK_ELECT:set_led_indication(idx + 1, LED_VIEW_NOLOCK_ELECT_COLOR, LED_WORK_BREATHE, 500, 250, 0, 100, 100);break;         //无挂锁并上锁
             case LED_VIEW_LOCK_NOELECT:set_led_indication(idx + 1, LED_VIEW_LOCK_NOELECT_COLOR, LED_WORK_BREATHE, 500, 250, 0, 100, 100);break;       //有挂锁没上锁

+ 2 - 0
mainboard/components/led/user_led.h

@@ -19,6 +19,7 @@ extern "C" {
 
 #define LED_VIEW_ALARM_COLOR                            0x00FF9900                         //报警
 #define LED_VIEW_WARN_COLOR                             0x00FFFF00                         //警告
+#define LED_VIEW_ELECT_FAULT_COLOR                      0x00FFA500                         //电磁锁故障
 #define LED_VIEW_LOCK_ELECT_COLOR                       0x00FF0000                         //有挂锁并上锁
 #define LED_VIEW_NOLOCK_ELECT_COLOR                     0x00FF0000                         //无挂锁并上锁
 #define LED_VIEW_LOCK_NOELECT_COLOR                     0x0000FF00                         //有挂锁没上锁
@@ -67,6 +68,7 @@ typedef enum{
     LED_VIEW_NULL = 0,
     LED_VIEW_ALARM,                         //报警
     LED_VIEW_WARN,                          //警告
+    LED_VIEW_ELECT_FAUIL,                   //电磁锁故障
     LED_VIEW_LOCK_ELECT,                    //有挂锁并上锁
     LED_VIEW_NOLOCK_ELECT,                  //无挂锁并上锁
     LED_VIEW_LOCK_NOELECT,                  //有挂锁没上锁

+ 7 - 0
mainboard/components/ws2812b/user_ws2812b.c

@@ -95,6 +95,12 @@ static void vUser_ws2812b_check(void)
 
         if(stat == true)
         {
+            // PRINT("\n***********\n");
+            // for(int i = 0; i < user_ws2812b_work.count; i++)
+            // {
+            //     PRINT("#%02X%02X%02X\n", user_ws2812b_work.led_param[i].rValue, user_ws2812b_work.led_param[i].gValue, user_ws2812b_work.led_param[i].bValue);
+            // }
+            // PRINT("***********\n");
             prvUser_ws2812b_txData();
         }
     }
@@ -162,6 +168,7 @@ void vUser_ws2812b_init(uint8_t count)
     user_ws2812b_work.count = count;
     user_ws2812b_work.led_param = (ws2812b_led_param_s *)malloc(count * sizeof(ws2812b_led_param_s));
     user_ws2812b_work.rgbValue = (uint8_t *)malloc(count * 3 * 8);
+    memset(user_ws2812b_work.rgbValue, WS2812B_HIGH, count * 3 * 8);
 
     for(int i = 0; i < count; i++)
     {

Datei-Diff unterdrückt, da er zu groß ist
+ 939 - 937
mainboard/obj/mainboard.map


BIN
obj/main.bin


Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.