From a0bf4e611cbec66bcd0d371641dba12147d46e7f Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Wed, 5 Feb 2025 17:34:00 +0800 Subject: [PATCH] fix bug --- Core/Src/main.c | 6 ++++-- Core/Src/sts_aq_o3.c | 24 ++++++++++++++---------- STM32CubeIDE/Release/WL55JC_AS923.elf | Bin 76832 -> 76832 bytes 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/Core/Src/main.c b/Core/Src/main.c index 313cc53..11de389 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -115,8 +115,10 @@ int main(void) if (sts_aq_o3_start_pooling_mode() ==0) { do { - sts_aq_o3_query(&o3_data); - printf("\r\n cycle %d: o3 =%4d %s : %.2f mg/m3 \r\n", i, o3_data.o3_ppb, (o3_data.o3_unit==0x04)?"ppb":"non", o3_data.o3_mg_per_m3); + if (sts_aq_o3_query(&o3_data) ==0) + { + printf("\r\n cycle %d: o3 =%4d %s : %.2f mg/m3 \r\n", i, o3_data.o3_ppb, (o3_data.o3_unit==0x04)?"ppb":"non", o3_data.o3_mg_per_m3); + } HAL_Delay(4000); HAL_Delay(4000); HAL_Delay(4000); diff --git a/Core/Src/sts_aq_o3.c b/Core/Src/sts_aq_o3.c index c27fe52..6964cf2 100644 --- a/Core/Src/sts_aq_o3.c +++ b/Core/Src/sts_aq_o3.c @@ -43,6 +43,8 @@ int sts_aq_o3_start_autony_mode(void) { printf("\r\n Transmit anony mode failure \r\n"); return -1; + } else { + printf("\r\n Change to anony mode success \r\n"); } return 0; } @@ -63,7 +65,8 @@ void sts_aq_o3_autony_run_mode(sts_sensor_o3_t *sts_sensor_data) /*##-1- Put UART peripheral in reception process ###########################*/ if (HAL_UART_Receive_IT(&huart1, (uint8_t *)aRxBuffer, 9) != HAL_OK) { - printf("\r\n Transmit receiving data failure \r\n"); + printf("\r\n Periodic Receiving data failure ...........\r\n"); + return ; } printf("\nSensor data = "); @@ -96,19 +99,20 @@ int sts_aq_o3_query(sts_sensor_o3_t *sts_sensor_data) { printf("\r\n UART Receiving data failure \r\n"); return -2; - } else { - printf("\r\n UART Receiving data \r\n"); } - printf("\n Received data = "); for (uint8_t j=0; jo3_ppb = (int)(aRxBuffer[4]*256+aRxBuffer[5]); - sts_sensor_data->o3_range = (int)(aRxBuffer[6]*256+aRxBuffer[7]); - sts_sensor_data->o3_unit = (uint8_t)aRxBuffer[2]; - sts_sensor_data->o3_mg_per_m3 = (float)(2.140*(float)((aRxBuffer[4]*256+aRxBuffer[5])/1000.0)); - + if ((aRxBuffer[0] ==0xff)&&(aRxBuffer[1] == 0x17)) + { + sts_sensor_data->o3_ppb = (int)(aRxBuffer[4]*256+aRxBuffer[5]); + sts_sensor_data->o3_range = (int)(aRxBuffer[6]*256+aRxBuffer[7]); + sts_sensor_data->o3_unit = (uint8_t)aRxBuffer[2]; + sts_sensor_data->o3_mg_per_m3 = (float)(2.140*(float)((aRxBuffer[4]*256+aRxBuffer[5])/1000.0)); + } else { + printf("\r\n Received data invalid xxxxx \r\n"); + return -3; + } return 0; // printf("\r\n Seq:=%5d Read O3 = %d (ppb) [Range=%d unit=%s ] | == %.2f mg/m3 \r\n", i, (int)(aRxBuffer[4]*256+aRxBuffer[5]), // (int)(aRxBuffer[6]*256+aRxBuffer[7]),(aRxBuffer[2]==0x04)?"ppb":"ppm", (float)(2.140*(float)((aRxBuffer[4]*256+aRxBuffer[5])/1000.0))); diff --git a/STM32CubeIDE/Release/WL55JC_AS923.elf b/STM32CubeIDE/Release/WL55JC_AS923.elf index c7360a98d8c6ea3554de109f12c8ca7e93bd518f..be067b654cb8aeb56abc0059e707e5c5b1fc9eaa 100644 GIT binary patch delta 16575 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 delta 16526 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