From 6b25f0fe93843e16039853dee953a49be4184a12 Mon Sep 17 00:00:00 2001 From: Daniel Hansen Date: Tue, 10 Mar 2026 02:24:00 -0700 Subject: [PATCH 01/11] Alternate function support Signed-off-by: Daniel Hansen --- CCU/Core/Src/main.c | 3 ++- Lib/Utils/VirtualComPort/Inc/vcp.h | 2 ++ Lib/Utils/VirtualComPort/Src/vcp.c | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CCU/Core/Src/main.c b/CCU/Core/Src/main.c index 107416bb..d5dfc9de 100644 --- a/CCU/Core/Src/main.c +++ b/CCU/Core/Src/main.c @@ -77,7 +77,8 @@ VCP_Config vcp_config = {.baud_rate = 19200, .oversampling = VCP_Oversampling_16, .tx_fifo_threshold = VCP_Threshold_1_8, .rx_fifo_threshold = VCP_Threshold_1_8, - .usart_instance = USART2}; + .usart_instance = USART2, + .alternate_function = LL_GPIO_AF_7}; /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ diff --git a/Lib/Utils/VirtualComPort/Inc/vcp.h b/Lib/Utils/VirtualComPort/Inc/vcp.h index a95ce374..21b3f836 100644 --- a/Lib/Utils/VirtualComPort/Inc/vcp.h +++ b/Lib/Utils/VirtualComPort/Inc/vcp.h @@ -121,6 +121,8 @@ typedef struct { VCP_FifoThreshold tx_fifo_threshold; /* FIFO threshold for RX */ VCP_FifoThreshold rx_fifo_threshold; + /* Alternate function for use on pins */ + uint32_t alternate_function; } VCP_Config; void VCP_Send(uint8_t *data, uint32_t length); diff --git a/Lib/Utils/VirtualComPort/Src/vcp.c b/Lib/Utils/VirtualComPort/Src/vcp.c index 1fe79480..3c930031 100644 --- a/Lib/Utils/VirtualComPort/Src/vcp.c +++ b/Lib/Utils/VirtualComPort/Src/vcp.c @@ -146,7 +146,7 @@ void Setup_VCP(VCP_Config *input_config) .Speed = LL_GPIO_SPEED_FREQ_LOW, .OutputType = LL_GPIO_OUTPUT_PUSHPULL, .Pull = LL_GPIO_PULL_NO, - .Alternate = LL_GPIO_AF_7}; + .Alternate = vcp_config.alternate_function}; switch (vcp_config.bus_port) { case VCP_Port_A: From 96e5603aefe49c7026cbf03912440c9cbea33801 Mon Sep 17 00:00:00 2001 From: Daniel Hansen Date: Tue, 10 Mar 2026 02:24:38 -0700 Subject: [PATCH 02/11] Support LPUART and VCP Signed-off-by: Daniel Hansen --- Lib/Utils/VirtualComPort/Src/vcp.c | 53 +++++++++++++++++++++++++----- 1 file changed, 44 insertions(+), 9 deletions(-) diff --git a/Lib/Utils/VirtualComPort/Src/vcp.c b/Lib/Utils/VirtualComPort/Src/vcp.c index 3c930031..9179c424 100644 --- a/Lib/Utils/VirtualComPort/Src/vcp.c +++ b/Lib/Utils/VirtualComPort/Src/vcp.c @@ -134,6 +134,25 @@ void Setup_VCP(VCP_Config *input_config) } LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_USART3); + } else if (vcp_config.usart_instance == LPUART1) { + switch (vcp_config.clock_source) { + case VCP_CLOCK_PCLK: + LL_RCC_SetUSARTClockSource(LL_RCC_LPUART1_CLKSOURCE_PCLK1); + break; + case VCP_CLOCK_SYSCLK: + LL_RCC_SetUSARTClockSource(LL_RCC_LPUART1_CLKSOURCE_SYSCLK); + break; + case VCP_CLOCK_HSI: + LL_RCC_SetUSARTClockSource(LL_RCC_LPUART1_CLKSOURCE_HSI); + break; + case VCP_CLOCK_LSE: + LL_RCC_SetUSARTClockSource(LL_RCC_LPUART1_CLKSOURCE_LSE); + break; + default: + LOGOMATIC("Unsupported clock source for LPUART1 in Setup_VCP\n"); + return; + } + LL_APB1_GRP2_EnableClock(LL_APB1_GRP2_PERIPH_LPUART1); } else { LOGOMATIC("Unsupported USART instance for Setup_VCP\n"); return; @@ -175,15 +194,26 @@ void Setup_VCP(VCP_Config *input_config) return; } - LL_USART_InitTypeDef USART_InitStruct = {.PrescalerValue = vcp_config.prescaler, - .BaudRate = vcp_config.baud_rate, - .DataWidth = LL_USART_DATAWIDTH_8B, - .StopBits = vcp_config.stop_bits, - .Parity = vcp_config.parity, - .TransferDirection = LL_USART_DIRECTION_TX_RX, - .HardwareFlowControl = LL_USART_HWCONTROL_NONE, - .OverSampling = vcp_config.oversampling}; - LL_USART_Init(vcp_config.usart_instance, &USART_InitStruct); + if (vcp_config.usart_instance == LPUART1) { + LL_LPUART_InitTypeDef LPUART_InitStruct = {.PrescalerValue = vcp_config.prescaler, + .BaudRate = vcp_config.baud_rate, + .DataWidth = LL_LPUART_DATAWIDTH_8B, + .StopBits = vcp_config.stop_bits, + .Parity = vcp_config.parity, + .TransferDirection = LL_LPUART_DIRECTION_TX_RX, + .HardwareFlowControl = LL_LPUART_HWCONTROL_NONE}; + LL_LPUART_Init(vcp_config.usart_instance, &LPUART_InitStruct); + } else { + LL_USART_InitTypeDef USART_InitStruct = {.PrescalerValue = vcp_config.prescaler, + .BaudRate = vcp_config.baud_rate, + .DataWidth = LL_USART_DATAWIDTH_8B, + .StopBits = vcp_config.stop_bits, + .Parity = vcp_config.parity, + .TransferDirection = LL_USART_DIRECTION_TX_RX, + .HardwareFlowControl = LL_USART_HWCONTROL_NONE, + .OverSampling = vcp_config.oversampling}; + LL_USART_Init(vcp_config.usart_instance, &USART_InitStruct); + } LL_USART_SetTXFIFOThreshold(vcp_config.usart_instance, vcp_config.tx_fifo_threshold); LL_USART_SetRXFIFOThreshold(vcp_config.usart_instance, vcp_config.rx_fifo_threshold); LL_USART_DisableFIFO(vcp_config.usart_instance); @@ -199,6 +229,11 @@ void Setup_VCP(VCP_Config *input_config) LL_USART_EnableIT_RXNE(USART3); LL_USART_Enable(USART3); while ((!(LL_USART_IsActiveFlag_TEACK(USART3))) || (!(LL_USART_IsActiveFlag_REACK(USART3)))) {} + } else if (vcp_config.usart_instance == LPUART1) { + NVIC_EnableIRQ(LPUART1_IRQn); + LL_USART_EnableIT_RXNE(LPUART1); + LL_USART_Enable(LPUART1); + while ((!(LL_USART_IsActiveFlag_TEACK(LPUART1))) || (!(LL_USART_IsActiveFlag_REACK(LPUART1)))) {} } else { LOGOMATIC("Unsupported USART instance for Setup_VCP\n"); return; From 8be1de57de12709a69cdd60794d1261fdf2daf9d Mon Sep 17 00:00:00 2001 From: Daniel Hansen Date: Tue, 10 Mar 2026 02:24:49 -0700 Subject: [PATCH 03/11] Add VCP to CANine Signed-off-by: Daniel Hansen --- CANine/CMakeLists.txt | 2 +- CANine/Core/Inc/main.h | 1 + CANine/Core/Src/main.c | 40 ++++++++++++++++++++-------------------- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/CANine/CMakeLists.txt b/CANine/CMakeLists.txt index 954f6847..3410dbbb 100644 --- a/CANine/CMakeLists.txt +++ b/CANine/CMakeLists.txt @@ -35,6 +35,6 @@ target_sources( Core/Src/stm32g4xx_hal_msp.c ) -target_link_libraries(${GR_PROJECT_NAME}_USER_CODE INTERFACE) +target_link_libraries(${GR_PROJECT_NAME}_USER_CODE INTERFACE VCP_LIB) target_include_directories(${GR_PROJECT_NAME}_USER_CODE INTERFACE Core/Inc) diff --git a/CANine/Core/Inc/main.h b/CANine/Core/Inc/main.h index 5e3dcbb1..24e72098 100644 --- a/CANine/Core/Inc/main.h +++ b/CANine/Core/Inc/main.h @@ -39,6 +39,7 @@ extern "C" { #include "stm32g4xx_ll_rcc.h" #include "stm32g4xx_ll_system.h" #include "stm32g4xx_ll_utils.h" +#include "stm32g4xx_ll_usart.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ diff --git a/CANine/Core/Src/main.c b/CANine/Core/Src/main.c index 5e58c31c..c840a6a6 100644 --- a/CANine/Core/Src/main.c +++ b/CANine/Core/Src/main.c @@ -22,6 +22,7 @@ /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "Logomatic.h" +#include "vcp.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -56,22 +57,18 @@ static void MX_GPIO_Init(void); /* USER CODE BEGIN 0 */ /* Enable ITM for SWO output */ -LogomaticConfig logomatic_config = { - .baud_rate = 115200, - .clock_source = LOGOMATIC_PCLK1, - .data_width = LOGOMATIC_DATAWIDTH_8B, - .gpio_pin_rx_tx_mask = LL_GPIO_PIN_2 | LL_GPIO_PIN_3, - .gpio_port = LOGOMATIC_GPIOA, - .hardware_flow_control = LOGOMATIC_HWCONTROL_NONE, - .parity = LOGOMATIC_PARITY_NONE, - .prescaler = LOGOMATIC_PRESCALER_DIV1, - .stop_bits = LOGOMATIC_STOPBITS_1, - .transfer_direction = LOGOMATIC_DIRECTION_TX, - .tx_fifo_threshold = LOGOMATIC_FIFOTHRESHOLD_1_8, - .rx_fifo_threshold = LOGOMATIC_FIFOTHRESHOLD_1_8, - .bus = LOGOMATIC_BUS, -}; - +VCP_Config vcp_config = {.baud_rate = 250000, + .clock_source = VCP_CLOCK_PCLK, + .gpio_tx_rx_pin_mask = LL_GPIO_PIN_2 | LL_GPIO_PIN_3, + .bus_port = VCP_Port_A, + .parity = VCP_Parity_None, + .prescaler = VCP_Prescalar_Div1, + .stop_bits = VCP_StopBits_1, + .oversampling = VCP_Oversampling_8, + .tx_fifo_threshold = VCP_Threshold_1_8, + .rx_fifo_threshold = VCP_Threshold_1_8, + .usart_instance = LPUART1, + .alternate_function = LL_GPIO_AF_12}; /* USER CODE END 0 */ /** @@ -93,20 +90,22 @@ int main(void) HAL_Init(); /* USER CODE BEGIN Init */ - Setup_Logomatic(&logomatic_config); + /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ - + // Setup_Logomatic(&logomatic_config); + Setup_VCP(&vcp_config); /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); /* USER CODE BEGIN 2 */ - + // LOGOMATIC("Logomatic initialization complete\n"); + VCP_Send((uint8_t*)"VCP initialization complete\n", 29); /* USER CODE END 2 */ /* Infinite loop */ @@ -115,7 +114,8 @@ int main(void) /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ - LOGOMATIC("Hello, LOGOMATIC! Great to be here %f\n", 3.14159265); + LOGOMATIC("Hello, LOGOMATIC! Great to be here\n"); + VCP_Send((uint8_t*)"Hello, VCP! Great to be here\n", 30); LL_mDelay(750); } From eec6a285a7047709488a43e0dd188a5ea28f2622 Mon Sep 17 00:00:00 2001 From: Daniel Hansen Date: Tue, 10 Mar 2026 02:40:18 -0700 Subject: [PATCH 04/11] Resimplify with CCU setup Signed-off-by: Daniel Hansen --- CANine/Core/Src/main.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/CANine/Core/Src/main.c b/CANine/Core/Src/main.c index c840a6a6..19a73ca1 100644 --- a/CANine/Core/Src/main.c +++ b/CANine/Core/Src/main.c @@ -57,18 +57,32 @@ static void MX_GPIO_Init(void); /* USER CODE BEGIN 0 */ /* Enable ITM for SWO output */ -VCP_Config vcp_config = {.baud_rate = 250000, +LogomaticConfig logomaticConfig = {.clock_source = LOGOMATIC_PCLK1, + .bus = LOGOMATIC_BUS, + .gpio_port = LOGOMATIC_GPIOA, + .gpio_pin_rx_tx_mask = LL_GPIO_PIN_9 | LL_GPIO_PIN_10, + .baud_rate = 115200, + .data_width = LOGOMATIC_DATAWIDTH_8B, + .stop_bits = LOGOMATIC_STOPBITS_1, + .parity = LOGOMATIC_PARITY_NONE, + .transfer_direction = LOGOMATIC_DIRECTION_TX, + .hardware_flow_control = LOGOMATIC_HWCONTROL_NONE, + .prescaler = LOGOMATIC_PRESCALER_DIV1, + .tx_fifo_threshold = LOGOMATIC_FIFOTHRESHOLD_1_8, + .rx_fifo_threshold = LOGOMATIC_FIFOTHRESHOLD_1_8}; + +VCP_Config vcp_config = {.baud_rate = 4000000, .clock_source = VCP_CLOCK_PCLK, .gpio_tx_rx_pin_mask = LL_GPIO_PIN_2 | LL_GPIO_PIN_3, .bus_port = VCP_Port_A, .parity = VCP_Parity_None, .prescaler = VCP_Prescalar_Div1, .stop_bits = VCP_StopBits_1, - .oversampling = VCP_Oversampling_8, + .oversampling = VCP_Oversampling_16, .tx_fifo_threshold = VCP_Threshold_1_8, .rx_fifo_threshold = VCP_Threshold_1_8, - .usart_instance = LPUART1, - .alternate_function = LL_GPIO_AF_12}; + .usart_instance = USART2, + .alternate_function = LL_GPIO_AF_7}; /* USER CODE END 0 */ /** @@ -97,7 +111,7 @@ int main(void) SystemClock_Config(); /* USER CODE BEGIN SysInit */ - // Setup_Logomatic(&logomatic_config); + Setup_Logomatic(&logomaticConfig); Setup_VCP(&vcp_config); /* USER CODE END SysInit */ From 8e1e6b86574ec4922d128eb5c7fd4ee5fa3e4849 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 10 Mar 2026 09:42:15 +0000 Subject: [PATCH 05/11] Automatic Clang-Format: Standardized formatting automatically --- CANine/Core/Inc/main.h | 2 +- CANine/Core/Src/main.c | 4 ++-- Lib/Utils/VirtualComPort/Src/vcp.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CANine/Core/Inc/main.h b/CANine/Core/Inc/main.h index 24e72098..62518b79 100644 --- a/CANine/Core/Inc/main.h +++ b/CANine/Core/Inc/main.h @@ -38,8 +38,8 @@ extern "C" { #include "stm32g4xx_ll_pwr.h" #include "stm32g4xx_ll_rcc.h" #include "stm32g4xx_ll_system.h" -#include "stm32g4xx_ll_utils.h" #include "stm32g4xx_ll_usart.h" +#include "stm32g4xx_ll_utils.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ diff --git a/CANine/Core/Src/main.c b/CANine/Core/Src/main.c index 19a73ca1..8f3ff517 100644 --- a/CANine/Core/Src/main.c +++ b/CANine/Core/Src/main.c @@ -119,7 +119,7 @@ int main(void) MX_GPIO_Init(); /* USER CODE BEGIN 2 */ // LOGOMATIC("Logomatic initialization complete\n"); - VCP_Send((uint8_t*)"VCP initialization complete\n", 29); + VCP_Send((uint8_t *)"VCP initialization complete\n", 29); /* USER CODE END 2 */ /* Infinite loop */ @@ -129,7 +129,7 @@ int main(void) /* USER CODE BEGIN 3 */ LOGOMATIC("Hello, LOGOMATIC! Great to be here\n"); - VCP_Send((uint8_t*)"Hello, VCP! Great to be here\n", 30); + VCP_Send((uint8_t *)"Hello, VCP! Great to be here\n", 30); LL_mDelay(750); } diff --git a/Lib/Utils/VirtualComPort/Src/vcp.c b/Lib/Utils/VirtualComPort/Src/vcp.c index 9179c424..9ce9fdfe 100644 --- a/Lib/Utils/VirtualComPort/Src/vcp.c +++ b/Lib/Utils/VirtualComPort/Src/vcp.c @@ -134,7 +134,7 @@ void Setup_VCP(VCP_Config *input_config) } LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_USART3); - } else if (vcp_config.usart_instance == LPUART1) { + } else if (vcp_config.usart_instance == LPUART1) { switch (vcp_config.clock_source) { case VCP_CLOCK_PCLK: LL_RCC_SetUSARTClockSource(LL_RCC_LPUART1_CLKSOURCE_PCLK1); From 41aa494a729ec983a529f1570cbb5ed6f6c9e7e8 Mon Sep 17 00:00:00 2001 From: Daniel Hansen Date: Tue, 10 Mar 2026 02:43:35 -0700 Subject: [PATCH 06/11] Uncomment logomatic Signed-off-by: Daniel Hansen --- CANine/Core/Src/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CANine/Core/Src/main.c b/CANine/Core/Src/main.c index 8f3ff517..d2274f21 100644 --- a/CANine/Core/Src/main.c +++ b/CANine/Core/Src/main.c @@ -118,8 +118,8 @@ int main(void) /* Initialize all configured peripherals */ MX_GPIO_Init(); /* USER CODE BEGIN 2 */ - // LOGOMATIC("Logomatic initialization complete\n"); - VCP_Send((uint8_t *)"VCP initialization complete\n", 29); + LOGOMATIC("Logomatic initialization complete\n"); + VCP_Send((uint8_t*)"VCP initialization complete\n", 29); /* USER CODE END 2 */ /* Infinite loop */ From 8805733cc7d3ba7ae2440b2462901463bdda33c2 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 10 Mar 2026 09:45:09 +0000 Subject: [PATCH 07/11] Automatic Clang-Format: Standardized formatting automatically --- CANine/Core/Src/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CANine/Core/Src/main.c b/CANine/Core/Src/main.c index d2274f21..f136aa09 100644 --- a/CANine/Core/Src/main.c +++ b/CANine/Core/Src/main.c @@ -119,7 +119,7 @@ int main(void) MX_GPIO_Init(); /* USER CODE BEGIN 2 */ LOGOMATIC("Logomatic initialization complete\n"); - VCP_Send((uint8_t*)"VCP initialization complete\n", 29); + VCP_Send((uint8_t *)"VCP initialization complete\n", 29); /* USER CODE END 2 */ /* Infinite loop */ From 7b9328ae846193ad8673d3d36cd0662ab924d9ac Mon Sep 17 00:00:00 2001 From: Daniel Hansen Date: Tue, 10 Mar 2026 02:50:49 -0700 Subject: [PATCH 08/11] Refactor echo to be fancy Signed-off-by: Daniel Hansen --- BLINKY/G4ECHO/Core/Src/main.c | 20 ++++---------------- BLINKY/G4ECHO/Core/Src/stm32g4xx_it.c | 14 +++++++++++++- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/BLINKY/G4ECHO/Core/Src/main.c b/BLINKY/G4ECHO/Core/Src/main.c index 44c5a591..ff91f422 100644 --- a/BLINKY/G4ECHO/Core/Src/main.c +++ b/BLINKY/G4ECHO/Core/Src/main.c @@ -71,7 +71,7 @@ LogomaticConfig logomatic_config = { .bus = LOGOMATIC_BUS, }; -VCP_Config vcp_config = {.baud_rate = 19200, +VCP_Config vcp_config = {.baud_rate = 115200, .clock_source = VCP_CLOCK_PCLK, .gpio_tx_rx_pin_mask = LL_GPIO_PIN_2 | LL_GPIO_PIN_3, .bus_port = VCP_Port_A, @@ -82,19 +82,6 @@ VCP_Config vcp_config = {.baud_rate = 19200, .tx_fifo_threshold = VCP_Threshold_1_8, .rx_fifo_threshold = VCP_Threshold_1_8, .usart_instance = USART2}; - -void USART2_IRQHandler(void) -{ - if (LL_USART_IsActiveFlag_ORE(USART2)) { - LL_USART_ClearFlag_ORE(USART2); - } - while (LL_USART_IsEnabledIT_RXNE(USART2) && LL_USART_IsActiveFlag_RXNE(USART2)) { - uint8_t receivedData = LL_USART_ReceiveData8(USART2); - while (!LL_USART_IsActiveFlag_TXE_TXFNF(USART2)) {} - LL_USART_TransmitData8(USART2, receivedData); - LOGOMATIC("Received: %c\n", receivedData); - } -} /* USER CODE END 0 */ /** @@ -103,7 +90,6 @@ void USART2_IRQHandler(void) */ int main(void) { - /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ @@ -138,7 +124,9 @@ int main(void) /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ - LOGOMATIC("Hello, LOGOMATIC! Great to be here %f\n", 3.14159265); + LOGOMATIC("Hello, LOGOMATIC! Great to be here\n"); + VCP_Send("Hello, VCP! Great to be here\n", 30); + LL_mDelay(750); } /* USER CODE END 3 */ diff --git a/BLINKY/G4ECHO/Core/Src/stm32g4xx_it.c b/BLINKY/G4ECHO/Core/Src/stm32g4xx_it.c index dc40b162..68ec6bc0 100644 --- a/BLINKY/G4ECHO/Core/Src/stm32g4xx_it.c +++ b/BLINKY/G4ECHO/Core/Src/stm32g4xx_it.c @@ -23,6 +23,7 @@ #include "main.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ +#include "Logomatic.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -213,5 +214,16 @@ void EXTI15_10_IRQHandler(void) } /* USER CODE BEGIN 1 */ - +void USART2_IRQHandler(void) +{ + if (LL_USART_IsActiveFlag_ORE(USART2)) { + LL_USART_ClearFlag_ORE(USART2); + } + while (LL_USART_IsEnabledIT_RXNE(USART2) && LL_USART_IsActiveFlag_RXNE(USART2)) { + uint8_t receivedData = LL_USART_ReceiveData8(USART2); + while (!LL_USART_IsActiveFlag_TXE_TXFNF(USART2)) {} + LOGOMATIC("VCP: %c\n", receivedData); + LL_USART_TransmitData8(USART2, receivedData); + } +} /* USER CODE END 1 */ From 4bcc4272b0918a9e86e5a16ce40d4a91b70ba520 Mon Sep 17 00:00:00 2001 From: Daniel Hansen Date: Tue, 10 Mar 2026 02:52:52 -0700 Subject: [PATCH 09/11] Missing type cast Signed-off-by: Daniel Hansen --- BLINKY/G4ECHO/Core/Src/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BLINKY/G4ECHO/Core/Src/main.c b/BLINKY/G4ECHO/Core/Src/main.c index ff91f422..978c4007 100644 --- a/BLINKY/G4ECHO/Core/Src/main.c +++ b/BLINKY/G4ECHO/Core/Src/main.c @@ -125,7 +125,7 @@ int main(void) /* USER CODE BEGIN 3 */ LOGOMATIC("Hello, LOGOMATIC! Great to be here\n"); - VCP_Send("Hello, VCP! Great to be here\n", 30); + VCP_Send((uint8_t*)"Hello, VCP! Great to be here\n", 30); LL_mDelay(750); } From c625b7e262b06a40292fc904b7b1be6e5db8fde7 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 10 Mar 2026 09:53:57 +0000 Subject: [PATCH 10/11] Automatic Clang-Format: Standardized formatting automatically --- BLINKY/G4ECHO/Core/Src/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BLINKY/G4ECHO/Core/Src/main.c b/BLINKY/G4ECHO/Core/Src/main.c index 978c4007..9232c086 100644 --- a/BLINKY/G4ECHO/Core/Src/main.c +++ b/BLINKY/G4ECHO/Core/Src/main.c @@ -125,7 +125,7 @@ int main(void) /* USER CODE BEGIN 3 */ LOGOMATIC("Hello, LOGOMATIC! Great to be here\n"); - VCP_Send((uint8_t*)"Hello, VCP! Great to be here\n", 30); + VCP_Send((uint8_t *)"Hello, VCP! Great to be here\n", 30); LL_mDelay(750); } From d46690095af98dcb2b78ea47715922071cf06bd0 Mon Sep 17 00:00:00 2001 From: Daniel Hansen Date: Tue, 10 Mar 2026 03:10:03 -0700 Subject: [PATCH 11/11] Fix blinky AF Signed-off-by: Daniel Hansen --- BLINKY/G4ECHO/Core/Src/main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/BLINKY/G4ECHO/Core/Src/main.c b/BLINKY/G4ECHO/Core/Src/main.c index 9232c086..92a9d23e 100644 --- a/BLINKY/G4ECHO/Core/Src/main.c +++ b/BLINKY/G4ECHO/Core/Src/main.c @@ -81,7 +81,8 @@ VCP_Config vcp_config = {.baud_rate = 115200, .oversampling = VCP_Oversampling_16, .tx_fifo_threshold = VCP_Threshold_1_8, .rx_fifo_threshold = VCP_Threshold_1_8, - .usart_instance = USART2}; + .usart_instance = USART2, + .alternate_function = LL_GPIO_AF_7}; /* USER CODE END 0 */ /**