要有上進心 2022-05-07 11:03 采纳率: 100%
浏览 206
已结题

ADC+DMA 一采集就显示OVR位溢出但是EOC位由1变为0

img


ADC的EOC1位由1变为0说明DMA已经拿了ADC的数据了,但是EOC2没有置0
原因:这里我用的是双重模式,ADC每次采集完数据OVR位都会置一,从而导致后续的DMA请求失能
但是DMA拿了数据之后不会给到我定义的内存中去(DMA代码如下)
想问一下ADC一采集OVR位置一这个问题怎么解决


void DMA_Init_Config()
{
    DMA_InitTypeDef DMA_InitStruct;
    
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2,ENABLE);
    DMA_DeInit(ADC_DMA_STREAM);
    //外设基地址,即ADC->CDR的地址
    DMA_InitStruct.DMA_PeripheralBaseAddr = ADC_CDR_ADDR;
    DMA_InitStruct.DMA_Memory0BaseAddr = (u32)ADC_ConvertedValue;
    DMA_InitStruct.DMA_DIR = DMA_DIR_PeripheralToMemory;
    DMA_InitStruct.DMA_BufferSize = 2;
    DMA_InitStruct.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
    DMA_InitStruct.DMA_MemoryInc = DMA_MemoryInc_Enable;
    DMA_InitStruct.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
    DMA_InitStruct.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
    DMA_InitStruct.DMA_Mode = DMA_Mode_Circular;
    DMA_InitStruct.DMA_Priority = DMA_Priority_Medium;
    DMA_InitStruct.DMA_FIFOMode = DMA_FIFOMode_Disable;
    DMA_InitStruct.DMA_Channel = ADC_DMA_CHANNEL;
    DMA_Init(ADC_DMA_STREAM,&DMA_InitStruct);
    DMA_Cmd(ADC_DMA_STREAM,ENABLE);
}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 5月15日
    • 创建了问题 5月7日

    悬赏问题

    • ¥15 如何使用micpyhon解析Modbus RTU返回指定站号的湿度值,并确保正确?
    • ¥15 C++ 句柄后台鼠标拖动如何实现
    • ¥15 有人会SIRIUS 5.8.0这个软件吗
    • ¥30 comsol仿真等离激元
    • ¥15 静电纺丝煅烧后如何得到柔性纤维
    • ¥15 (标签-react native|关键词-镜像源)
    • ¥100 照片生成3D人脸视频
    • ¥15 伪装视频时长问题修改MP4的时长问题,
    • ¥15 JETSON NANO
    • ¥15 VS开发qt时如何在paintgl函数中用pushbutton控制切换纹理