多路ADC转换,ADC的值不更新,永远是起始值,求解决

2019-07-20 16:54发布

如题,硬件已经测试过了,没有问题。可是结果从串口传输到电脑上保持不变,不知道是什么问题呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
w562601331
1楼-- · 2019-07-21 14:58
 精彩回答 2  元偷偷看……
bg8wj
2楼-- · 2019-07-21 18:09
[mw_shl_code=applescript,true]/* DMA外设初始化配置 */
    DMA_ADC_Handler.Instance                                    = DMA2_Stream0;  //数据流选择
    DMA_ADC_Handler.Init.Channel                            = DMA_CHANNEL_0; //通道选择  
      DMA_ADC_Handler.Init.Direction                        = DMA_PERIPH_TO_MEMORY;//外设到存储器
        DMA_ADC_Handler.Init.PeriphInc                      = DMA_PINC_DISABLE;  //外设地址不增加
      DMA_ADC_Handler.Init.MemInc                           = DMA_MINC_ENABLE;   //存储器地址增加
    DMA_ADC_Handler.Init.PeriphDataAlignment    = DMA_PDATAALIGN_HALFWORD;//字节模式
    DMA_ADC_Handler.Init.MemDataAlignment       = DMA_PDATAALIGN_HALFWORD;//数据半字节
    DMA_ADC_Handler.Init.Mode                               = DMA_NORMAL;
        DMA_ADC_Handler.Init.Priority                       = DMA_PRIORITY_HIGH;
        DMA_ADC_Handler.Init.FIFOMode                       = DMA_FIFOMODE_DISABLE;
     
        HAL_DMA_Init(&DMA_ADC_Handler);
      
        /* 连接DMA */
    __HAL_LINKDMA(&ADC1_Handler,DMA_Handle,DMA_ADC_Handler);
//以上是dma 句柄设置

//adc 部分
void MX_ADC1_Init(void)
{
     ADC_ChannelConfTypeDef sConfig;
// ADC功能配置
  ADC1_Handler.Instance                   = ADC1;
    ADC1_Handler.Init.ClockPrescaler        = ADC_CLOCK_SYNC_PCLK_DIV4;   //4分频,ADCCLK=PCLK2/4=90/4=22.5MHZ
  ADC1_Handler.Init.Resolution            = ADC_RESOLUTION_12B;    //12位模式
  ADC1_Handler.Init.ScanConvMode          = ENABLE;              //扫描模式
    ADC1_Handler.Init.ContinuousConvMode    = ENABLE;               //打开连续转换
    ADC1_Handler.Init.DiscontinuousConvMode = DISABLE;             //不连续采样模式
    ADC1_Handler.Init.ExternalTrigConvEdge  = ADC_EXTERNALTRIGCONVEDGE_NONE; //软件触发
    ADC1_Handler.Init.ExternalTrigConv      = ADC_SOFTWARE_START;//ADC_EXTERNALTRIGCONV_T1_CC1;
    ADC1_Handler.Init.DataAlign             = ADC_DATAALIGN_RIGHT;  //右对齐   
    ADC1_Handler.Init.NbrOfConversion       = ADC_NUMOFCHANNEL;     //8个转换在规则序列中
    ADC1_Handler.Init.DMAContinuousRequests =   ENABLE;                         //打开DMA请求
  ADC1_Handler.Init.EOCSelection          = ADC_EOC_SEQ_CONV;     //关闭EOC中断
    if (HAL_ADC_Init(&ADC1_Handler) != HAL_OK){Error_Handler();}
     
  // 配置采样通道 1
  sConfig.Channel = ADC_CHANNEL_1;
  sConfig.Rank = 1;
  sConfig.SamplingTime = ADC_SAMPLETIME_144CYCLES;
  if (HAL_ADC_ConfigChannel(&ADC1_Handler, &sConfig) != HAL_OK){Error_Handler();}

    // 配置采样通道 2
。。。。。。。。[/mw_shl_code]

一周热门 更多>