|
本帖最后由 qq1646544 于 2023-8-27 09:20 编辑
1、双缓冲区的使用问题:
<第43章 STM32H7的DMA应用之双缓冲控制任意IO和脉冲数控制> 利用的是“HAL_DMAEx_MultiBufferStart_IT”函数实现双缓冲区效果
而<第45章 STM32H7的ADC应用之定时器触发配合DMA双缓冲>则是利用DMA传输完成中断和半传输完成中断来实现双缓冲区的效果,
那么为什么不可以调用HAL_DMAEx_MultiBufferStart_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength)函数
去实现呢?我感觉只需要把SrcAddress配置为ADC的数据寄存器,DstAddress和SecondMemAddress为两个缓冲区,就可以实现目标功能。
2、对于DMA传输模式,流控制器是如何选择是DMA还是外设的,需要修改哪个寄存器?还是调用哪个函数API?
3、H7的数据封装和数据解封,比如我这里看到F1参考手册(下方右图),如果以红框方式进行不等宽数据类型的传输,会在目标地址数据丢失,比如在0x0读B1B0[15:0],在0x0写B0[7:0],此时丢失了B1位,那么H7参考手册(下方左图)这么传输应该数据也会丢失把?
|
|