大学生
最后登录1970-1-1
在线时间 小时
注册时间2017-4-21
|
楼主 |
发表于 2017-6-12 09:49:09
|
显示全部楼层
我使用的是 TCIF中断标志 相关程序
static void ADCx_DMA_Config(void)
{
DMA_InitTypeDef DMA_InitStructure;
RCC_AHB1PeriphClockCmd(ADCx_DMA2_CLK, ENABLE);
/*>! 外设地址 也就是ADC数据寄存器的地址 */
DMA_InitStructure.DMA_PeripheralBaseAddr = ADCx_DR_ADDR;
/*>! 存储器 0 地址 也就是用于保存ADC数据的变量地址 */
DMA_InitStructure.DMA_Memory0BaseAddr = (u32)&ADC_ConvertedValue;
/*>! 传输方向 外设到存储器 ADC 到 SRAM */
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
/*>! 数据数目 */
DMA_InitStructure.DMA_BufferSize = 357;
/*>! 外设递增 */
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
/*>! 存储器0地址递增 使能 */
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
/*>! 外设数据宽度 */
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
/*>! 存储器数据宽度 */
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
/*>! 模式选择循环传输模式 */
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //循环模式
/*>! 优先级 */
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
/*>! FIFO 模式 */
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;
/*>! FIFO 阈值 */
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;
/*>! 存储器突发传输 */
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
/*>! 外设突发传输 */
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
/*>! 通道选择 */
DMA_InitStructure.DMA_Channel = ADCx_DMA2_CHANNEL;
/*>! 写入DMA寄存器参数 */
DMA_Init(ADCx_DMA2_STREAM, &DMA_InitStructure);
/*>! 传输完成中断 TC 使能 */
DMA_ITConfig(ADCx_DMA2_STREAM,DMA_IT_TC,ENABLE);
/*>! 使能DMA */
DMA_Cmd(ADCx_DMA2_STREAM, ENABLE);
}
中断程序
void DMA2_Stream0_IRQHandler(void)
{
if(DMA_GetFlagStatus(ADCx_DMA2_STREAM,DMA_FLAG_TCIF0) == SET)
{
TIM_Cmd(TIMx_Number,DISABLE);
k++;
if(k >= 20)
{
DMA_Flag = 1;
k = 0;
}
else
TIM_Cmd(TIMx_Number,ENABLE);
}
DMA_ClearFlag(ADCx_DMA2_STREAM,DMA_FLAG_TCIF0);
} |
|