你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F0 ADC多通道单次转换,最后一个通道的EOC不置位

[复制链接]
shaodong-350471 发布时间:2019-12-31 14:02
STM32F030 ADC采样序列中包括IN0,IN1,IN2三个通道,采用单次转换模式,软件触发启动,但是发现采样转换到最后一个通道IN2时,EOC不会置位,程序进入超时状态。有哪位朋友碰到过此问题?
; L& p" E0 C& a主要代码如下:% S5 A+ m4 U  I- |

% K' y$ G% Z8 w# G, O6 Z2 F2 Iuint16_t  ADCValue[3;
, j: F$ J  N. M: j# Tvoid MX_ADC_Init(void)
- A6 R+ b  ~" S& i4 y2 m{  
% U  E  [& e6 }! _/ {  ADC_ChannelConfTypeDef sConfig;  
/ b3 m1 ]  o2 d, z  hadc.Instance = ADC1;  
3 H! G' y0 H% @& @) |( u) _, H" P. [  hadc.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;  
9 a4 t8 E( x' ^; V$ q- X  hadc.Init.Resolution = ADC_RESOLUTION_12B;  ' c# R3 x" g9 M1 o7 `# |
  hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT;  ' I8 ~9 e8 f* `9 y
  hadc.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD;  
8 \/ J! b6 v* G- J7 x$ _/ h  hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV;  $ S4 }) N" z% \5 ^8 D" ^5 i
  hadc.Init.LowPowerAutoWait = DISABLE;  ; u, u: Y$ w+ V; z! Z: {& X
  hadc.Init.LowPowerAutoPowerOff = DISABLE;  
! u2 C' X: u* C' n  hadc.Init.ContinuousConvMode = DISABLE;    |5 {4 X# R7 H8 y. H
  hadc.Init.DiscontinuousConvMode = DISABLE;  

3 \+ H- @/ I) u; P5 |5 z- R* I  hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START;  ( [, M" k7 R" L0 @- P
  hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;  / K; w* k& D( t) \- O
  hadc.Init.DMAContinuousRequests = DISABLE;  0 v5 X5 J7 r( u3 Y7 {4 R/ c
  hadc.Init.Overrun = ADC_OVR_DATA_PRESERVED;  ' R' {% H, ^) M0 M+ c; K  Q
  if (HAL_ADC_Init(&hadc) != HAL_OK)  9 s: G1 h0 l$ @  _
  {    ; H  C/ s; F$ G  ]( T- t. ?4 ~$ f
    _Error_Handler(__FILE__, __LINE__);  5 V+ E- M- M' i( c+ [! ^. G; |
  }  
1 b' s" p6 s2 E6 p6 B0 Z+ W% O4 }7 r* S9 A5 S, u4 L9 F+ G
  sConfig.Channel = ADC_CHANNEL_0;  
- Z% B  |6 |. x3 M0 I- R  sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;  
% Z8 J( m. T) A$ B6 g1 C  sConfig.SamplingTime = ADC_SAMPLETIME_7CYCLES_5;  
/ H- a' }7 Z$ w8 Q/ Z  if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)  
! f. d9 S6 }  o7 T, E9 u0 T  {
; q$ |. H. w( j& ~    _Error_Handler(__FILE__, __LINE__);  9 D4 `4 S( B: h7 ^
  }  : @+ p* x$ y4 A6 }0 u# W

- h  C! @, _8 k; c* k. X9 [  sConfig.Channel = ADC_CHANNEL_1;  , _1 J( {$ H' c& F' x
  if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)  ' Z( y4 g+ _, Q; ?; ]2 f7 E3 K, W/ X
  {
/ Z( z) O5 c0 f" [! h( r" x( v1 h    _Error_Handler(__FILE__, __LINE__);  6 m3 r' x- w7 D( k
  }  % O1 h8 h6 z" n+ c( b
$ d& o# V5 s6 D0 H
  sConfig.Channel = ADC_CHANNEL_2;  
9 O" n' z; [" d( `* e( e  if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)  ' Z! A% O  P& j/ h2 z3 K
  {" ?' g8 _# V$ S$ M, a9 X/ g3 V
    _Error_Handler(__FILE__, __LINE__);  ) X& N" F: B4 S0 J
  }) X/ q( S* S% G: s
}
+ t, U3 ]4 b( f; p$ B$ Y" U1 E
$ Y- u% f5 n' w& J1 q% M6 cvoid Get_ADCVal(void)8 f8 |. p7 s/ o" V: k5 b3 v
{  
; N1 j, l* R# r6 ~& `3 ]7 d) R0 v  uint8_t  i;  , x7 i  B1 a9 L2 p
3 J8 ]6 B3 o" l9 c
  if (HAL_ADC_Start(&hadc) != HAL_OK)  
5 E1 Y3 K; a, z* k9 b5 `  {    6 J- B& U% c% F( R0 m
    _Error_Handler(__FILE__, __LINE__);  2 m$ {# F4 L/ h" x% b) i
  }  
' J! a/ z! S% i7 K
1 _2 ?5 w/ K: Q% A  for ( i=0;  i<3;  i++ )   
; A: l7 B# {  t6 Z. R% X  ]  {   
: M! n1 i7 S- H0 u# K0 T: c& T+ G    if (HAL_ADC_PollForConversion(&hadc, 20) != HAL_OK)    , O/ p7 `; E) V) o8 N: A0 U% I
       _Error_Handler(__FILE__, __LINE__);   // ********** 当 i 递增到2时,程序执行死在这里!!!!!!!!!!    & T9 ~& S  f  Q
    else    2 n. M, S+ O; M# p- W
      ADCValue[i = HAL_ADC_GetValue(&hadc);      `/ f, y5 t: K% L9 `7 N
  }5 W1 l  V. R! }9 S. z- M: ?
    // HAL_ADC_Stop(&hadc);   H+ ?* ]$ w6 S7 M9 E/ t
}
赞 收藏 评论0 发布时间:2019-12-31 14:02

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版