Skip to main content
Associate II
September 20, 2024
Question

Macro for different DMA types

  • September 20, 2024
  • 2 replies
  • 883 views
I am making an application using the STM32 drivers. Currently, I am using the following macro defined in the 'Device' drivers to distinguish the chip families:

 

/**
 * @brief STM32 Family
 */
#if !defined (STM32F4)
#define STM32F4
#endif /* STM32F4 */​

 

As we know, STM32F2/F4 and F7 have a different type of DMA implementation than STM32H5, leading to differences in elements in DMA_InitTypeDef and DMA_HandleTypeDef structures. 
Is there a macro that will help us distinguish these DMA types, rather than the chip family macro?

2 replies

TDK
Super User
September 20, 2024

No, there are not per-peripheral macros for each family and version of peripheral.

"If you feel a post has answered your question, please click ""Accept as Solution""."
Andrew Neil
Super User
September 20, 2024

CubeIDE will automatically include a #define for the chip you're using; eg,

AndrewNeil_1-1726840311434.pngAndrewNeil_2-1726840319895.png

AndrewNeil_5-1726840755592.png

So you could use that to create your "family" macro; eg,

 

#if defined STM32F051x8 || defined STM32F030x8
#define STM32F0
#elif defined STM32L073xx
#define STM32L0
#else
#error "Unknown chip"
#endif

 

 

EDIT:

Sorry, I mis-read the question.

But, in a similar style, you could provide your own "DMA Type" macro:

#if defined STM32F2 || defined STM32F4 || defined STM32F7
#define DMA_TYPE_1
#elif defined STM32H5
#define DMA_TYPE_2
#else
#error "Unknown STM32 family."
#endif

 

A complex system that works is invariably found to have evolved from a simple system that worked.A complex system designed from scratch never works and cannot be patched up to make it work.