summaryrefslogtreecommitdiff
path: root/bsp
diff options
context:
space:
mode:
authoryangpengya <[email protected]>2024-01-27 09:56:52 +0800
committerGitHub <[email protected]>2024-01-27 09:56:52 +0800
commitb3da34b78435857e7a71d8525e38ca0074ab90a8 (patch)
treece740ad6184638261b26add0ca1845986b0540bf /bsp
parent0c96b26c23ae61f590e4726edc55d4d37e2fbe82 (diff)
[bsp][stm32]完善stm32g0系列部分外设中断处理 (#8509)
Diffstat (limited to 'bsp')
-rw-r--r--bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/dma_config.h124
-rw-r--r--bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/spi_config.h9
-rw-r--r--bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/tim_config.h9
-rw-r--r--bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/uart_config.h38
-rw-r--r--bsp/stm32/libraries/HAL_Drivers/drivers/drv_rtc.c24
-rw-r--r--bsp/stm32/libraries/HAL_Drivers/drivers/drv_spi.c40
-rw-r--r--bsp/stm32/libraries/HAL_Drivers/drivers/drv_tim.c18
-rw-r--r--bsp/stm32/libraries/HAL_Drivers/drivers/drv_usart.c66
-rw-r--r--bsp/stm32/libraries/HAL_Drivers/drivers/drv_usart_v2.c72
-rw-r--r--bsp/stm32/stm32g071-st-nucleo/board/Kconfig46
10 files changed, 385 insertions, 61 deletions
diff --git a/bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/dma_config.h b/bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/dma_config.h
index 7cead5eb2e..1e9ec6d37b 100644
--- a/bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/dma_config.h
+++ b/bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/dma_config.h
@@ -18,72 +18,104 @@
extern "C" {
#endif
-/* DMA1 channel1 */
-#if defined(BSP_SPI1_RX_USING_DMA) && !defined(SPI1_RX_DMA_INSTANCE)
-#define SPI1_DMA_RX_IRQHandler DMA1_Channel1_IRQHandler
-#define SPI1_RX_DMA_RCC RCC_AHBENR_DMA1EN
-#define SPI1_RX_DMA_INSTANCE DMA1_Channel1
-#define SPI1_RX_DMA_REQUEST DMA_REQUEST_SPI1_RX
-#define SPI1_RX_DMA_IRQ DMA1_Channel1_IRQn
-#ifdef BSP_UART1_RX_USING_DMA
-#undef BSP_UART1_RX_USING_DMA
-#endif
-#ifdef BSP_SPI2_RX_USING_DMA
-#undef BSP_SPI2_RX_USING_DMA
-#endif
-#elif defined(BSP_UART1_RX_USING_DMA) && !defined(UART1_RX_DMA_INSTANCE)
-#define UART1_DMA_RX_IRQHandler DMA1_Channel1_IRQHandler
-#define UART1_RX_DMA_RCC RCC_AHBENR_DMA1EN
-#define UART1_RX_DMA_INSTANCE DMA1_Channel1
-#define UART1_RX_DMA_REQUEST DMA_REQUEST_USART1_RX
-#define UART1_RX_DMA_IRQ DMA1_Channel1_IRQn
-#ifdef BSP_SPI2_RX_USING_DMA
-#undef BSP_SPI2_RX_USING_DMA
+#if defined(STM32G030xx) || defined(STM32G031xx) || defined(STM32G041xx)
+#define DMA_Channelx_IRQn DMA1_Ch4_5_DMAMUX1_OVR_IRQn
+#define DMA_Channelx_IRQHandler DMA1_Ch4_5_DMAMUX1_OVR_IRQHandler
+#elif defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined(STM32G0C1xx)
+#define DMA_Channelx_IRQn DMA1_Ch4_7_DMA2_Ch1_5_DMAMUX1_OVR_IRQn
+#define DMA_Channelx_IRQHandler DMA1_Ch4_7_DMA2_Ch1_5_DMAMUX1_OVR_IRQHandler
+#else
+#define DMA_Channelx_IRQn DMA1_Ch4_7_DMAMUX1_OVR_IRQn
+#define DMA_Channelx_IRQHandler DMA1_Ch4_7_DMAMUX1_OVR_IRQHandler
#endif
+
+/* DMA1 channel2 */
+#if defined(BSP_SPI1_RX_USING_DMA) && !defined(SPI1_RX_DMA_INSTANCE)
+#define SPI1_DMA_RX_TX_IRQHandler DMA1_Channel2_3_IRQHandler
+#define SPI1_RX_DMA_RCC RCC_AHBENR_DMA1EN
+#define SPI1_RX_DMA_INSTANCE DMA1_Channel2
+#define SPI1_RX_DMA_REQUEST DMA_REQUEST_SPI1_RX
+#define SPI1_RX_DMA_IRQ DMA1_Channel2_3_IRQn
#elif defined(BSP_SPI2_RX_USING_DMA) && !defined(SPI2_RX_DMA_INSTANCE)
-#define SPI2_DMA_RX_IRQHandler DMA1_Channel1_IRQHandler
+#define SPI2_DMA_RX_TX_IRQHandler DMA1_Channel2_3_IRQHandler
#define SPI2_RX_DMA_RCC RCC_AHBENR_DMA1EN
-#define SPI2_RX_DMA_INSTANCE DMA1_Channel1
+#define SPI2_RX_DMA_INSTANCE DMA1_Channel2
#define SPI2_RX_DMA_REQUEST DMA_REQUEST_SPI2_RX
-#define SPI2_RX_DMA_IRQ DMA1_Channel1_IRQn
+#define SPI2_RX_DMA_IRQ DMA1_Channel2_3_IRQn
#endif
-/* DMA1 channle2-3 */
+/* DMA1 channle3 */
#if defined(BSP_SPI1_TX_USING_DMA) && !defined(SPI1_TX_DMA_INSTANCE)
-#define SPI1_DMA_TX_IRQHandler DMA1_Channel2_3_IRQHandler
+#define SPI1_DMA_RX_TX_IRQHandler DMA1_Channel2_3_IRQHandler
#define SPI1_TX_DMA_RCC RCC_AHBENR_DMA1EN
-#define SPI1_TX_DMA_INSTANCE DMA1_Channel2
+#define SPI1_TX_DMA_INSTANCE DMA1_Channel3
#define SPI1_TX_DMA_REQUEST DMA_REQUEST_SPI1_TX
#define SPI1_TX_DMA_IRQ DMA1_Channel2_3_IRQn
-#ifdef BSP_UART2_RX_USING_DMA
-#undef BSP_UART2_RX_USING_DMA
-#endif
-#ifdef BSP_SPI2_TX_USING_DMA
-#undef BSP_SPI2_TX_USING_DMA
+#elif defined(BSP_SPI2_TX_USING_DMA) && !defined(SPI2_TX_DMA_INSTANCE)
+#define SPI2_DMA_RX_TX_IRQHandler DMA1_Channel2_3_IRQHandler
+#define SPI2_TX_DMA_RCC RCC_AHBENR_DMA1EN
+#define SPI2_TX_DMA_INSTANCE DMA1_Channel3
+#define SPI2_TX_DMA_REQUEST DMA_REQUEST_SPI2_TX
+#define SPI2_TX_DMA_IRQ DMA1_Channel2_3_IRQn
#endif
-#elif defined(BSP_UART2_RX_USING_DMA) && !defined(UART2_RX_DMA_INSTANCE)
-#define UART2_DMA_RX_IRQHandler DMA1_Channel2_3_IRQHandler
-#define UART2_RX_DMA_RCC RCC_AHBENR_DMA1EN
-#define UART2_RX_DMA_INSTANCE DMA1_Channel2
-#define UART2_RX_DMA_REQUEST DMA_REQUEST_USART2_RX
-#define UART2_RX_DMA_IRQ DMA1_Channel2_3_IRQn
-#ifdef BSP_SPI2_TX_USING_DMA
-#undef BSP_SPI2_TX_USING_DMA
+
+/* DMA1 channle4 */
+#if defined(BSP_UART1_RX_USING_DMA) && !defined(UART1_RX_DMA_INSTANCE)
+#define UART_DMA_RX_TX_IRQHandler DMA_Channelx_IRQHandler
+#define UART1_RX_DMA_RCC RCC_AHBENR_DMA1EN
+#define UART1_RX_DMA_INSTANCE DMA1_Channel4
+#define UART1_RX_DMA_REQUEST DMA_REQUEST_USART1_RX
+#define UART1_RX_DMA_IRQ DMA_Channelx_IRQn
+#elif defined(BSP_SPI2_RX_USING_DMA) && !defined(SPI2_RX_DMA_INSTANCE)
+#define SPI2_DMA_RX_TX_IRQHandler DMA_Channelx_IRQHandler
+#define SPI2_RX_DMA_RCC RCC_AHBENR_DMA1EN
+#define SPI2_RX_DMA_INSTANCE DMA1_Channel4
+#define SPI2_RX_DMA_REQUEST DMA_REQUEST_SPI2_RX
+#define SPI2_RX_DMA_IRQ DMA_Channelx_IRQn
#endif
+
+/* DMA1 channle5 */
+#if defined(BSP_UART1_TX_USING_DMA) && !defined(UART1_TX_DMA_INSTANCE)
+#define UART_DMA_RX_TX_IRQHandler DMA_Channelx_IRQHandler
+#define UART1_TX_DMA_RCC RCC_AHBENR_DMA1EN
+#define UART1_TX_DMA_INSTANCE DMA1_Channel5
+#define UART1_TX_DMA_REQUEST DMA_REQUEST_USART1_TX
+#define UART1_TX_DMA_IRQ DMA_Channelx_IRQn
#elif defined(BSP_SPI2_TX_USING_DMA) && !defined(SPI2_TX_DMA_INSTANCE)
-#define SPI2_DMA_TX_IRQHandler DMA1_Channel2_3_IRQHandler
+#define SPI2_DMA_RX_TX_IRQHandler DMA_Channelx_IRQHandler
#define SPI2_TX_DMA_RCC RCC_AHBENR_DMA1EN
-#define SPI2_TX_DMA_INSTANCE DMA1_Channel2
+#define SPI2_TX_DMA_INSTANCE DMA1_Channel5
#define SPI2_TX_DMA_REQUEST DMA_REQUEST_SPI2_TX
-#define SPI2_TX_DMA_IRQ DMA1_Channel2_3_IRQn
+#define SPI2_TX_DMA_IRQ DMA_Channelx_IRQn
+#endif
+
+#if !(defined(STM32G030xx) || defined(STM32G031xx) || defined(STM32G041xx))
+/* DMA1 channle6 */
+#if defined(BSP_UART2_RX_USING_DMA) && !defined(UART2_RX_DMA_INSTANCE)
+#define UART_DMA_RX_TX_IRQHandler DMA_Channelx_IRQHandler
+#define UART2_RX_DMA_RCC RCC_AHBENR_DMA1EN
+#define UART2_RX_DMA_INSTANCE DMA1_Channel6
+#define UART2_RX_DMA_REQUEST DMA_REQUEST_USART2_RX
+#define UART2_RX_DMA_IRQ DMA_Channelx_IRQn
+#endif
+
+/* DMA1 channle7 */
+#if defined(BSP_UART2_TX_USING_DMA) && !defined(UART2_TX_DMA_INSTANCE)
+#define UART_DMA_RX_TX_IRQHandler DMA_Channelx_IRQHandler
+#define UART2_TX_DMA_RCC RCC_AHBENR_DMA1EN
+#define UART2_TX_DMA_INSTANCE DMA1_Channel7
+#define UART2_TX_DMA_REQUEST DMA_REQUEST_USART2_TX
+#define UART2_TX_DMA_IRQ DMA_Channelx_IRQn
+#endif
#endif
+/* DMA1 channle1 */
#if defined(BSP_LPUART1_RX_USING_DMA) && !defined(LPUART1_RX_DMA_INSTANCE)
-#define LPUART1_DMA_RX_IRQHandler DMA1_Ch4_7_DMAMUX1_OVR_IRQHandler
+#define LPUART1_DMA_RX_IRQHandler DMA1_Channel1_IRQHandler
#define LPUART1_RX_DMA_RCC RCC_AHBENR_DMA1EN
-#define LPUART1_RX_DMA_INSTANCE DMA1_Channel5
+#define LPUART1_RX_DMA_INSTANCE DMA1_Channel1
#define LPUART1_RX_DMA_REQUEST DMA_REQUEST_LPUART1_RX
-#define LPUART1_RX_DMA_IRQ DMA1_Ch4_7_DMAMUX1_OVR_IRQn
+#define LPUART1_RX_DMA_IRQ DMA1_Channel1_IRQn
#endif
#ifdef __cplusplus
diff --git a/bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/spi_config.h b/bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/spi_config.h
index 6661d51fa9..0591c87317 100644
--- a/bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/spi_config.h
+++ b/bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/spi_config.h
@@ -55,12 +55,21 @@ extern "C" {
#ifdef BSP_USING_SPI2
#ifndef SPI2_BUS_CONFIG
+#if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined(STM32G0C1xx)
+#define SPI2_BUS_CONFIG \
+ { \
+ .Instance = SPI2, \
+ .bus_name = "spi2", \
+ .irq_type = SPI2_3_IRQn, \
+ }
+#else
#define SPI2_BUS_CONFIG \
{ \
.Instance = SPI2, \
.bus_name = "spi2", \
.irq_type = SPI2_IRQn, \
}
+#endif /* defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined(STM32G0C1xx) */
#endif /* SPI2_BUS_CONFIG */
#endif /* BSP_USING_SPI2 */
diff --git a/bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/tim_config.h b/bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/tim_config.h
index 7d633c2a7f..4c3691353b 100644
--- a/bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/tim_config.h
+++ b/bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/tim_config.h
@@ -41,12 +41,21 @@ extern "C" {
#ifdef BSP_USING_TIM3
#ifndef TIM3_CONFIG
+#if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined(STM32G0C1xx)
+#define TIM3_CONFIG \
+ { \
+ .tim_handle.Instance = TIM3, \
+ .tim_irqn = TIM3_TIM4_IRQn, \
+ .name = "timer3", \
+ }
+#else
#define TIM3_CONFIG \
{ \
.tim_handle.Instance = TIM3, \
.tim_irqn = TIM3_IRQn, \
.name = "timer3", \
}
+#endif /* defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined(STM32G0C1xx) */
#endif /* TIM3_CONFIG */
#endif /* BSP_USING_TIM3 */
diff --git a/bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/uart_config.h b/bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/uart_config.h
index 816245e0fa..b8ed62c4c9 100644
--- a/bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/uart_config.h
+++ b/bsp/stm32/libraries/HAL_Drivers/drivers/config/g0/uart_config.h
@@ -19,13 +19,21 @@ extern "C" {
#if defined(BSP_USING_LPUART1)
#ifndef LPUART1_CONFIG
+#if defined(STM32G071xx) || defined(STM32G081xx)
#define LPUART1_CONFIG \
{ \
.name = "lpuart1", \
.Instance = LPUART1, \
.irq_type = USART3_4_LPUART1_IRQn, \
}
-#define LPUART1_IRQHandler USART3_4_LPUART1_IRQHandler
+#elif defined(STM32G0B1xx) || defined(STM32G0C1xx)
+#define LPUART1_CONFIG \
+ { \
+ .name = "lpuart1", \
+ .Instance = LPUART1, \
+ .irq_type = USART3_4_5_6_LPUART1_IRQn, \
+ }
+#endif /* defined(STM32G071xx) || defined(STM32G081xx) */
#endif /* LPUART1_CONFIG */
#if defined(BSP_LPUART1_RX_USING_DMA)
#ifndef LPUART1_DMA_CONFIG
@@ -53,7 +61,7 @@ extern "C" {
#if defined(BSP_UART1_RX_USING_DMA)
#ifndef UART1_DMA_RX_CONFIG
-#define UART1_DMA_RX_CONFIG \
+#define UART1_DMA_RX_CONFIG \
{ \
.Instance = UART1_RX_DMA_INSTANCE, \
.request = UART1_RX_DMA_REQUEST, \
@@ -63,6 +71,18 @@ extern "C" {
#endif /* UART1_DMA_RX_CONFIG */
#endif /* BSP_UART1_RX_USING_DMA */
+#if defined(BSP_UART1_TX_USING_DMA)
+#ifndef UART1_DMA_TX_CONFIG
+#define UART1_DMA_TX_CONFIG \
+ { \
+ .Instance = UART1_TX_DMA_INSTANCE, \
+ .request = UART1_TX_DMA_REQUEST, \
+ .dma_rcc = UART1_TX_DMA_RCC, \
+ .dma_irq = UART1_TX_DMA_IRQ, \
+ }
+#endif /* UART1_DMA_TX_CONFIG */
+#endif /* BSP_UART1_TX_USING_DMA */
+
#if defined(BSP_USING_UART2)
#ifndef UART2_CONFIG
#if defined(STM32G0B1xx) || defined(STM32G0C1xx)
@@ -85,7 +105,7 @@ extern "C" {
#if defined(BSP_UART2_RX_USING_DMA)
#ifndef UART2_DMA_RX_CONFIG
-#define UART2_DMA_RX_CONFIG \
+#define UART2_DMA_RX_CONFIG \
{ \
.Instance = UART2_RX_DMA_INSTANCE, \
.request = UART2_RX_DMA_REQUEST, \
@@ -95,6 +115,18 @@ extern "C" {
#endif /* UART2_DMA_RX_CONFIG */
#endif /* BSP_UART2_RX_USING_DMA */
+#if defined(BSP_UART2_TX_USING_DMA)
+#ifndef UART2_DMA_TX_CONFIG
+#define UART2_DMA_TX_CONFIG \
+ { \
+ .Instance = UART2_TX_DMA_INSTANCE, \
+ .request = UART2_TX_DMA_REQUEST, \
+ .dma_rcc = UART2_TX_DMA_RCC, \
+ .dma_irq = UART2_TX_DMA_IRQ, \
+ }
+#endif /* UART2_DMA_TX_CONFIG */
+#endif /* BSP_UART2_TX_USING_DMA */
+
#if defined(BSP_USING_UART3)
#ifndef UART3_CONFIG
#if defined(STM32G0B1xx) || defined(STM32G0C1xx)
diff --git a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_rtc.c b/bsp/stm32/libraries/HAL_Drivers/drivers/drv_rtc.c
index 3ff9ae8329..4f530a12e6 100644
--- a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_rtc.c
+++ b/bsp/stm32/libraries/HAL_Drivers/drivers/drv_rtc.c
@@ -157,14 +157,16 @@ static rt_err_t rt_rtc_config(void)
HAL_PWR_EnableBkUpAccess();
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
-#ifdef BSP_RTC_USING_LSI
+#if defined(BSP_RTC_USING_LSI)
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;
-#else
+#elif defined(BSP_RTC_USING_LSE)
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
+#else
+ PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_HSE_DIV32;
#endif
HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);
-#if defined(SOC_SERIES_STM32WL)
+#if defined(SOC_SERIES_STM32WL) || defined(SOC_SERIES_STM32G0)
__HAL_RCC_RTCAPB_CLK_ENABLE();
#endif
@@ -194,7 +196,9 @@ static rt_err_t rt_rtc_config(void)
RTC_Handler.Init.OutPut = RTC_OUTPUT_DISABLE;
RTC_Handler.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
RTC_Handler.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
-#elif defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) || defined(SOC_SERIES_STM32L0) || defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G4) || defined(SOC_SERIES_STM32WL) || defined(SOC_SERIES_STM32H7) || defined (SOC_SERIES_STM32WB)
+#elif defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) || defined(SOC_SERIES_STM32L0) \
+ || defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32WL) || defined(SOC_SERIES_STM32H7) || defined (SOC_SERIES_STM32WB) \
+ || defined(SOC_SERIES_STM32G0)
/* set the frequency division */
#ifdef BSP_RTC_USING_LSI
@@ -237,26 +241,24 @@ static rt_err_t stm32_rtc_init(void)
#endif
#endif
+#if defined(BSP_RTC_USING_LSI) || defined(BSP_RTC_USING_LSE)
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
#ifdef BSP_RTC_USING_LSI
#ifdef SOC_SERIES_STM32WB
-RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI1;
- RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
- RCC_OscInitStruct.LSEState = RCC_LSE_OFF;
- RCC_OscInitStruct.LSIState = RCC_LSI_ON;
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI1;
#else
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI;
- RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
+#endif
RCC_OscInitStruct.LSEState = RCC_LSE_OFF;
RCC_OscInitStruct.LSIState = RCC_LSI_ON;
-#endif
#else
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE;
- RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
RCC_OscInitStruct.LSEState = RCC_LSE_ON;
RCC_OscInitStruct.LSIState = RCC_LSI_OFF;
#endif
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
HAL_RCC_OscConfig(&RCC_OscInitStruct);
+#endif
if (rt_rtc_config() != RT_EOK)
{
diff --git a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_spi.c b/bsp/stm32/libraries/HAL_Drivers/drivers/drv_spi.c
index 66fede75f5..ebfebbba42 100644
--- a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_spi.c
+++ b/bsp/stm32/libraries/HAL_Drivers/drivers/drv_spi.c
@@ -1039,7 +1039,45 @@ void SPI2_DMA_RX_TX_IRQHandler(void)
SPI2_DMA_RX_IRQHandler();
#endif
}
-#endif /* SOC_SERIES_STM32F0 */
+#elif defined(SOC_SERIES_STM32G0)
+#if defined(BSP_SPI1_TX_USING_DMA) || defined(BSP_SPI1_RX_USING_DMA)
+void SPI1_DMA_RX_TX_IRQHandler(void)
+{
+#if defined(BSP_SPI1_TX_USING_DMA)
+ SPI1_DMA_TX_IRQHandler();
+#endif
+
+#if defined(BSP_SPI1_RX_USING_DMA)
+ SPI1_DMA_RX_IRQHandler();
+#endif
+}
+#endif /* defined(BSP_SPI1_TX_USING_DMA) || defined(BSP_SPI1_RX_USING_DMA) */
+#if defined(BSP_SPI2_TX_USING_DMA) || defined(BSP_SPI2_RX_USING_DMA)
+void SPI2_DMA_RX_TX_IRQHandler(void)
+{
+#if defined(BSP_SPI2_TX_USING_DMA)
+ SPI2_DMA_TX_IRQHandler();
+#endif
+
+#if defined(BSP_SPI2_RX_USING_DMA)
+ SPI2_DMA_RX_IRQHandler();
+#endif
+}
+#endif /* defined(BSP_SPI1_TX_USING_DMA) || defined(BSP_SPI1_RX_USING_DMA) */
+#if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined(STM32G0C1xx)
+#if defined(BSP_USING_SPI2) || defined(BSP_USING_SPI3)
+void SPI2_3_IRQHandler(void)
+{
+#if defined(BSP_SPI2_TX_USING_DMA) || defined(BSP_SPI2_RX_USING_DMA)
+ SPI2_IRQHandler();
+#endif
+#if defined(BSP_SPI3_TX_USING_DMA) || defined(BSP_SPI3_RX_USING_DMA)
+ SPI3_IRQHandler();
+#endif
+}
+#endif /* defined(BSP_USING_SPI2) || defined(BSP_USING_SPI3) */
+#endif /* defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined(STM32G0C1xx) */
+#endif /* defined(SOC_SERIES_STM32F0) */
int rt_hw_spi_init(void)
{
diff --git a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_tim.c b/bsp/stm32/libraries/HAL_Drivers/drivers/drv_tim.c
index d61fb2751e..5ed97af7f3 100644
--- a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_tim.c
+++ b/bsp/stm32/libraries/HAL_Drivers/drivers/drv_tim.c
@@ -623,6 +623,23 @@ void TIM2_IRQHandler(void)
rt_interrupt_leave();
}
#endif
+#if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined(STM32G0C1xx)
+#if defined(BSP_USING_TIM3) || defined(BSP_USING_TIM4)
+void TIM3_TIM4_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+#ifdef BSP_USING_TIM3
+ HAL_TIM_IRQHandler(&stm32_hwtimer_obj[TIM3_INDEX].tim_handle);
+#endif
+#ifdef BSP_USING_TIM4
+ HAL_TIM_IRQHandler(&stm32_hwtimer_obj[TIM4_INDEX].tim_handle);
+#endif
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+#endif
+#else
#ifdef BSP_USING_TIM3
void TIM3_IRQHandler(void)
{
@@ -643,6 +660,7 @@ void TIM4_IRQHandler(void)
rt_interrupt_leave();
}
#endif
+#endif
#ifdef BSP_USING_TIM5
void TIM5_IRQHandler(void)
{
diff --git a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_usart.c b/bsp/stm32/libraries/HAL_Drivers/drivers/drv_usart.c
index 4c85e2afb2..7e73a5739f 100644
--- a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_usart.c
+++ b/bsp/stm32/libraries/HAL_Drivers/drivers/drv_usart.c
@@ -827,6 +827,63 @@ void LPUART1_DMA_RX_IRQHandler(void)
#endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_LPUART1_RX_USING_DMA) */
#endif /* BSP_USING_LPUART1*/
+#if defined(SOC_SERIES_STM32G0)
+#if defined(BSP_USING_UART2)
+#if defined(STM32G0B1xx) || defined(STM32G0C1xx)
+void USART2_LPUART2_IRQHandler(void)
+{
+ USART2_IRQHandler();
+}
+#endif /* defined(STM32G0B1xx) || defined(STM32G0C1xx) */
+#endif /* defined(BSP_USING_UART2) */
+#if defined(BSP_USING_UART3) || defined(BSP_USING_UART4) || defined(BSP_USING_UART5) || defined(BSP_USING_UART6) \
+ || defined(BSP_USING_LPUART1)
+#if defined(STM32G070xx)
+void USART3_4_IRQHandler(void)
+#elif defined(STM32G071xx) || defined(STM32G081xx)
+void USART3_4_LPUART1_IRQHandler(void)
+#elif defined(STM32G0B0xx)
+void USART3_4_5_6_IRQHandler(void)
+#elif defined(STM32G0B1xx) || defined(STM32G0C1xx)
+void USART3_4_5_6_LPUART1_IRQHandler(void)
+#endif /* defined(STM32G070xx) */
+{
+#if defined(BSP_USING_UART3)
+ USART3_IRQHandler();
+#endif
+#if defined(BSP_USING_UART4)
+ UART4_IRQHandler();
+#endif
+#if defined(BSP_USING_UART5)
+ UART5_IRQHandler();
+#endif
+#if defined(BSP_USING_UART6)
+ USART6_IRQHandler();
+#endif
+#if defined(BSP_USING_LPUART1)
+ LPUART1_IRQHandler();
+#endif
+}
+#endif /* defined(BSP_USING_UART3) || defined(BSP_USING_UART4) || defined(BSP_USING_UART5) || defined(BSP_USING_UART6) */
+#if defined(RT_SERIAL_USING_DMA)
+void UART_DMA_RX_TX_IRQHandler(void)
+{
+#if defined(BSP_USING_UART1) && defined(BSP_UART1_TX_USING_DMA)
+ UART1_DMA_TX_IRQHandler();
+#endif
+#if defined(BSP_USING_UART1) && defined(BSP_UART1_RX_USING_DMA)
+ UART1_DMA_RX_IRQHandler();
+#endif
+#if defined(BSP_USING_UART2) && defined(BSP_UART2_TX_USING_DMA)
+ UART2_DMA_TX_IRQHandler();
+#endif
+#if defined(BSP_USING_UART2) && defined(BSP_UART2_RX_USING_DMA)
+ UART2_DMA_RX_IRQHandler();
+#endif
+}
+#endif /* defined(RT_SERIAL_USING_DMA) */
+#endif /* defined(SOC_SERIES_STM32G0) */
+
static void stm32_uart_get_dma_config(void)
{
#ifdef BSP_USING_UART1
@@ -940,6 +997,15 @@ static void stm32_uart_get_dma_config(void)
uart_config[UART8_INDEX].dma_tx = &uart8_dma_tx;
#endif
#endif
+
+#ifdef BSP_USING_LPUART1
+ uart_obj[LPUART1_INDEX].uart_dma_flag = 0;
+#ifdef BSP_LPUART1_RX_USING_DMA
+ uart_obj[LPUART1_INDEX].uart_dma_flag |= RT_DEVICE_FLAG_DMA_RX;
+ static struct dma_config lpuart1_dma_rx = LPUART1_DMA_CONFIG;
+ uart_config[LPUART1_INDEX].dma_rx = &lpuart1_dma_rx;
+#endif
+#endif
}
#ifdef RT_SERIAL_USING_DMA
diff --git a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_usart_v2.c b/bsp/stm32/libraries/HAL_Drivers/drivers/drv_usart_v2.c
index 85a42a29f0..225180d229 100644
--- a/bsp/stm32/libraries/HAL_Drivers/drivers/drv_usart_v2.c
+++ b/bsp/stm32/libraries/HAL_Drivers/drivers/drv_usart_v2.c
@@ -862,6 +862,64 @@ void LPUART1_DMA_RX_IRQHandler(void)
}
#endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_LPUART1_RX_USING_DMA) */
#endif /* BSP_USING_LPUART1*/
+
+#if defined(SOC_SERIES_STM32G0)
+#if defined(BSP_USING_UART2)
+#if defined(STM32G0B1xx) || defined(STM32G0C1xx)
+void USART2_LPUART2_IRQHandler(void)
+{
+ USART2_IRQHandler();
+}
+#endif /* defined(STM32G0B1xx) || defined(STM32G0C1xx) */
+#endif /* defined(BSP_USING_UART2) */
+#if defined(BSP_USING_UART3) || defined(BSP_USING_UART4) || defined(BSP_USING_UART5) || defined(BSP_USING_UART6) \
+ || defined(BSP_USING_LPUART1)
+#if defined(STM32G070xx)
+void USART3_4_IRQHandler(void)
+#elif defined(STM32G071xx) || defined(STM32G081xx)
+void USART3_4_LPUART1_IRQHandler(void)
+#elif defined(STM32G0B0xx)
+void USART3_4_5_6_IRQHandler(void)
+#elif defined(STM32G0B1xx) || defined(STM32G0C1xx)
+void USART3_4_5_6_LPUART1_IRQHandler(void)
+#endif /* defined(STM32G070xx) */
+{
+#if defined(BSP_USING_UART3)
+ USART3_IRQHandler();
+#endif
+#if defined(BSP_USING_UART4)
+ UART4_IRQHandler();
+#endif
+#if defined(BSP_USING_UART5)
+ UART5_IRQHandler();
+#endif
+#if defined(BSP_USING_UART6)
+ USART6_IRQHandler();
+#endif
+#if defined(BSP_USING_LPUART1)
+ LPUART1_IRQHandler();
+#endif
+}
+#endif /* defined(BSP_USING_UART3) || defined(BSP_USING_UART4) || defined(BSP_USING_UART5) || defined(BSP_USING_UART6) */
+#if defined(RT_SERIAL_USING_DMA)
+void UART_DMA_RX_TX_IRQHandler(void)
+{
+#if defined(BSP_USING_UART1) && defined(BSP_UART1_TX_USING_DMA)
+ UART1_DMA_TX_IRQHandler();
+#endif
+#if defined(BSP_USING_UART1) && defined(BSP_UART1_RX_USING_DMA)
+ UART1_DMA_RX_IRQHandler();
+#endif
+#if defined(BSP_USING_UART2) && defined(BSP_UART2_TX_USING_DMA)
+ UART2_DMA_TX_IRQHandler();
+#endif
+#if defined(BSP_USING_UART2) && defined(BSP_UART2_RX_USING_DMA)
+ UART2_DMA_RX_IRQHandler();
+#endif
+}
+#endif /* defined(RT_SERIAL_USING_DMA) */
+#endif /* defined(SOC_SERIES_STM32G0) */
+
static void stm32_uart_get_config(void)
{
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT;
@@ -1024,6 +1082,20 @@ static void stm32_uart_get_config(void)
uart_config[UART8_INDEX].dma_tx = &uart8_dma_tx;
#endif
#endif
+
+#ifdef BSP_USING_LPUART1
+ uart_obj[LPUART1_INDEX].serial.config = config;
+ uart_obj[LPUART1_INDEX].uart_dma_flag = 0;
+
+ uart_obj[LPUART1_INDEX].serial.config.rx_bufsz = BSP_LPUART1_RX_BUFSIZE;
+ uart_obj[LPUART1_INDEX].serial.config.tx_bufsz = BSP_LPUART1_TX_BUFSIZE;
+
+#ifdef BSP_LPUART1_RX_USING_DMA
+ uart_obj[LPUART1_INDEX].uart_dma_flag |= RT_DEVICE_FLAG_DMA_RX;
+ static struct dma_config lpuart1_dma_rx = LPUART1_DMA_CONFIG;
+ uart_config[LPUART1_INDEX].dma_rx = &lpuart1_dma_rx;
+#endif
+#endif
}
#ifdef RT_SERIAL_USING_DMA
diff --git a/bsp/stm32/stm32g071-st-nucleo/board/Kconfig b/bsp/stm32/stm32g071-st-nucleo/board/Kconfig
index ce1783adfd..cc0f186094 100644
--- a/bsp/stm32/stm32g071-st-nucleo/board/Kconfig
+++ b/bsp/stm32/stm32g071-st-nucleo/board/Kconfig
@@ -30,6 +30,18 @@ menu "On-chip Peripheral Drivers"
depends on BSP_USING_LPUART1 && RT_SERIAL_USING_DMA
default n
+ config BSP_LPUART1_RX_BUFSIZE
+ int "Set LPUART1 RX buffer size"
+ range 64 65535
+ depends on RT_USING_SERIAL_V2
+ default 256
+
+ config BSP_LPUART1_TX_BUFSIZE
+ int "Set LPUART1 TX buffer size"
+ range 0 65535
+ depends on RT_USING_SERIAL_V2
+ default 256
+
config BSP_USING_UART1
bool "Enable UART1"
default n
@@ -39,6 +51,23 @@ menu "On-chip Peripheral Drivers"
depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA
default n
+ config BSP_UART1_TX_USING_DMA
+ bool "Enable UART1 TX DMA"
+ depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA
+ default n
+
+ config BSP_UART1_RX_BUFSIZE
+ int "Set UART1 RX buffer size"
+ range 64 65535
+ depends on RT_USING_SERIAL_V2
+ default 256
+
+ config BSP_UART1_TX_BUFSIZE
+ int "Set UART1 TX buffer size"
+ range 0 65535
+ depends on RT_USING_SERIAL_V2
+ default 256
+
config BSP_USING_UART2
bool "Enable UART2"
default n
@@ -47,6 +76,23 @@ menu "On-chip Peripheral Drivers"
bool "Enable UART2 RX DMA"
depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA
default n
+
+ config BSP_UART2_TX_USING_DMA
+ bool "Enable UART2 TX DMA"
+ depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA
+ default n
+
+ config BSP_UART2_RX_BUFSIZE
+ int "Set UART2 RX buffer size"
+ range 64 65535
+ depends on RT_USING_SERIAL_V2
+ default 256
+
+ config BSP_UART2_TX_BUFSIZE
+ int "Set UART2 TX buffer size"
+ range 0 65535
+ depends on RT_USING_SERIAL_V2
+ default 256
endif
menuconfig BSP_USING_TIM