|
目的:
1 首先每次TIM1的捕获事件触发DMA2_Stream6传送CNT,CCR1,CCR2,这3个WORD到一个内存数组,然后等待捕获事件再次触发(现在能正常工作)
2 接着每次通过MDMA_REQUEST_DMA2_Stream6_TC触发MDMA_Channel0(MDMA_BUFFER_TRANSFER模式),传送TIM2的CNT,CCR1,这2个WORD到一个内存数组,然后等待 MDMA_REQUEST_DMA2_Stream6_TC的再次触发
3 重复以上两个过程
问题:
现在是上电后第1次执行上述1,2步是正常的,相关传送都能够正确完成,但当第2次时,MDMA的EN已变成0,不会再执行第2步传送.需要用软件HAL_MDMA_Start重新启动MDMA_Channel0才行
当前设置:
mdma->Init.Request = MDMA_REQUEST_DMA2_Stream6_TC;
mdma->Init.TransferTriggerMode = MDMA_BUFFER_TRANSFER;
mdma->Init.Priority = MDMA_PRIORITY_MEDIUM;
mdma->Init.Endianness = MDMA_LITTLE_ENDIANNESS_PRESERVE;
mdma->Init.SourceInc = MDMA_SRC_INC_DISABLE;
mdma->Init.DestinationInc = MDMA_DEST_INC_DISABLE;
mdma->Init.SourceDataSize = MDMA_SRC_DATASIZE_WORD;
mdma->Init.DestDataSize = MDMA_DEST_DATASIZE_WORD;
mdma->Init.DataAlignment = MDMA_DATAALIGN_PACKENABLE;
mdma->Init.SourceBurst = MDMA_SOURCE_BURST_SINGLE;
mdma->Init.DestBurst = MDMA_DEST_BURST_SINGLE;
mdma->Init.BufferTransferLength = 4;
mdma->Init.SourceBlockAddressOffset = 0;
mdma->Init.DestBlockAddressOffset = 0;
HAL_MDMA_Init(mdma);
谢谢!
|
|