summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhathach <[email protected]>2019-11-09 00:08:32 +0700
committerhathach <[email protected]>2019-11-09 00:08:32 +0700
commit943b7467d81889a7340e0d52d0ffe1cf1d9f7eec (patch)
tree63e4c2506484da8e32876aa9696bd34cb201f29a
parent3c49ff153e0f5219db9ad93f46672812676b965e (diff)
correct LED, button and uart for feather_stm32f405
-rw-r--r--hw/bsp/feather_stm32f405/board.mk7
-rw-r--r--hw/bsp/feather_stm32f405/feather_stm32f405.c39
-rw-r--r--hw/bsp/feather_stm32f405/stm32f4xx_hal_conf.h4
-rw-r--r--hw/bsp/stm32f072disco/stm32f072disco.c2
4 files changed, 39 insertions, 13 deletions
diff --git a/hw/bsp/feather_stm32f405/board.mk b/hw/bsp/feather_stm32f405/board.mk
index ef9777976..14595e83e 100644
--- a/hw/bsp/feather_stm32f405/board.mk
+++ b/hw/bsp/feather_stm32f405/board.mk
@@ -20,7 +20,8 @@ SRC_C += \
$(ST_HAL_DRIVER)/Src/stm32f4xx_hal.c \
$(ST_HAL_DRIVER)/Src/stm32f4xx_hal_cortex.c \
$(ST_HAL_DRIVER)/Src/stm32f4xx_hal_rcc.c \
- $(ST_HAL_DRIVER)/Src/stm32f4xx_hal_gpio.c
+ $(ST_HAL_DRIVER)/Src/stm32f4xx_hal_gpio.c \
+ $(ST_HAL_DRIVER)/Src/stm32f4xx_hal_uart.c
SRC_S += \
$(ST_CMSIS)/Source/Templates/gcc/startup_stm32f405xx.s
@@ -46,5 +47,5 @@ JLINK_IF = swd
STM32Prog = STM32_Programmer_CLI
# flash target using on-board stlink
-flash: $(BUILD)/$(BOARD)-firmware.elf
- $(STM32Prog) --connect port=swd --write $< --go
+flash: $(BUILD)/$(BOARD)-firmware.bin
+ dfu-util -R -a 0 --dfuse-address 0x08000000 -D $<
diff --git a/hw/bsp/feather_stm32f405/feather_stm32f405.c b/hw/bsp/feather_stm32f405/feather_stm32f405.c
index 0bc40ece0..aec779ea3 100644
--- a/hw/bsp/feather_stm32f405/feather_stm32f405.c
+++ b/hw/bsp/feather_stm32f405/feather_stm32f405.c
@@ -31,7 +31,7 @@
// Blue LED is chosen because the other LEDs are connected to ST-LINK lines.
#define LED_PORT GPIOC
-#define LED_PIN GPIO_PIN_4
+#define LED_PIN GPIO_PIN_1
#define LED_STATE_ON 1
// Pin D5
@@ -39,6 +39,24 @@
#define BUTTON_PIN GPIO_PIN_7
#define BUTTON_STATE_ACTIVE 0
+#define UARTx USART3
+#define UART_GPIO_PORT GPIOB
+#define UART_GPIO_AF GPIO_AF7_USART3
+#define UART_TX_PIN GPIO_PIN_10
+#define UART_RX_PIN GPIO_PIN_11
+
+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_GPIOC_CLK_ENABLE(); // LED, Button
+ __HAL_RCC_GPIOB_CLK_ENABLE(); // Uart tx, rx
+ __HAL_RCC_USART3_CLK_ENABLE(); // Uart module
+}
+
/**
* @brief System Clock Configuration
* The system Clock is configured as follow :
@@ -104,14 +122,13 @@ void board_init(void)
#endif
SystemClock_Config();
-
- // Notify runtime of frequency change.
SystemCoreClockUpdate();
+ all_rcc_clk_enable();
+
GPIO_InitTypeDef GPIO_InitStruct;
// LED
- __HAL_RCC_GPIOC_CLK_ENABLE();
GPIO_InitStruct.Pin = LED_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
@@ -121,19 +138,25 @@ void board_init(void)
board_led_write(false);
// Button
- //__HAL_RCC_GPIOC_CLK_ENABLE();
GPIO_InitStruct.Pin = BUTTON_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
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_HIGH;
+ GPIO_InitStruct.Alternate = UART_GPIO_AF;
+ HAL_GPIO_Init(UART_GPIO_PORT, &GPIO_InitStruct);
+
// Enable USB OTG clock
__HAL_RCC_USB_OTG_FS_CLK_ENABLE();
// USB Pin Init
// PA9- VUSB, PA10- ID, PA11- DM, PA12- DP
- __HAL_RCC_GPIOA_CLK_ENABLE();
/* Configure DM DP Pins */
GPIO_InitStruct.Pin = GPIO_PIN_11 | GPIO_PIN_12;
@@ -180,8 +203,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;
}
#if CFG_TUSB_OS == OPT_OS_NONE
diff --git a/hw/bsp/feather_stm32f405/stm32f4xx_hal_conf.h b/hw/bsp/feather_stm32f405/stm32f4xx_hal_conf.h
index dbef20e0a..b892df3b6 100644
--- a/hw/bsp/feather_stm32f405/stm32f4xx_hal_conf.h
+++ b/hw/bsp/feather_stm32f405/stm32f4xx_hal_conf.h
@@ -75,7 +75,7 @@
/* #define HAL_MMC_MODULE_ENABLED */
/* #define HAL_SPI_MODULE_ENABLED */
/* #define HAL_TIM_MODULE_ENABLED */
-/* #define HAL_UART_MODULE_ENABLED */
+#define HAL_UART_MODULE_ENABLED
/* #define HAL_USART_MODULE_ENABLED */
/* #define HAL_IRDA_MODULE_ENABLED */
/* #define HAL_SMARTCARD_MODULE_ENABLED */
@@ -199,6 +199,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 */
/* ########################## Assert Selection ############################## */
diff --git a/hw/bsp/stm32f072disco/stm32f072disco.c b/hw/bsp/stm32f072disco/stm32f072disco.c
index aac1c5534..e26c5628a 100644
--- a/hw/bsp/stm32f072disco/stm32f072disco.c
+++ b/hw/bsp/stm32f072disco/stm32f072disco.c
@@ -43,9 +43,9 @@
#define UART_TX_PIN GPIO_PIN_9
#define UART_RX_PIN GPIO_PIN_10
-
UART_HandleTypeDef UartHandle;
+
// enable all LED, Button, Uart, USB clock
static void all_rcc_clk_enable(void)
{