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

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

[复制链接]
shaodong-350471 发布时间:2019-12-31 14:02
STM32F030 ADC采样序列中包括IN0,IN1,IN2三个通道,采用单次转换模式,软件触发启动,但是发现采样转换到最后一个通道IN2时,EOC不会置位,程序进入超时状态。有哪位朋友碰到过此问题?6 s0 d! c0 V6 d( L0 y, d# ~  r
主要代码如下:
) M2 N6 j& a2 l/ F9 m1 W5 m
& U( o& \. ?" I6 Suint16_t  ADCValue[3;
6 k; L1 y5 e! B0 W* w* \6 Nvoid MX_ADC_Init(void)
* ?# f. e; L! P6 R{  
! _% z" s  ~; P- S( l4 _  ADC_ChannelConfTypeDef sConfig;    X) C; f" A5 f
  hadc.Instance = ADC1;  
. g5 ~' {" W( @  A: Y  hadc.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;  
/ j2 {& E- l* f  W  hadc.Init.Resolution = ADC_RESOLUTION_12B;  4 [6 ^5 [8 g- s* I
  hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT;  
& `; H) P. y% U2 t2 E: ^  hadc.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD;  / |$ Q0 k0 U# r/ W# m  C
  hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV;  
! {( U& F0 ]/ S# e  hadc.Init.LowPowerAutoWait = DISABLE;  
; f5 W+ Z- J8 S  hadc.Init.LowPowerAutoPowerOff = DISABLE;  
) G& C3 x) P0 G: A9 f& J& w  hadc.Init.ContinuousConvMode = DISABLE;  ! L2 e) F5 q  n" M. \
  hadc.Init.DiscontinuousConvMode = DISABLE;  
2 I# X3 E5 z' y. Y( @8 f; {
  hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START;  4 V! L+ z% I+ _; H' e1 I( a
  hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;  
5 q' v& U) w" b# x5 P2 `  hadc.Init.DMAContinuousRequests = DISABLE;  
  K3 E( I: M. M$ x, O0 t5 i' E/ C  hadc.Init.Overrun = ADC_OVR_DATA_PRESERVED;  
1 H) y7 W+ [; n- U% L; ]  if (HAL_ADC_Init(&hadc) != HAL_OK)  5 m7 j% e- p, ^  A0 t; L
  {    2 b' l5 q- s* @1 m1 g
    _Error_Handler(__FILE__, __LINE__);  - f& {" O/ D7 h: h8 P
  }  
6 h" _# x5 C, f; |; z6 m
& `) F$ k& }! M9 {% F# _, s+ T  sConfig.Channel = ADC_CHANNEL_0;  . X7 q: p- w3 F. C! I; h2 l4 e
  sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;  8 J! W3 x1 s) f' k$ w
  sConfig.SamplingTime = ADC_SAMPLETIME_7CYCLES_5;  
! ]6 V, c" i' ?+ C6 H, k# J# a  if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)  
. o' _8 F2 z6 H4 K/ j  {, A& @- X8 n7 s; Y: L' A
    _Error_Handler(__FILE__, __LINE__);  4 }2 L4 ~: [0 w8 r: `
  }  4 F3 z6 y( P" t6 s- J
% u; l$ f' Z' c# e( ^) A9 c2 l
  sConfig.Channel = ADC_CHANNEL_1;  
6 ^2 m( M. J  x3 q' U$ G; l  if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)  9 ?( A. Q, |/ B( i/ d; h! C
  {+ Y$ m9 u$ Q  y- N3 W8 {$ \4 G+ w6 V, _
    _Error_Handler(__FILE__, __LINE__);  
# f4 ^" b- [9 f+ @7 B* _4 q  }  
( a1 K5 n' V8 a9 \1 U) J" K$ j
+ T3 {4 {6 X+ B6 a1 W& Q, t  sConfig.Channel = ADC_CHANNEL_2;  : _7 w# x$ V8 @$ c, U% L4 A
  if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)  
- V3 r/ K! U) p+ X  {
0 c+ F3 W* ]; @; N    _Error_Handler(__FILE__, __LINE__);  
( I; ?5 j' g. o/ U2 e2 n1 Q  }( U" n( o, J& d. u4 V7 `  I/ C
}; E8 l- U7 n# O" m
9 Y3 @3 I4 p7 X6 f
void Get_ADCVal(void)& P5 Z9 \2 Z' [$ B
{  , j0 P+ i2 C- T% l) f; B
  uint8_t  i;  * {5 j* @3 J% W# f% j) _5 J
0 A" `2 o2 e6 A- i( l# a4 J3 j
  if (HAL_ADC_Start(&hadc) != HAL_OK)  1 q& k, j  x* z% G) \5 B
  {    + o0 q; W( L% o+ ?! Y
    _Error_Handler(__FILE__, __LINE__);  
; y! T' d7 U/ N4 X# i  }  0 P9 I, `! z  F, M# S
) P. m- Z: M/ d
  for ( i=0;  i<3;  i++ )   
; _) U/ }+ J: w& u  {    ' F4 s( `" N# a
    if (HAL_ADC_PollForConversion(&hadc, 20) != HAL_OK)    9 O: j! K5 Y3 a$ P3 Y  h
       _Error_Handler(__FILE__, __LINE__);   // ********** 当 i 递增到2时,程序执行死在这里!!!!!!!!!!    2 }; ~7 |, h1 {
    else    ' |/ ?+ c8 a- w$ j2 g
      ADCValue[i = HAL_ADC_GetValue(&hadc);   
6 p+ @! H3 ?! n1 m6 L: y( ]  }, V. I; ]0 {: @
    // HAL_ADC_Stop(&hadc);
4 w, a- U+ H; L* V}
收藏 评论0 发布时间:2019-12-31 14:02

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版