根据二维数组的大小也解释了 DMA 的 Buffer_size 是 ADC_BUFF_LEN * 2 ,同时,由于在下面设置了 内存地址是递增的,而又有两个通道,那么他的转换顺序是这样的,也就是先转换通道 1 的值存入数组,然后再转换通道 2 的数据存入数组,然后,以一定时间间隔地转换 512 次,然后发生 DMA 中断,这样也就能够说明数组为...
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //工作在循环缓存模式 DMA_InitStructure.DMA_Priority = DMA_Priority_High; //DMA通道x拥有高优先级 DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //DMA通道x没有设置为内存到内存传输 DMA_Init(DMA1_Channel1, &DMA_InitStructure); // // NVIC_InitSt...
DMA_ITConfig(DMA1_Channel1, DMA_IT_TC, ENABLE);DMA_Cmd(DMA1_Channel1, ENABLE); // DMA...
/* Test on channel1 transfer complete flag */ while(!DMA_GetFlagStatus(DMA1_FLAG_TC1)); /* Clear channel1 transfer complete flag */ DMA_ClearFlag(DMA1_FLAG_TC1); /* TIM1 counter disable */ TIM_Cmd(TIM1, DISABLE); while (1) { } } 2:关于AD的DMA暂时不介绍,主要介绍定时器和ADC...
DMA_Configuration();while(1){ while(1){ if(DMA_GetFlagStatus(DMA1_FLAG_TC1)==SET) //判断...
程序1 根据官方例子写的: #include"adc.h" __IO uint32_t ADC_DualConvertedValueTab[ADC_BufferLength]; void ADC1_2_Init(void) { ADC_InitTypeDef ADC_InitStructure; DMA_InitTypeDef DMA_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_ADCCLKConfig(RCC_PCLK2_Div4); ...
DMA_GetFlagStatus(DMA1_FLAG_TC1)); /* 清除DMA1传输完成标志位 */ DMA_ClearFlag(DMA1_FLAG_TC1); } 读取数据# 在fADC=14MHzfADC=14MHz下,ADC的转换时间为1us,见参考手册中11章的内容:11.6 Channel-by-channel programmable sample time。因此无需判断标志位,直接读取结果即可。 __IO uint32_t ...
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; DMA_Init(DMA1_Channel1, &DMA_InitStructure); DMA_ITConfig(DMA1_Channel1, DMA_IT_TC, ENABLE); ...
while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)); //等待转换结束 大约56us while(DMA_GetFlag...
DMA_ClearFlag(DMA1_FLAG_TC1); dd = (u16)ADC2->DR; ADC_ClearITPendingBit(ADC2, ADC_IT_EOC); min_cnt++; } 七、中断处理 void TIM2_IRQHandler(void) { if(TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET) { send_data(min_cnt); // 通过串口检查数据 ...