Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion bsp/stm32/libraries/HAL_Drivers/drivers/SConscript
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ import os
cwd = GetCurrentDir()
group = []
src = []
# DMA-capable BSPs are expected to enable HAL_DMA_MODULE_ENABLED in the
# STM32 HAL configuration, so keep the common DMA helper in the build.
src += ['drv_dma.c']
path = [cwd]

if GetDepend(['RT_USING_PIN']):
Expand Down Expand Up @@ -35,7 +38,7 @@ if GetDepend('RT_USING_SOFT_SPI'):
if GetDepend(['RT_USING_I2C', 'RT_USING_I2C_BITOPS']):
if GetDepend('BSP_USING_I2C1') or GetDepend('BSP_USING_I2C2') or GetDepend('BSP_USING_I2C3') or GetDepend('BSP_USING_I2C4'):
src += ['drv_soft_i2c.c']

if GetDepend(['RT_USING_I2C']):
if GetDepend('BSP_USING_HARD_I2C1') or GetDepend('BSP_USING_HARD_I2C2') or GetDepend('BSP_USING_HARD_I2C3') or GetDepend('BSP_USING_HARD_I2C4'):
src += ['drv_hard_i2c.c']
Expand Down
129 changes: 95 additions & 34 deletions bsp/stm32/libraries/HAL_Drivers/drivers/config/f0/spi_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
* Date Author Notes
* 2018-11-06 SummerGift first version
* 2019-01-05 SummerGift modify DMA support
* 2026-04-13 wdfk-prog Unify DMA config descriptors
*/

#ifndef __SPI_CONFIG_H__
Expand All @@ -20,67 +21,127 @@ extern "C" {

#ifdef BSP_USING_SPI1
#ifndef SPI1_BUS_CONFIG
#define SPI1_BUS_CONFIG \
{ \
.Instance = SPI1, \
.bus_name = "spi1", \
.irq_type = SPI1_IRQn, \
#define SPI1_BUS_CONFIG \
{ \
.Instance = SPI1, \
.bus_name = "spi1", \
.irq_type = SPI1_IRQn, \
}
#endif /* SPI1_BUS_CONFIG */
#endif /* BSP_USING_SPI1 */

#ifdef BSP_SPI1_TX_USING_DMA
#ifndef SPI1_TX_DMA_PRIORITY
#define SPI1_TX_DMA_PRIORITY DMA_PRIORITY_LOW
#endif /* SPI1_TX_DMA_PRIORITY */

#ifndef SPI1_TX_DMA_PREEMPT_PRIORITY
#define SPI1_TX_DMA_PREEMPT_PRIORITY 1
#endif /* SPI1_TX_DMA_PREEMPT_PRIORITY */

#ifndef SPI1_TX_DMA_SUB_PRIORITY
#define SPI1_TX_DMA_SUB_PRIORITY 0
#endif /* SPI1_TX_DMA_SUB_PRIORITY */
#ifndef SPI1_TX_DMA_CONFIG
#define SPI1_TX_DMA_CONFIG \
{ \
.dma_rcc = SPI1_TX_DMA_RCC, \
.Instance = SPI1_TX_DMA_INSTANCE, \
.dma_irq = SPI1_TX_DMA_IRQ, \
}
#define SPI1_TX_DMA_CONFIG \
STM32_DMA_TX_BYTE_CONFIG_INIT_EX( \
SPI1_TX_DMA_INSTANCE, \
SPI1_TX_DMA_RCC, \
SPI1_TX_DMA_IRQ, \
SPI1_TX_DMA_CHANNEL, \
0U, \
SPI1_TX_DMA_PRIORITY, \
SPI1_TX_DMA_PREEMPT_PRIORITY, \
SPI1_TX_DMA_SUB_PRIORITY)
#endif /* SPI1_TX_DMA_CONFIG */
#endif /* BSP_SPI1_TX_USING_DMA */

#ifdef BSP_SPI1_RX_USING_DMA
#ifndef SPI1_RX_DMA_PRIORITY
#define SPI1_RX_DMA_PRIORITY DMA_PRIORITY_HIGH
#endif /* SPI1_RX_DMA_PRIORITY */

#ifndef SPI1_RX_DMA_PREEMPT_PRIORITY
#define SPI1_RX_DMA_PREEMPT_PRIORITY 0
#endif /* SPI1_RX_DMA_PREEMPT_PRIORITY */

#ifndef SPI1_RX_DMA_SUB_PRIORITY
#define SPI1_RX_DMA_SUB_PRIORITY 0
#endif /* SPI1_RX_DMA_SUB_PRIORITY */
#ifndef SPI1_RX_DMA_CONFIG
#define SPI1_RX_DMA_CONFIG \
{ \
.dma_rcc = SPI1_RX_DMA_RCC, \
.Instance = SPI1_RX_DMA_INSTANCE, \
.dma_irq = SPI1_RX_DMA_IRQ, \
}
#define SPI1_RX_DMA_CONFIG \
STM32_DMA_RX_BYTE_CONFIG_INIT_EX( \
SPI1_RX_DMA_INSTANCE, \
SPI1_RX_DMA_RCC, \
SPI1_RX_DMA_IRQ, \
SPI1_RX_DMA_CHANNEL, \
0U, \
SPI1_RX_DMA_PRIORITY, \
SPI1_RX_DMA_PREEMPT_PRIORITY, \
SPI1_RX_DMA_SUB_PRIORITY)
#endif /* SPI1_RX_DMA_CONFIG */
#endif /* BSP_SPI1_RX_USING_DMA */

#ifdef BSP_USING_SPI2
#ifndef SPI2_BUS_CONFIG
#define SPI2_BUS_CONFIG \
{ \
.Instance = SPI2, \
.bus_name = "spi2", \
.irq_type = SPI2_IRQn, \
#define SPI2_BUS_CONFIG \
{ \
.Instance = SPI2, \
.bus_name = "spi2", \
.irq_type = SPI2_IRQn, \
}
#endif /* SPI2_BUS_CONFIG */
#endif /* BSP_USING_SPI2 */

#ifdef BSP_SPI2_TX_USING_DMA
#ifndef SPI2_TX_DMA_PRIORITY
#define SPI2_TX_DMA_PRIORITY DMA_PRIORITY_LOW
#endif /* SPI2_TX_DMA_PRIORITY */

#ifndef SPI2_TX_DMA_PREEMPT_PRIORITY
#define SPI2_TX_DMA_PREEMPT_PRIORITY 1
#endif /* SPI2_TX_DMA_PREEMPT_PRIORITY */

#ifndef SPI2_TX_DMA_SUB_PRIORITY
#define SPI2_TX_DMA_SUB_PRIORITY 0
#endif /* SPI2_TX_DMA_SUB_PRIORITY */
#ifndef SPI2_TX_DMA_CONFIG
#define SPI2_TX_DMA_CONFIG \
{ \
.dma_rcc = SPI2_TX_DMA_RCC, \
.Instance = SPI2_TX_DMA_INSTANCE, \
.dma_irq = SPI2_TX_DMA_IRQ, \
}
#define SPI2_TX_DMA_CONFIG \
STM32_DMA_TX_BYTE_CONFIG_INIT_EX( \
SPI2_TX_DMA_INSTANCE, \
SPI2_TX_DMA_RCC, \
SPI2_TX_DMA_IRQ, \
SPI2_TX_DMA_CHANNEL, \
0U, \
SPI2_TX_DMA_PRIORITY, \
SPI2_TX_DMA_PREEMPT_PRIORITY, \
SPI2_TX_DMA_SUB_PRIORITY)
#endif /* SPI2_TX_DMA_CONFIG */
#endif /* BSP_SPI2_TX_USING_DMA */

#ifdef BSP_SPI2_RX_USING_DMA
#ifndef SPI2_RX_DMA_PRIORITY
#define SPI2_RX_DMA_PRIORITY DMA_PRIORITY_HIGH
#endif /* SPI2_RX_DMA_PRIORITY */

#ifndef SPI2_RX_DMA_PREEMPT_PRIORITY
#define SPI2_RX_DMA_PREEMPT_PRIORITY 0
#endif /* SPI2_RX_DMA_PREEMPT_PRIORITY */

#ifndef SPI2_RX_DMA_SUB_PRIORITY
#define SPI2_RX_DMA_SUB_PRIORITY 0
#endif /* SPI2_RX_DMA_SUB_PRIORITY */
#ifndef SPI2_RX_DMA_CONFIG
#define SPI2_RX_DMA_CONFIG \
{ \
.dma_rcc = SPI2_RX_DMA_RCC, \
.Instance = SPI2_RX_DMA_INSTANCE, \
.dma_irq = SPI2_RX_DMA_IRQ, \
}
#define SPI2_RX_DMA_CONFIG \
STM32_DMA_RX_BYTE_CONFIG_INIT_EX( \
SPI2_RX_DMA_INSTANCE, \
SPI2_RX_DMA_RCC, \
SPI2_RX_DMA_IRQ, \
SPI2_RX_DMA_CHANNEL, \
0U, \
SPI2_RX_DMA_PRIORITY, \
SPI2_RX_DMA_PREEMPT_PRIORITY, \
SPI2_RX_DMA_SUB_PRIORITY)
#endif /* SPI2_RX_DMA_CONFIG */
#endif /* BSP_SPI2_RX_USING_DMA */

Expand Down
77 changes: 55 additions & 22 deletions bsp/stm32/libraries/HAL_Drivers/drivers/config/f0/uart_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
* Change Logs:
* Date Author Notes
* 2018-10-30 zylx first version
* 2026-04-13 wdfk-prog Unify DMA config descriptors
*/

#ifndef __UART_CONFIG_H__
Expand All @@ -19,45 +20,77 @@ extern "C" {

#if defined(BSP_USING_UART1)
#ifndef UART1_CONFIG
#define UART1_CONFIG \
{ \
.name = "uart1", \
.Instance = USART1, \
.irq_type = USART1_IRQn, \
#define UART1_CONFIG \
{ \
.name = "uart1", \
.Instance = USART1, \
.irq_type = USART1_IRQn, \
}
#endif /* UART1_CONFIG */
#endif /* BSP_USING_UART1 */

#if defined(BSP_UART1_RX_USING_DMA)
#ifndef UART1_RX_DMA_PRIORITY
#define UART1_RX_DMA_PRIORITY DMA_PRIORITY_MEDIUM
#endif /* UART1_RX_DMA_PRIORITY */

#ifndef UART1_RX_DMA_PREEMPT_PRIORITY
#define UART1_RX_DMA_PREEMPT_PRIORITY 0
#endif /* UART1_RX_DMA_PREEMPT_PRIORITY */

#ifndef UART1_RX_DMA_SUB_PRIORITY
#define UART1_RX_DMA_SUB_PRIORITY 0
#endif /* UART1_RX_DMA_SUB_PRIORITY */

#ifndef UART1_DMA_RX_CONFIG
#define UART1_DMA_RX_CONFIG \
{ \
.Instance = UART1_RX_DMA_INSTANCE, \
.dma_rcc = UART1_RX_DMA_RCC, \
.dma_irq = UART1_RX_DMA_IRQ, \
}
#define UART1_DMA_RX_CONFIG \
STM32_DMA_RX_BYTE_CIRCULAR_CONFIG_INIT_EX( \
UART1_RX_DMA_INSTANCE, \
UART1_RX_DMA_RCC, \
UART1_RX_DMA_IRQ, \
0U, \
0U, \
UART1_RX_DMA_PRIORITY, \
UART1_RX_DMA_PREEMPT_PRIORITY, \
UART1_RX_DMA_SUB_PRIORITY)
#endif /* UART1_DMA_RX_CONFIG */
#endif /* BSP_UART1_RX_USING_DMA */

#if defined(BSP_USING_UART2)
#ifndef UART2_CONFIG
#define UART2_CONFIG \
{ \
.name = "uart2", \
.Instance = USART2, \
.irq_type = USART2_IRQn, \
#define UART2_CONFIG \
{ \
.name = "uart2", \
.Instance = USART2, \
.irq_type = USART2_IRQn, \
}
#endif /* UART2_CONFIG */
#endif /* BSP_USING_UART2 */

#if defined(BSP_UART2_RX_USING_DMA)
#ifndef UART2_RX_DMA_PRIORITY
#define UART2_RX_DMA_PRIORITY DMA_PRIORITY_MEDIUM
#endif /* UART2_RX_DMA_PRIORITY */

#ifndef UART2_RX_DMA_PREEMPT_PRIORITY
#define UART2_RX_DMA_PREEMPT_PRIORITY 0
#endif /* UART2_RX_DMA_PREEMPT_PRIORITY */

#ifndef UART2_RX_DMA_SUB_PRIORITY
#define UART2_RX_DMA_SUB_PRIORITY 0
#endif /* UART2_RX_DMA_SUB_PRIORITY */

#ifndef UART2_DMA_RX_CONFIG
#define UART2_DMA_RX_CONFIG \
{ \
.Instance = UART2_RX_DMA_INSTANCE, \
.dma_rcc = UART2_RX_DMA_RCC, \
.dma_irq = UART2_RX_DMA_IRQ, \
}
#define UART2_DMA_RX_CONFIG \
STM32_DMA_RX_BYTE_CIRCULAR_CONFIG_INIT_EX( \
UART2_RX_DMA_INSTANCE, \
UART2_RX_DMA_RCC, \
UART2_RX_DMA_IRQ, \
0U, \
0U, \
UART2_RX_DMA_PRIORITY, \
UART2_RX_DMA_PREEMPT_PRIORITY, \
UART2_RX_DMA_SUB_PRIORITY)
#endif /* UART2_DMA_RX_CONFIG */
#endif /* BSP_UART2_RX_USING_DMA */

Expand Down
17 changes: 17 additions & 0 deletions bsp/stm32/libraries/HAL_Drivers/drivers/config/f1/dma_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,11 @@ extern "C" {
#define SPI3_RX_DMA_RCC RCC_AHBENR_DMA2EN
#define SPI3_RX_DMA_INSTANCE DMA2_Channel1
#define SPI3_RX_DMA_IRQ DMA2_Channel1_IRQn
#elif defined(BSP_UART5_TX_USING_DMA) && !defined(UART5_TX_DMA_INSTANCE)
#define UART5_DMA_TX_IRQHandler DMA2_Channel1_IRQHandler
#define UART5_TX_DMA_RCC RCC_AHBENR_DMA2EN
#define UART5_TX_DMA_INSTANCE DMA2_Channel1
#define UART5_TX_DMA_IRQ DMA2_Channel1_IRQn
#endif

/* DMA2 channel2 */
Expand Down Expand Up @@ -149,6 +154,18 @@ extern "C" {
#define SDIO_RX_DMA_RCC RCC_AHBENR_DMA2EN
#define SDIO_RX_DMA_INSTANCE DMA2_Channel4
#define SDIO_RX_DMA_IRQ DMA2_Channel4_5_IRQn
#elif defined(BSP_UART5_RX_USING_DMA) && !defined(UART5_RX_DMA_INSTANCE)
#if defined(DMA2_Channel4_5_IRQHandler) && defined(DMA2_Channel4_5_IRQn)
#define UART5_DMA_RX_IRQHandler DMA2_Channel4_5_IRQHandler
#define UART5_RX_DMA_IRQ DMA2_Channel4_5_IRQn
#elif defined(DMA2_Channel4_IRQHandler) && defined(DMA2_Channel4_IRQn)
#define UART5_DMA_RX_IRQHandler DMA2_Channel4_IRQHandler
#define UART5_RX_DMA_IRQ DMA2_Channel4_IRQn
#else
#error "Unsupported STM32F1 UART5 RX DMA IRQ mapping"
#endif
#define UART5_RX_DMA_RCC RCC_AHBENR_DMA2EN
#define UART5_RX_DMA_INSTANCE DMA2_Channel4
#endif

/* DMA2 channel5 */
Expand Down
Loading
Loading