本帖最后由 Alohaq 于 2024-2-4 14:17 编辑
若在DMA_ChCmd使用中有中断触发,导致第二次DMA_ChCmd触发,则会直接返回LL_ERR; 假如我用的两个DMA单元,则会导致被中断触发的DMA单元被正在使能的DMA单元使能失败,如DMA1正在通道使能,这时外部中断触发,去使能DMA2的通道,结果DMA2使能失败,直接导致传输失败,所以需要分开,设为DMA_ChCmd_1和DMA_ChCmd_2
int32_t DMA_ChCmd(CM_DMA_TypeDef *DMAx, uint8_t u8Ch, en_functional_state_t enNewState)
{
static __IO uint8_t u8DmaChEnState = DMA_IDLE;
```
```
if (DMA_IDLE == u8DmaChEnState) {
```
return LL_OK;
}
return LL_ERR;
}
|