Просмотр исходного кода

stm32h743nucleo: Enable Log via STLINK-VCP.

Uwe Bonnes 5 лет назад
Родитель
Сommit
4b7f848e1f

+ 3 - 1
hw/bsp/stm32h743nucleo/board.mk

@@ -9,7 +9,8 @@ CFLAGS += \
   -DSTM32H743xx \
   -DCFG_TUSB_MCU=OPT_MCU_STM32H7
 
-# mcu driver cause following warnings
+# suppress warning caused by vendor mcu driver
+CFLAGS += -Wno-error=maybe-uninitialized -Wno-error=cast-align
 
 ST_HAL_DRIVER = hw/mcu/st/st_driver/STM32H7xx_HAL_Driver
 ST_CMSIS = hw/mcu/st/st_driver/CMSIS/Device/ST/STM32H7xx
@@ -24,6 +25,7 @@ SRC_C += \
 	$(ST_HAL_DRIVER)/Src/stm32h7xx_hal_rcc.c \
 	$(ST_HAL_DRIVER)/Src/stm32h7xx_hal_rcc_ex.c \
 	$(ST_HAL_DRIVER)/Src/stm32h7xx_hal_gpio.c \
+	$(ST_HAL_DRIVER)/Src/stm32h7xx_hal_uart.c \
 	$(ST_HAL_DRIVER)/Src/stm32h7xx_hal_pwr_ex.c
 
 SRC_S += \

+ 30 - 4
hw/bsp/stm32h743nucleo/stm32h743nucleo.c

@@ -49,14 +49,22 @@ void OTG_FS_IRQHandler(void)
 #define BUTTON_PIN            GPIO_PIN_13
 #define BUTTON_STATE_ACTIVE   1
 
+#define UARTx                 USART3
+#define UART_GPIO_PORT        GPIOD
+#define UART_GPIO_AF          GPIO_AF7_USART3
+#define UART_TX_PIN           GPIO_PIN_8
+#define UART_RX_PIN           GPIO_PIN_9
+
+UART_HandleTypeDef UartHandle;
+
 // enable all LED, Button, Uart, USB clock
 static void all_rcc_clk_enable(void)
 {
   __HAL_RCC_GPIOA_CLK_ENABLE();  // USB D+, D-
   __HAL_RCC_GPIOB_CLK_ENABLE();  // LED
   __HAL_RCC_GPIOC_CLK_ENABLE();  // Button
-//  __HAL_RCC_GPIOD_CLK_ENABLE();  // Uart tx, rx
-//  __HAL_RCC_USART3_CLK_ENABLE(); // Uart module
+  __HAL_RCC_GPIOD_CLK_ENABLE();  // Uart tx, rx
+  __HAL_RCC_USART3_CLK_ENABLE(); // Uart module
 }
 
 /* PWR, RCC, GPIO (All): AHB4 (D3 domain)
@@ -170,6 +178,24 @@ void board_init(void)
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
   HAL_GPIO_Init(BUTTON_PORT, &GPIO_InitStruct);
 
+  // Uart
+  GPIO_InitStruct.Pin       = UART_TX_PIN | UART_RX_PIN;
+  GPIO_InitStruct.Mode      = GPIO_MODE_AF_PP;
+  GPIO_InitStruct.Pull      = GPIO_PULLUP;
+  GPIO_InitStruct.Speed     = GPIO_SPEED_FREQ_VERY_HIGH;
+  GPIO_InitStruct.Alternate = UART_GPIO_AF;
+  HAL_GPIO_Init(UART_GPIO_PORT, &GPIO_InitStruct);
+
+  UartHandle.Instance        = UARTx;
+  UartHandle.Init.BaudRate   = CFG_BOARD_UART_BAUDRATE;
+  UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
+  UartHandle.Init.StopBits   = UART_STOPBITS_1;
+  UartHandle.Init.Parity     = UART_PARITY_NONE;
+  UartHandle.Init.HwFlowCtl  = UART_HWCONTROL_NONE;
+  UartHandle.Init.Mode       = UART_MODE_TX_RX;
+  UartHandle.Init.OverSampling = UART_OVERSAMPLING_16;
+  HAL_UART_Init(&UartHandle);
+
   // USB Pin Init
   // PA9- VUSB, PA10- ID, PA11- DM, PA12- DP
 
@@ -226,8 +252,8 @@ int board_uart_read(uint8_t* buf, int len)
 
 int board_uart_write(void const * buf, int len)
 {
-  (void) buf; (void) len;
-  return 0;
+  HAL_UART_Transmit(&UartHandle, (uint8_t*) buf, len, 0xffff);
+  return len;
 }
 
 

+ 2 - 1
hw/bsp/stm32h743nucleo/stm32h7xx_hal_conf.h

@@ -100,7 +100,7 @@
 /* #define HAL_SRAM_MODULE_ENABLED */
 /* #define HAL_SWPMI_MODULE_ENABLED */
 /* #define HAL_TIM_MODULE_ENABLED */
-/* #define HAL_UART_MODULE_ENABLED */
+#define HAL_UART_MODULE_ENABLED */
 /* #define HAL_USART_MODULE_ENABLED */
 /* #define HAL_WWDG_MODULE_ENABLED */
 
@@ -211,6 +211,7 @@
 #define  USE_HAL_SPI_REGISTER_CALLBACKS     0U /* SPI register callback disabled     */
 #define  USE_HAL_SWPMI_REGISTER_CALLBACKS   0U /* SWPMI register callback disabled   */
 #define  USE_HAL_TIM_REGISTER_CALLBACKS     0U /* TIM register callback disabled     */
+#define  USE_HAL_UART_REGISTER_CALLBACKS    0U /* USART register callback disabled     */
 #define  USE_HAL_WWDG_REGISTER_CALLBACKS    0U /* WWDG register callback disabled    */
 
 /* ########################### Ethernet Configuration ######################### */