From 227bffe04b5d61e49a6f7e777c12e1efd7b498d1 Mon Sep 17 00:00:00 2001 From: hathach Date: Wed, 27 May 2020 01:14:52 +0700 Subject: [PATCH] adding h743 uart, but not enabled yet since it conflict with OTG_FS2 --- hw/bsp/stm32h743eval/board.mk | 7 ++++- hw/bsp/stm32h743eval/stm32h743eval.c | 35 +++++++++++++++++++++-- hw/bsp/stm32h743eval/stm32h7xx_hal_conf.h | 4 ++- 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/hw/bsp/stm32h743eval/board.mk b/hw/bsp/stm32h743eval/board.mk index 68d142435..5c6c6ea4f 100644 --- a/hw/bsp/stm32h743eval/board.mk +++ b/hw/bsp/stm32h743eval/board.mk @@ -12,7 +12,7 @@ CFLAGS += \ -DBOARD_DEVICE_RHPORT_SPEED=OPT_MODE_HIGH_SPEED # suppress warning caused by vendor mcu driver -CFLAGS += -Wno-error=maybe-uninitialized +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 @@ -27,6 +27,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 += \ @@ -45,5 +46,9 @@ CHIP_FAMILY = synopsys # For freeRTOS port source FREERTOS_PORT = ARM_CM7/r0p1 +# For flash-jlink target +JLINK_DEVICE = stm32h743xi +JLINK_IF = jtag + # flash target using on-board stlink flash: flash-stlink diff --git a/hw/bsp/stm32h743eval/stm32h743eval.c b/hw/bsp/stm32h743eval/stm32h743eval.c index fd3d33047..d149c1230 100644 --- a/hw/bsp/stm32h743eval/stm32h743eval.c +++ b/hw/bsp/stm32h743eval/stm32h743eval.c @@ -61,13 +61,21 @@ void OTG_HS_IRQHandler(void) #define BUTTON_PIN GPIO_PIN_13 #define BUTTON_STATE_ACTIVE 0 +#define UARTx USART1 +#define UART_GPIO_PORT GPIOB +#define UART_GPIO_AF GPIO_AF4_USART1 +#define UART_TX_PIN GPIO_PIN_14 +#define UART_RX_PIN GPIO_PIN_15 + +UART_HandleTypeDef UartHandle; + // enable all LED, Button, Uart, USB clock static void all_rcc_clk_enable(void) { __HAL_RCC_GPIOA_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_GPIOB_CLK_ENABLE(); // Uart tx, rx +// __HAL_RCC_USART1_CLK_ENABLE(); // Uart module } /* PWR, RCC, GPIO (All): AHB4 (D3 domain) @@ -198,6 +206,26 @@ void board_init(void) GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(BUTTON_PORT, &GPIO_InitStruct); +#if 0 + // 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); +#endif + #if BOARD_DEVICE_RHPORT_NUM == 0 // Despite being call USB2_OTG // OTG_FS is marked as RHPort0 by TinyUSB to be consistent across stm32 port @@ -330,7 +358,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/stm32h743eval/stm32h7xx_hal_conf.h b/hw/bsp/stm32h743eval/stm32h7xx_hal_conf.h index 2a9eb37ae..b9fa348ec 100644 --- a/hw/bsp/stm32h743eval/stm32h7xx_hal_conf.h +++ b/hw/bsp/stm32h743eval/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,8 @@ #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 /* UART register callback disabled */ +#define USE_HAL_USART_REGISTER_CALLBACKS 0U /* USART register callback disabled */ #define USE_HAL_WWDG_REGISTER_CALLBACKS 0U /* WWDG register callback disabled */ /* ########################### Ethernet Configuration ######################### */