eric2013 发表于 2019-1-22 09:53:51

每次看到DMA_FLAG_FEIF0_4,我都以为是标志0到4

今天细看了下,原来是0和4。专用于DMA1和DMA2的,而BDMA是用的另外的宏定义标志。
这里0和4是对应的DMA1或者DMA2的Stream0和Stream4的标志,同理1和5就是Srteam1和Stream5。

Stream0 到 Stream3的标志是通过LISR寄存器查看。
Stream4 到 Stream7的标志是通过HISR寄存器查看。

另外
#define DMA_FLAG_FEIF0_4          ((uint32_t)0x00800001U)
#define DMA_FLAG_DMEIF0_4       ((uint32_t)0x00800004U)

这个的8是什么鬼,看了参考手册,原来这个bit没有定义。

/** @defgroup DMA_flag_definitions DMA flag definitions
* @brief    DMA flag definitions
* @{
*/
#define DMA_FLAG_FEIF0_4                  ((uint32_t)0x00800001U)
#define DMA_FLAG_DMEIF0_4                   ((uint32_t)0x00800004U)
#define DMA_FLAG_TEIF0_4                  ((uint32_t)0x00000008U)
#define DMA_FLAG_HTIF0_4                  ((uint32_t)0x00000010U)
#define DMA_FLAG_TCIF0_4                  ((uint32_t)0x00000020U)
#define DMA_FLAG_FEIF1_5                  ((uint32_t)0x00000040U)
#define DMA_FLAG_DMEIF1_5                   ((uint32_t)0x00000100U)
#define DMA_FLAG_TEIF1_5                  ((uint32_t)0x00000200U)
#define DMA_FLAG_HTIF1_5                  ((uint32_t)0x00000400U)
#define DMA_FLAG_TCIF1_5                  ((uint32_t)0x00000800U)
#define DMA_FLAG_FEIF2_6                  ((uint32_t)0x00010000U)
#define DMA_FLAG_DMEIF2_6                   ((uint32_t)0x00040000U)
#define DMA_FLAG_TEIF2_6                  ((uint32_t)0x00080000U)
#define DMA_FLAG_HTIF2_6                  ((uint32_t)0x00100000U)
#define DMA_FLAG_TCIF2_6                  ((uint32_t)0x00200000U)
#define DMA_FLAG_FEIF3_7                  ((uint32_t)0x00400000U)
#define DMA_FLAG_DMEIF3_7                   ((uint32_t)0x01000000U)
#define DMA_FLAG_TEIF3_7                  ((uint32_t)0x02000000U)
#define DMA_FLAG_HTIF3_7                  ((uint32_t)0x04000000U)
#define DMA_FLAG_TCIF3_7                  ((uint32_t)0x08000000U)

static/image/hrline/4.gif





shibinjie 发表于 2024-3-27 14:40:01

官方HAL库中的公用中断函数void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma)中为啥只对0和4做了处理?

eric2013 发表于 2024-3-27 15:37:37

shibinjie 发表于 2024-3-27 14:40
官方HAL库中的公用中断函数void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma)中为啥只对0和4做了处理?

都做处理了。

shibinjie 发表于 2024-3-27 16:44:02

eric2013 发表于 2024-3-27 15:37
都做处理了。

嗯,看明白了
页: [1]
查看完整版本: 每次看到DMA_FLAG_FEIF0_4,我都以为是标志0到4