求stm32无线NRF带双通道ADC程序

2019-03-23 20:20发布

急求于基于STM32F103C8BT的无线传输带双通道ADC的源程序,手上有无线NRF转USB通讯的程序,也有ADC的程序,但是缺少将他们融合在一起的程序……那位高手能指点一下   此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
daicheng
2019-03-24 09:06
简单说一下吧 参考一下
GPIO 配置

                                // AD1          AD2       AD3        AD4
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 |GPIO_Pin_5|GPIO_Pin_6 |GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AIN;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

void ADC_Configuration(void)
{
   ADC_InitTypeDef           ADC_InitStructure;

   /* Initializes the ADC1 peripheral configuration*/
   ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;      //ADC_Mode value
   ADC_InitStructure.ADC_ScanConvMode = ENABLE;            //ADC_ScanConvMode value
   ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;     //ADC_ContinuousConvMode value
   ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T2_CC2; //ADC_ExternalTrigConv value
   ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;  //ADC_DataAlign value
   ADC_InitStructure.ADC_NbrOfChannel = ADC_ScanCh;        //ADC_NbrOfChannel value
   ADC_Init(ADC1, &ADC_InitStructure);


   ADC_RegularChannelConfig(ADC1, ADC_Channel_14,  1, ADC_SampleTime_13Cycles5);  //pin: PC4
   ADC_RegularChannelConfig(ADC1, ADC_Channel_15,  2, ADC_SampleTime_13Cycles5);  //pin: PC5
   ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 3, ADC_SampleTime_13Cycles5);  //pin: PB0
   ADC_RegularChannelConfig(ADC1, ADC_Channel_9, 4, ADC_SampleTime_13Cycles5);  //pin: PB1
   ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 5, ADC_SampleTime_55Cycles5);  //temperature
   ADC_TempSensorVrefintCmd(ENABLE);
   ADC_DMACmd(ADC1, ENABLE);
   ADC_ExternalTrigConvCmd(ADC1, ENABLE);

   ADC_Cmd(ADC1, ENABLE);   
   ADC_ResetCalibration(ADC1);
   while(ADC_GetResetCalibrationStatus(ADC1));

   ADC_StartCalibration(ADC1);
   while(ADC_GetCalibrationStatus(ADC1));
}

void DMA_Configuration(void)
{

  DMA_DeInit(DMA1_Channel1);
  DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;               //DMA_PeripheralBaseAddr value
  DMA_InitStructure.DMA_MemoryBaseAddr = (u32)ADC_ConvertValueTab;          //DMA_MemoryBaseAddr value
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;                        //DMA_DIR value
  DMA_InitStructure.DMA_BufferSize = ADC_ScanCh*ADC_ConvertNum;               
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;          //DMA_PeripheralInc value
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                   //DMA_MemoryInc value
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; //DMA_PeripheralDataSize value
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;       //DMA_MemoryDataSize value
  DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;                           //DMA_Mode value
  DMA_InitStructure.DMA_Priority = DMA_Priority_High;                       //DMA_Priority value
  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;                              //DMA_M2M value
  DMA_Init(DMA1_Channel1, &DMA_InitStructure);
  //DMA_Cmd(DMA1_Channel1, ENABLE);

注意关DMA与AD的顺序

}

一周热门 更多>