|
@@ -52,10 +52,10 @@ int fputc(int ch, FILE *f)
|
|
|
/* Private variables ---------------------------------------------------------*/
|
|
|
|
|
|
/* USER CODE BEGIN PV */
|
|
|
-uint8_t data_to_send[100];
|
|
|
+uint8_t data_to_send[50];
|
|
|
uint16_t CRC_value = 0;
|
|
|
uint16_t initial_address = 0x00C1;
|
|
|
-uint32_t System_version = 0x23051100;
|
|
|
+uint32_t System_version = 0x23051600;
|
|
|
uint16_t BaudrateValue = 0x0000;
|
|
|
uint16_t Adc2_CalibrationValue ;
|
|
|
uint16_t Adc3_CalibrationValue ;
|
|
@@ -116,9 +116,9 @@ int main(void)
|
|
|
/* USER CODE BEGIN WHILE */
|
|
|
while (1)
|
|
|
{
|
|
|
+ C1:
|
|
|
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
-
|
|
|
#if Modbus
|
|
|
gpioaStatus = GetPaInputStatus();
|
|
|
gpiobStatus = GetPbOutputStatus();
|
|
@@ -134,13 +134,19 @@ int main(void)
|
|
|
CRC_value = calculate_crc(data_to_send,5);
|
|
|
data_to_send[5] = (uint8_t)(CRC_value & 0xFF);
|
|
|
data_to_send[6] = (uint8_t)(CRC_value >> 8);
|
|
|
- HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 9);
|
|
|
+ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 15);
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
}
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x03 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0x02 && receive_buffer[4] == 0x00 && receive_buffer[5] == 0x01){
|
|
@@ -152,13 +158,19 @@ int main(void)
|
|
|
CRC_value = calculate_crc(data_to_send,5);
|
|
|
data_to_send[5] = (uint8_t)(CRC_value & 0xFF);
|
|
|
data_to_send[6] = (uint8_t)(CRC_value >> 8);
|
|
|
- HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 9);
|
|
|
+ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 15);
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x03 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0x03 && receive_buffer[4] == 0x00 && receive_buffer[5] == 0x01){
|
|
@@ -170,13 +182,19 @@ int main(void)
|
|
|
CRC_value = calculate_crc(data_to_send,5);
|
|
|
data_to_send[5] = (uint8_t)(CRC_value & 0xFF);
|
|
|
data_to_send[6] = (uint8_t)(CRC_value >> 8);
|
|
|
- HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 9);
|
|
|
+ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 15);
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x03 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0x04 && receive_buffer[4] == 0x00 && receive_buffer[5] == 0x01){
|
|
@@ -188,13 +206,19 @@ int main(void)
|
|
|
CRC_value = calculate_crc(data_to_send,5);
|
|
|
data_to_send[5] = (uint8_t)(CRC_value & 0xFF);
|
|
|
data_to_send[6] = (uint8_t)(CRC_value >> 8);
|
|
|
- HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 9);
|
|
|
+ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 15);
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x03 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0x05 && receive_buffer[4] == 0x00 && receive_buffer[5] == 0x01){
|
|
@@ -206,13 +230,19 @@ int main(void)
|
|
|
CRC_value = calculate_crc(data_to_send,5);
|
|
|
data_to_send[5] = (uint8_t)(CRC_value & 0xFF);
|
|
|
data_to_send[6] = (uint8_t)(CRC_value >> 8);
|
|
|
- HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 9);
|
|
|
+ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 15);
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x06 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0x0A && receive_buffer[4] == 0x00 && receive_buffer[5] == 0x01){
|
|
@@ -228,13 +258,19 @@ int main(void)
|
|
|
CRC_value = calculate_crc(data_to_send,5);
|
|
|
data_to_send[5] = (uint8_t)(CRC_value & 0xFF);
|
|
|
data_to_send[6] = (uint8_t)(CRC_value >> 8);
|
|
|
- HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 9);
|
|
|
+ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 15);
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x06 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0x0B && receive_buffer[4] == 0x00 && receive_buffer[5] == 0x01){
|
|
@@ -250,13 +286,19 @@ int main(void)
|
|
|
CRC_value = calculate_crc(data_to_send,5);
|
|
|
data_to_send[5] = (uint8_t)(CRC_value & 0xFF);
|
|
|
data_to_send[6] = (uint8_t)(CRC_value >> 8);
|
|
|
- HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 9);
|
|
|
+ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 15);
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x06 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0xAA && receive_buffer[4] == 0x00 ){
|
|
@@ -270,13 +312,19 @@ int main(void)
|
|
|
CRC_value = calculate_crc(data_to_send,5);
|
|
|
data_to_send[5] = (uint8_t)(CRC_value & 0xFF);
|
|
|
data_to_send[6] = (uint8_t)(CRC_value >> 8);
|
|
|
- HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 9);
|
|
|
+ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 15);
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x03 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0xBB && receive_buffer[4] == 0x00 && receive_buffer[5] == 0x02){
|
|
@@ -290,16 +338,23 @@ int main(void)
|
|
|
CRC_value = calculate_crc(data_to_send,7);
|
|
|
data_to_send[7] = (uint8_t)(CRC_value & 0xFF);
|
|
|
data_to_send[8] = (uint8_t)(CRC_value >> 8);
|
|
|
- HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 9, 11);
|
|
|
+ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 9, 15);
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x06 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0xCC && receive_buffer[4] == 0xA5 && receive_buffer[5] == 0x5A){
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_NVIC_SystemReset();
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
}
|
|
@@ -316,13 +371,19 @@ int main(void)
|
|
|
CRC_value = calculate_crc(data_to_send,5);
|
|
|
data_to_send[5] = (uint8_t)(CRC_value & 0xFF);
|
|
|
data_to_send[6] = (uint8_t)(CRC_value >> 8);
|
|
|
- HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 9);
|
|
|
+ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 15);
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x03 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0x01 && receive_buffer[4] == 0x00 && receive_buffer[5] == 0x02 ){
|
|
@@ -336,13 +397,19 @@ int main(void)
|
|
|
CRC_value = calculate_crc(data_to_send,7);
|
|
|
data_to_send[7] = (uint8_t)(CRC_value & 0xFF);
|
|
|
data_to_send[8] = (uint8_t)(CRC_value >> 8);
|
|
|
- HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 9, 11);
|
|
|
+ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 9, 15);
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x03 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0x01 && receive_buffer[4] == 0x00 && receive_buffer[5] == 0x03 ){
|
|
@@ -358,13 +425,19 @@ int main(void)
|
|
|
CRC_value = calculate_crc(data_to_send,9);
|
|
|
data_to_send[9] = (uint8_t)(CRC_value & 0xFF);
|
|
|
data_to_send[10] = (uint8_t)(CRC_value >> 8);
|
|
|
- HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 11, 14);
|
|
|
+ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 11, 15);
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x03 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0x01 && receive_buffer[4] == 0x00 && receive_buffer[5] == 0x04 ){
|
|
@@ -386,9 +459,15 @@ int main(void)
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x03 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0x01 && receive_buffer[4] == 0x00 && receive_buffer[5] == 0x05 ){
|
|
@@ -412,9 +491,15 @@ int main(void)
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x03 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0x02 && receive_buffer[4] == 0x00 && receive_buffer[5] == 0x02 ){
|
|
@@ -428,13 +513,19 @@ int main(void)
|
|
|
CRC_value = calculate_crc(data_to_send,7);
|
|
|
data_to_send[7] = (uint8_t)(CRC_value & 0xFF);
|
|
|
data_to_send[8] = (uint8_t)(CRC_value >> 8);
|
|
|
- HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 9, 11);
|
|
|
+ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 9, 15);
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x03 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0x02 && receive_buffer[4] == 0x00 && receive_buffer[5] == 0x03 ){
|
|
@@ -450,13 +541,19 @@ int main(void)
|
|
|
CRC_value = calculate_crc(data_to_send,9);
|
|
|
data_to_send[9] = (uint8_t)(CRC_value & 0xFF);
|
|
|
data_to_send[10] = (uint8_t)(CRC_value >> 8);
|
|
|
- HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 11, 14);
|
|
|
+ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 11, 15);
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x03 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0x02 && receive_buffer[4] == 0x00 && receive_buffer[5] == 0x04 ){
|
|
@@ -478,9 +575,15 @@ int main(void)
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x03 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0x03 && receive_buffer[4] == 0x00 && receive_buffer[5] == 0x02 ){
|
|
@@ -494,13 +597,19 @@ int main(void)
|
|
|
CRC_value = calculate_crc(data_to_send,7);
|
|
|
data_to_send[7] = (uint8_t)(CRC_value & 0xFF);
|
|
|
data_to_send[8] = (uint8_t)(CRC_value >> 8);
|
|
|
- HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 9, 11);
|
|
|
+ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 9, 15);
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x03 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0x03 && receive_buffer[4] == 0x00 && receive_buffer[5] == 0x03 ){
|
|
@@ -516,13 +625,19 @@ int main(void)
|
|
|
CRC_value = calculate_crc(data_to_send,9);
|
|
|
data_to_send[9] = (uint8_t)(CRC_value & 0xFF);
|
|
|
data_to_send[10] = (uint8_t)(CRC_value >> 8);
|
|
|
- HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 11, 14);
|
|
|
+ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 11, 15);
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x03 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0x04 && receive_buffer[4] == 0x00 && receive_buffer[5] == 0x02 ){
|
|
@@ -536,13 +651,19 @@ int main(void)
|
|
|
CRC_value = calculate_crc(data_to_send,7);
|
|
|
data_to_send[7] = (uint8_t)(CRC_value & 0xFF);
|
|
|
data_to_send[8] = (uint8_t)(CRC_value >> 8);
|
|
|
- HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 9, 11);
|
|
|
+ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 9, 15);
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == (uint8_t)initial_address && receive_buffer[1] == 0x06 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0x0C && receive_buffer[4] == 0x00 ){
|
|
@@ -558,13 +679,19 @@ int main(void)
|
|
|
CRC_value = calculate_crc(data_to_send,6);
|
|
|
data_to_send[6] = (uint8_t)(CRC_value & 0xFF);
|
|
|
data_to_send[7] = (uint8_t)(CRC_value >> 8);
|
|
|
- HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 8, 9);
|
|
|
+ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 8, 15);
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
|
|
|
else if(receive_buffer[0] == 0xFA && receive_buffer[1] == 0x03 && receive_buffer[2] == 0x00 && receive_buffer[3] == 0xAA && receive_buffer[4] == 0x00 && receive_buffer[5] == 0x01 ){
|
|
@@ -576,24 +703,24 @@ int main(void)
|
|
|
CRC_value = calculate_crc(data_to_send,5);
|
|
|
data_to_send[5] = (uint8_t)(CRC_value & 0xFF);
|
|
|
data_to_send[6] = (uint8_t)(CRC_value >> 8);
|
|
|
- HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 9);
|
|
|
+ HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, data_to_send, 7, 15);
|
|
|
if (status == HAL_OK) {
|
|
|
// 发送成功
|
|
|
flag = 0; // 将标志位重新置为0
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
} else {
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
+ __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
+ memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
- }
|
|
|
+ }
|
|
|
+ goto C1;
|
|
|
}
|
|
|
-
|
|
|
- memset(receive_buffer,0,sizeof(receive_buffer));
|
|
|
- read_new_address_from_flash(ADDR_FLASH_PAGE_61);
|
|
|
- __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE); // 清除接收溢出标志位
|
|
|
- __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收中断标志位
|
|
|
}
|
|
|
-
|
|
|
- HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
+ HAL_UART_Receive_IT(&huart1, &receive_buffer[0], 8);
|
|
|
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
|
|
|
- HAL_Delay(1);
|
|
|
+ HAL_Delay(1);
|
|
|
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
|
|
|
|
|
|
#endif
|