summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhathach <[email protected]>2023-10-31 11:39:20 +0700
committerhathach <[email protected]>2023-10-31 11:39:20 +0700
commit6ab7875aab3e677fb3bafa8595b7eb90598c2d58 (patch)
tree6579424adf673e6b60a8b8152c4c904984cd98d4
parentdb3ff4b3527b9b81d381ecc21a74e76e81b2a8e9 (diff)
uart working on u5a5
-rw-r--r--examples/device/board_test/src/main.c22
-rw-r--r--hw/bsp/stm32u5/boards/stm32u5a5nucleo/board.h28
-rw-r--r--hw/bsp/stm32u5/family.c5
3 files changed, 25 insertions, 30 deletions
diff --git a/examples/device/board_test/src/main.c b/examples/device/board_test/src/main.c
index 0a134a2e6..91799eb89 100644
--- a/examples/device/board_test/src/main.c
+++ b/examples/device/board_test/src/main.c
@@ -26,39 +26,31 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-
#include "bsp/board_api.h"
-//--------------------------------------------------------------------+
-// MACRO CONSTANT TYPEDEF PROTOTYPES
-//--------------------------------------------------------------------+
-
/* Blink pattern
* - 250 ms : button is not pressed
* - 1000 ms : button is pressed (and hold)
*/
-enum {
+enum {
BLINK_PRESSED = 250,
BLINK_UNPRESSED = 1000
};
#define HELLO_STR "Hello from TinyUSB\r\n"
-int main(void)
-{
+int main(void) {
board_init();
board_led_write(true);
uint32_t start_ms = 0;
bool led_state = false;
- while (1)
- {
+ while (1) {
uint32_t interval_ms = board_button_read() ? BLINK_PRESSED : BLINK_UNPRESSED;
// Blink and print every interval ms
- if ( !(board_millis() - start_ms < interval_ms) )
- {
+ if (!(board_millis() - start_ms < interval_ms)) {
board_uart_write(HELLO_STR, strlen(HELLO_STR));
start_ms = board_millis();
@@ -69,16 +61,14 @@ int main(void)
// echo
uint8_t ch;
- if ( board_uart_read(&ch, 1) > 0 )
- {
+ if (board_uart_read(&ch, 1) > 0) {
board_uart_write(&ch, 1);
}
}
}
#if CFG_TUSB_MCU == OPT_MCU_ESP32S2 || CFG_TUSB_MCU == OPT_MCU_ESP32S3
-void app_main(void)
-{
+void app_main(void) {
main();
}
#endif
diff --git a/hw/bsp/stm32u5/boards/stm32u5a5nucleo/board.h b/hw/bsp/stm32u5/boards/stm32u5a5nucleo/board.h
index 1cc61d6bb..062fb807f 100644
--- a/hw/bsp/stm32u5/boards/stm32u5a5nucleo/board.h
+++ b/hw/bsp/stm32u5/boards/stm32u5a5nucleo/board.h
@@ -43,12 +43,12 @@ extern "C"
#define BUTTON_STATE_ACTIVE 1
// UART Enable for STLink VCOM
-#define UART_DEV LPUART1
-#define UART_CLK_EN __HAL_RCC_LPUART1_CLK_ENABLE
-#define UART_GPIO_PORT GPIOG
-#define UART_GPIO_AF GPIO_AF8_LPUART1
-#define UART_TX_PIN GPIO_PIN_7
-#define UART_RX_PIN GPIO_PIN_8
+#define UART_DEV USART1
+#define UART_CLK_EN __HAL_RCC_USART1_CLK_ENABLE
+#define UART_GPIO_PORT GPIOA
+#define UART_GPIO_AF GPIO_AF7_USART1
+#define UART_TX_PIN GPIO_PIN_9
+#define UART_RX_PIN GPIO_PIN_10
//--------------------------------------------------------------------+
// RCC Clock
@@ -103,16 +103,24 @@ static void SystemClock_Config(void) {
// USB Clock
__HAL_RCC_SYSCFG_CLK_ENABLE();
- RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
- PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USBPHY;
- PeriphClkInit.UsbPhyClockSelection = RCC_USBPHYCLKSOURCE_HSE;
- if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) {
+ RCC_PeriphCLKInitTypeDef usb_clk_init = { 0};
+ usb_clk_init.PeriphClockSelection = RCC_PERIPHCLK_USBPHY;
+ usb_clk_init.UsbPhyClockSelection = RCC_USBPHYCLKSOURCE_HSE;
+ if (HAL_RCCEx_PeriphCLKConfig(&usb_clk_init) != HAL_OK) {
Error_Handler();
}
/** Set the OTG PHY reference clock selection
*/
HAL_SYSCFG_SetOTGPHYReferenceClockSelection(SYSCFG_OTG_HS_PHY_CLK_SELECT_1);
+
+ // USART clock
+ RCC_PeriphCLKInitTypeDef uart_clk_init = { 0};
+ uart_clk_init.PeriphClockSelection = RCC_PERIPHCLK_USART1;
+ uart_clk_init.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2;
+ if (HAL_RCCEx_PeriphCLKConfig(&uart_clk_init) != HAL_OK) {
+ Error_Handler();
+ }
}
static void SystemPower_Config(void) {
diff --git a/hw/bsp/stm32u5/family.c b/hw/bsp/stm32u5/family.c
index 94294b25d..dd22b7d45 100644
--- a/hw/bsp/stm32u5/family.c
+++ b/hw/bsp/stm32u5/family.c
@@ -106,7 +106,7 @@ void board_init(void) {
GPIO_InitStruct.Pin = UART_TX_PIN | UART_RX_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
GPIO_InitStruct.Alternate = UART_GPIO_AF;
HAL_GPIO_Init(UART_GPIO_PORT, &GPIO_InitStruct);
@@ -121,7 +121,6 @@ void board_init(void) {
UartHandle.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
UartHandle.Init.ClockPrescaler = UART_PRESCALER_DIV1;
UartHandle.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
-
HAL_UART_Init(&UartHandle);
/* Configure USB GPIOs */
@@ -196,8 +195,6 @@ void board_init(void) {
USB_OTG_HS->GCCFG |= USB_OTG_GCCFG_VBVALEXTOEN;
USB_OTG_HS->GCCFG |= USB_OTG_GCCFG_VBVALOVAL;
#endif // USB_OTG_FS
-
-
}
//--------------------------------------------------------------------+