72 #define RX_BUFFER_SIZE 8
73 #define RX_BUFFER_SIZE_UART1 3
74 #define BAUDRATE_METER 9600
75 #define BAUDRATE_LOGGER 115200
155 if (oldVolt != voltage)
162 if (voltage < minVoltage)
174 if (voltage > maxVoltage)
215 if (oldCurr != current)
222 if (current < minCurrent)
234 if (current > maxCurrent)
257 if (oldVolt != voltage)
275 if (oldCurr != current)
302 for (uint32_t index = 0; index < bytes; index++)
305 while (!LL_USART_IsActiveFlag_TXE(
USART2));
309 LL_USART_TransmitData8(
USART2, command[index]);
313 while (!LL_USART_IsActiveFlag_TC(
USART2));
337 for (uint32_t index = 0; index < bytes; index++)
340 while (!LL_USART_IsActiveFlag_TXE(
USART3));
344 LL_USART_TransmitData8(
USART3, command[index]);
348 while (!LL_USART_IsActiveFlag_TC(
USART3));
367 LL_USART_InitTypeDef USART_InitStruct = {0};
368 LL_GPIO_InitTypeDef GPIO_InitStruct = {0};
371 LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_USART1);
372 LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOA);
378 GPIO_InitStruct.Pin = LL_GPIO_PIN_9;
379 GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
380 GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
381 GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
382 LL_GPIO_Init(
GPIOA, &GPIO_InitStruct);
384 GPIO_InitStruct.Pin = LL_GPIO_PIN_10;
385 GPIO_InitStruct.Mode = LL_GPIO_MODE_FLOATING;
386 LL_GPIO_Init(
GPIOA, &GPIO_InitStruct);
394 USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_8B;
395 USART_InitStruct.StopBits = LL_USART_STOPBITS_1;
396 USART_InitStruct.Parity = LL_USART_PARITY_NONE;
397 USART_InitStruct.TransferDirection = LL_USART_DIRECTION_TX_RX;
398 USART_InitStruct.HardwareFlowControl = LL_USART_HWCONTROL_NONE;
399 USART_InitStruct.OverSampling = LL_USART_OVERSAMPLING_16;
400 LL_USART_Init(
USART1, &USART_InitStruct);
401 LL_USART_ConfigAsyncMode(
USART1);
411 LL_USART_ClearFlag_ORE(
USART1);
414 LL_USART_EnableIT_RXNE(
USART1);
415 LL_USART_EnableIT_ERROR(
USART1);
430 LL_USART_InitTypeDef USART_InitStruct = {0};
431 LL_GPIO_InitTypeDef GPIO_InitStruct = {0};
434 LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_USART2);
435 LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOA);
441 GPIO_InitStruct.Pin = LL_GPIO_PIN_2;
442 GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
443 GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
444 GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
445 LL_GPIO_Init(
GPIOA, &GPIO_InitStruct);
447 GPIO_InitStruct.Pin = LL_GPIO_PIN_3;
448 GPIO_InitStruct.Mode = LL_GPIO_MODE_FLOATING;
449 LL_GPIO_Init(
GPIOA, &GPIO_InitStruct);
457 USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_8B;
458 USART_InitStruct.StopBits = LL_USART_STOPBITS_1;
459 USART_InitStruct.Parity = LL_USART_PARITY_NONE;
460 USART_InitStruct.TransferDirection = LL_USART_DIRECTION_TX_RX;
461 USART_InitStruct.HardwareFlowControl = LL_USART_HWCONTROL_NONE;
462 USART_InitStruct.OverSampling = LL_USART_OVERSAMPLING_16;
463 LL_USART_Init(
USART2, &USART_InitStruct);
464 LL_USART_ConfigAsyncMode(
USART2);
474 LL_USART_ClearFlag_ORE(
USART2);
477 LL_USART_EnableIT_RXNE(
USART2);
478 LL_USART_EnableIT_ERROR(
USART2);
493 LL_USART_InitTypeDef USART_InitStruct = {0};
494 LL_GPIO_InitTypeDef GPIO_InitStruct = {0};
497 LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_USART3);
498 LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOB);
504 GPIO_InitStruct.Pin = LL_GPIO_PIN_10;
505 GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
506 GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
507 GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
508 LL_GPIO_Init(
GPIOB, &GPIO_InitStruct);
510 GPIO_InitStruct.Pin = LL_GPIO_PIN_11;
511 GPIO_InitStruct.Mode = LL_GPIO_MODE_FLOATING;
512 LL_GPIO_Init(
GPIOB, &GPIO_InitStruct);
520 USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_8B;
521 USART_InitStruct.StopBits = LL_USART_STOPBITS_1;
522 USART_InitStruct.Parity = LL_USART_PARITY_NONE;
523 USART_InitStruct.TransferDirection = LL_USART_DIRECTION_TX_RX;
524 USART_InitStruct.HardwareFlowControl = LL_USART_HWCONTROL_NONE;
525 USART_InitStruct.OverSampling = LL_USART_OVERSAMPLING_16;
526 LL_USART_Init(
USART3, &USART_InitStruct);
527 LL_USART_ConfigAsyncMode(
USART3);
537 LL_USART_ClearFlag_ORE(
USART3);
540 LL_USART_EnableIT_RXNE(
USART3);
541 LL_USART_EnableIT_ERROR(
USART3);
560 for (uint32_t i = 0; message[i] != 0; i++)
563 while (!LL_USART_IsActiveFlag_TXE(
USART1));
567 LL_USART_TransmitData8(
USART1, message[i]);
752 __IO uint32_t sr_reg;
761 sr_reg = LL_USART_ReadReg(
USART1, SR);
762 if (sr_reg & LL_USART_SR_NE)
765 LL_USART_ClearFlag_NE(
USART1);
781 __IO uint32_t sr_reg;
790 sr_reg = LL_USART_ReadReg(
USART2, SR);
791 if (sr_reg & LL_USART_SR_NE)
794 LL_USART_ClearFlag_NE(
USART2);
810 __IO uint32_t sr_reg;
819 sr_reg = LL_USART_ReadReg(
USART3, SR);
820 if (sr_reg & LL_USART_SR_NE)
823 LL_USART_ClearFlag_NE(
USART3);