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

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

[复制链接]
shaodong-350471 发布时间:2019-12-31 14:02
STM32F030 ADC采样序列中包括IN0,IN1,IN2三个通道,采用单次转换模式,软件触发启动,但是发现采样转换到最后一个通道IN2时,EOC不会置位,程序进入超时状态。有哪位朋友碰到过此问题?6 z- V" t) n9 _! d6 _0 X
主要代码如下:
7 A1 H1 c5 y2 s" d# }
5 c6 P( A: v. e$ v5 U* Yuint16_t  ADCValue[3;+ n( L$ l" Z/ |- D0 R, }( }
void MX_ADC_Init(void)
  X! S: W! c9 x; ^: O! W- U/ ?# j9 e{  
3 n8 ~2 K3 }0 |. a5 ^  ADC_ChannelConfTypeDef sConfig;  2 c* d. Y# V7 w  X- r! a" C; v
  hadc.Instance = ADC1;  2 u# @) G! f+ E" {
  hadc.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;  
- D) _  M4 i0 P1 K% Q1 O1 ~1 _) f  hadc.Init.Resolution = ADC_RESOLUTION_12B;  ) H) A6 [; K1 p. T, f
  hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT;  # @  V5 A3 J  i8 _9 I
  hadc.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD;  ( _* n4 W. T8 h1 O7 x" p  u
  hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV;  4 W( _  T( \% s5 d0 \' _
  hadc.Init.LowPowerAutoWait = DISABLE;  ; E9 f9 {" |) b$ \% _
  hadc.Init.LowPowerAutoPowerOff = DISABLE;  # q9 T+ Q& P: I: k* U0 U8 h
  hadc.Init.ContinuousConvMode = DISABLE;  % @7 j- {2 L% U: \/ i. U4 r2 `7 S: i
  hadc.Init.DiscontinuousConvMode = DISABLE;  
6 E# v4 J6 ]- [2 M0 n& E
  hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START;  3 B5 m6 H" n# D5 [2 Y0 ]; x3 T
  hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;  
8 e, V7 z/ c* s; V- N1 u, Y& A6 ~  hadc.Init.DMAContinuousRequests = DISABLE;  
9 F- ?- q& h* \  g" a  [  hadc.Init.Overrun = ADC_OVR_DATA_PRESERVED;  6 y$ ]! b) H, n2 ?4 m3 w
  if (HAL_ADC_Init(&hadc) != HAL_OK)  + ~3 y( ^2 n/ a5 ]9 E
  {    6 l$ A: q" l. y) s
    _Error_Handler(__FILE__, __LINE__);  : K- b6 b/ J- I7 v: J- D$ T
  }  
1 t% a/ b! k- o$ T, e
1 w$ u: p! u: G  sConfig.Channel = ADC_CHANNEL_0;  & Z& L# S8 l$ [/ U
  sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;  ! ~9 G' ]7 G6 r3 A9 c
  sConfig.SamplingTime = ADC_SAMPLETIME_7CYCLES_5;  / L, Z# S7 z# b, G1 \
  if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)  
# w, _" y- H7 L7 [, o6 W: Z  o  {$ t: r. b: o' a% m3 o
    _Error_Handler(__FILE__, __LINE__);  ( g/ b; u  H! T3 j4 y0 _5 E
  }  ! R) O" e# W4 X6 S' W# L! B3 _

2 Q$ Z) P" `$ u% ]! @1 \  c  sConfig.Channel = ADC_CHANNEL_1;  ; R" Z" H4 N3 }$ n/ t
  if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)  
/ ^+ l1 L+ V/ Z/ s; j  {
, O( z- h' K5 k3 |5 b1 x3 P9 R    _Error_Handler(__FILE__, __LINE__);  
4 e5 T; y# O- T  }  
; Z% g- W- p0 S) S2 N0 Q" B7 v) M2 D# p; [4 A
  sConfig.Channel = ADC_CHANNEL_2;  
& R, b/ d$ S, u  if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)  6 Y+ D7 w0 S4 T! S  Z. Q
  {) }' C9 s. C! g+ H$ T7 a6 }
    _Error_Handler(__FILE__, __LINE__);  
$ R, z2 }. |7 y4 C+ y3 A; A% A- e# f  }9 [( p* a+ ~. o% K6 I+ {4 k: W, {
}3 z6 z8 ^  @% x7 w- w: v  H1 J1 q
( @4 G" n) s8 V5 b/ l- U3 R; V
void Get_ADCVal(void)
8 I8 r( `* M8 D# l{  
( b: Y7 |4 [8 j! y. Y; J  uint8_t  i;  - b) ^, b+ `. r3 G
8 F3 U: S2 H; \# {* ^: Z$ y7 r" C
  if (HAL_ADC_Start(&hadc) != HAL_OK)  
2 Q- C! ~/ T( I' T1 K! n, u$ s% ^  {   
3 ~8 S! p- o0 S6 [$ c, w. L2 z    _Error_Handler(__FILE__, __LINE__);  % k. a3 n; w# x, T7 F* k0 V& l
  }  " J+ Y) }7 C1 u2 J9 p) z

- I! Y6 r! r, ~1 y/ K6 G# i  for ( i=0;  i<3;  i++ )   
, u' l" a& |) D7 r1 T  {   
1 O/ D0 Q# E% D8 n. K3 C    if (HAL_ADC_PollForConversion(&hadc, 20) != HAL_OK)   
! d/ w1 a6 e! A8 y       _Error_Handler(__FILE__, __LINE__);   // ********** 当 i 递增到2时,程序执行死在这里!!!!!!!!!!    + _1 i. W, i+ p$ n6 a1 p5 N7 ~+ `
    else    5 w  v4 d* i9 l# W
      ADCValue[i = HAL_ADC_GetValue(&hadc);    ! G3 d; e: q5 ^$ r* J; t/ p
  }
0 S! L3 J2 W+ `/ A# C( p2 @$ p    // HAL_ADC_Stop(&hadc);
$ `2 I/ A: E# Q: ~- ~( h) b}
收藏 评论0 发布时间:2019-12-31 14:02

举报

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