From 4b7f848e1fee86e047cfbe2957701c02f1b5fdf2 Mon Sep 17 00:00:00 2001 From: Uwe Bonnes Date: Sun, 21 Jun 2020 17:55:44 +0200 Subject: [PATCH] stm32h743nucleo: Enable Log via STLINK-VCP. --- hw/bsp/stm32h743nucleo/board.mk | 4 ++- hw/bsp/stm32h743nucleo/stm32h743nucleo.c | 34 ++++++++++++++++++--- hw/bsp/stm32h743nucleo/stm32h7xx_hal_conf.h | 3 +- 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/hw/bsp/stm32h743nucleo/board.mk b/hw/bsp/stm32h743nucleo/board.mk index 30e52dfcc..43a4999a4 100644 --- a/hw/bsp/stm32h743nucleo/board.mk +++ b/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 += \ diff --git a/hw/bsp/stm32h743nucleo/stm32h743nucleo.c b/hw/bsp/stm32h743nucleo/stm32h743nucleo.c index bb768eb40..b4a723871 100644 --- a/hw/bsp/stm32h743nucleo/stm32h743nucleo.c +++ b/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; } diff --git a/hw/bsp/stm32h743nucleo/stm32h7xx_hal_conf.h b/hw/bsp/stm32h743nucleo/stm32h7xx_hal_conf.h index c58fdf75b..8548ca246 100644 --- a/hw/bsp/stm32h743nucleo/stm32h7xx_hal_conf.h +++ b/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 ######################### */