回复【5楼】cornrn:
---------------------------------
这是我很久之前的代码了,
是4通道采集 用DMA连续采集 开DMA中断,
这是初始化部分, 不过是C++ 的,[我一直用的C++,你应该能看懂]
[mw_shl_code=c,true] DMA1_Channel1->Config(
true, //使能
ADChannelNum*ADGetTimes, //传输数据数量
DMAChannelType::Circular, //循环模式
(u32)&ADC1->DR, //外设地址
(u32)&ADValues, //内存地址
DMAChannelType::ReadFromPhi, //传输方向
false, //外设增量
true, //内存增量
DMAChannelType:  _16b, //外设数据宽度
DMAChannelType:  _16b, //内存数据宽度
DMAChannelType:  _H, //优先级
DMAChannelType::TrComplete //开启完成中断
);
NVIC->Config(DMA1_Channel1_IRQChannel, 1,1,true);
ADC1->Config(ADChannelNum);
ADC1->RegularChannelConfig( ADCType::Chn_3, 1 ,ADCType::T_7p5 );
ADC1->RegularChannelConfig( ADCType::Chn_2, 2 ,ADCType::T_7p5 );
ADC1->RegularChannelConfig( ADCType::Chn_1, 3 ,ADCType::T_7p5 );
ADC1->RegularChannelConfig( ADCType::Chn_0, 4 ,ADCType::T_7p5 );
[/mw_shl_code]
[mw_shl_code=c,true] ADC1->DMAEnable(true);
ADC1->Enable(true);
ADC1->RegularSoftTrigEnable(true);
ADC1->RstCalibration();
while(ADC1->WaitRstCalibration());
ADC1->Calibration();
while(ADC1->WaitCalibration());
ADC1->RegularSoftTrigEnable(true);[/mw_shl_code]
|