Added software reset
This commit is contained in:
@@ -96,6 +96,7 @@ int8_t uart_enable_interrupts(void);
|
||||
#endif
|
||||
/* USER CODE BEGIN Private defines */
|
||||
#define MEASUREMENT_PERIOD_MS 600000
|
||||
#define RESET_MAGIC_NUMBER 0xABCD
|
||||
|
||||
extern uint16_t usart2_rx_message_index;
|
||||
extern uint16_t usart2_rx_message_len;
|
||||
|
||||
@@ -89,7 +89,8 @@ enum
|
||||
REGISTER_NUM_CO2_ALERT_LIMIT2 = 40005,
|
||||
REGISTER_NUM_SCD4x_T_OFFSET = 40006,
|
||||
REGISTER_NUM_MODBUS_ADDR = 40007,
|
||||
REGISTER_NUM_BAUDRATE = 40008
|
||||
REGISTER_NUM_BAUDRATE = 40008,
|
||||
REGISTER_NUM_RESET_DEVICE = 40100
|
||||
} config_registers_numbers;
|
||||
|
||||
enum
|
||||
@@ -931,6 +932,14 @@ int8_t modbus_slave_callback(modbus_transaction_t *transaction)
|
||||
sensor_config.baudrate_index = (uint16_t) (transaction->holding_registers[i]);
|
||||
baudrate_changed = 1;
|
||||
break;
|
||||
case REGISTER_NUM_RESET_DEVICE:
|
||||
if (transaction->holding_registers[i] == 0xABCD) {
|
||||
/* software reset */
|
||||
NVIC_SystemReset();
|
||||
} else {
|
||||
return MODBUS_ERROR_OUT_OF_BOUNDS;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return MODBUS_ERROR_FUNCTION_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user