|
|
@@ -26,6 +26,8 @@
|
|
|
#include "main.h"
|
|
|
#include "board_cfg.h"
|
|
|
#include "common.h"
|
|
|
+#include "flash.h"
|
|
|
+#include "gd32e23x.h"
|
|
|
|
|
|
|
|
|
/* ----------------------- Defines ------------------------------------------*/
|
|
|
@@ -184,7 +186,27 @@ unsigned int WiRegIndex;
|
|
|
#define W_SET_PH_INFO_LEN (1)
|
|
|
|
|
|
|
|
|
+extern META_DATA_S meta_data;
|
|
|
+extern float elec[RelaySlaveChaNum];
|
|
|
|
|
|
+static void break_2_boot_upgreade(void)
|
|
|
+{
|
|
|
+ meta_data.errno = 0;
|
|
|
+ meta_data.operation_flag = 1;
|
|
|
+ meta_data.recent_running_time = 25;
|
|
|
+ flash_erase_meta();
|
|
|
+ flash_write_meta(&meta_data);
|
|
|
+ __disable_irq();
|
|
|
+ //__set_FAULTMASK(1);
|
|
|
+ NVIC_SystemReset();
|
|
|
+}
|
|
|
+
|
|
|
+static void soft_reset(void)
|
|
|
+{
|
|
|
+ __disable_irq();
|
|
|
+ //__set_FAULTMASK(1);
|
|
|
+ NVIC_SystemReset();
|
|
|
+}
|
|
|
|
|
|
|
|
|
eMBErrorCode
|
|
|
@@ -281,6 +303,7 @@ eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegi
|
|
|
{
|
|
|
// todo
|
|
|
T_cnt = usAddress - RW_Com_RELAY_CHN_STU;
|
|
|
+
|
|
|
}else if(usAddress >= RW_Zero_RELAY_CHN_STU && usAddress < RW_DELAY_CHN)
|
|
|
{
|
|
|
// todo
|
|
|
@@ -368,22 +391,40 @@ eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegi
|
|
|
for(uint8_t j = 0; j < RelaySlaveChaNum;j++)
|
|
|
{
|
|
|
if(j == usRegHoldBuf[WiRegIndex]){
|
|
|
+ board->ele_restore[j] = 0;
|
|
|
board->md_data.r_data.r_d.ele_out[j].consumer = 0;
|
|
|
+ elec[j] = 0.0;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}else if(usAddress == W_CLEAR_CONFIG)
|
|
|
{
|
|
|
-
|
|
|
+ board->clear_flag = 1;
|
|
|
}else if(usAddress == W_SOFT_RESET)
|
|
|
{
|
|
|
-
|
|
|
+ soft_reset();
|
|
|
}else if(usAddress == W_BREAK_UPGRAGE)
|
|
|
{
|
|
|
-
|
|
|
+#if 0
|
|
|
+ break_2_boot_upgreade();
|
|
|
+#endif
|
|
|
+
|
|
|
}else if(usAddress == W_SET_PH_INFO)
|
|
|
{
|
|
|
-
|
|
|
+ for(uint8_t j = 0; j < RelaySlaveChaNum;j++)
|
|
|
+ {
|
|
|
+ if((usRegHoldBuf[WiRegIndex] >> 8) == j)
|
|
|
+ {
|
|
|
+ uint8_t buff = usRegHoldBuf[WiRegIndex] & 0XFF;
|
|
|
+ board->md_data.r_data.r_d.ele_out[j].resever = buff;
|
|
|
+ w_eeprom_data_t data = {0};
|
|
|
+ data.lenth =WusNRegs;
|
|
|
+ memcpy(&data.data,&buff,1);
|
|
|
+ data.start_addr = (EEPROM_CHANNEL_PHASE+j);
|
|
|
+ board->q_cache.en_queue(&data);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|