问题1:使用ADC的DMA传输功能语句如下:
HAL_ADC_Start_DMA(&hadc,(uint32_t*)&ADC_value,(uint32_t)1)
volt = (ADC_value3.3)/4095;
这样写的话结果volt为0没有接收到转换的ADC值,但是如果加上一个延时的话就会输出正确的结果
HAL_ADC_Start_DMA(&hadc,(uint32_t)&ADC_value,(uint32_t)1)
HAL_Delay(10);
volt = (ADC_value3.3)/4095;
关于DMA的理解是DMA处理完ADC转换后通知CPU处理转换后的值,而volt = (ADC_value3.3)/4095这条语句是由CPU处理的,如果说CPU处理完DMA转换的值之后处理计算这条语句那么应该会 不需要延时正确执行,,加上延时的话是不是就是说CPU同时处理计算结果这条语句和volt这条语句但是DMA优先级更高,就忽略了计算的语句?
问题2:DAC的DMA功能一定要有外部中断触发吗,为什么我直接使用HAL_DAC_Start_DMA()语句对应引脚不会输出相应的电压?