ST意法半导体
直播中

罗星

8年用户 1507经验值
擅长:模拟技术
私信 关注
[问答]

ADC在检查EOC标志时卡住了的原因?

我正在尝试编写代码来平均来自 STM32F01K6 的 ADC 的样本。我正在开始转换并等待转换发生,方法是编写一个 while 循环来检查完成标志
  •   ADC1->CR |= ADC_CR_ADSTART;
  •                     while(((ADC1->ISR) & 0b00000100)!=0)
  •                     {
  •                     }
  • for(j=0;j<4;j++)
  •                 {
  •                   ADC_result_pre[j] = ADC1->DR; //fetch adc data
  •                 }
  •                 ADC_result=(ADC_result_pre[0]+ADC_result_pre[1]+ADC_result_pre[2]+ADC_result_pre[3])/4;
  •                   switch(ADC1->CHSELR)   //switch dac channel to the next
  •                   {
  •                   case 0b1:
  •                           ADC1 ->CHSELR = 0b10;
  •                           i=1;
  •                           break;
  •                   case 0b10:
  •                           ADC1 ->CHSELR = 0b1;
  •                           i=0;
  •                           break;
  •                   }

如果我编写不等待 EOC 标志的代码,则 ADC 工作正常。然而,使用这段代码它会卡在 while 循环中,EOC 标志永远不会出现。我哪里出错了?









回帖(1)

潘晶燕

2023-1-31 15:31:59
您的代码等待 EOC 标志被重置,而不是设置。你的逻辑是倒退的。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分