STM32F030 ADC采样序列中包括IN0,IN1,IN2三个通道,采用单次转换模式,软件触发启动,但是发现采样转换到最后一个通道IN2时,EOC不会置位,程序进入超时状态。有哪位朋友碰到过此问题?6 s0 d! c0 V6 d( L0 y, d# ~ r 主要代码如下: uint16_t ADCValue[3; void MX_ADC_Init(void) { ADC_ChannelConfTypeDef sConfig; X) C; f" A5 f hadc.Instance = ADC1; hadc.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1; hadc.Init.Resolution = ADC_RESOLUTION_12B; 4 [6 ^5 [8 g- s* I hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD; / |$ Q0 k0 U# r/ W# m C hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV; hadc.Init.LowPowerAutoWait = DISABLE; hadc.Init.LowPowerAutoPowerOff = DISABLE; 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; hadc.Init.DMAContinuousRequests = DISABLE; hadc.Init.Overrun = ADC_OVR_DATA_PRESERVED; 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 } 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; if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK) {, 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; 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__); } sConfig.Channel = ADC_CHANNEL_2; : _7 w# x$ V8 @$ c, U% L4 A if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); }( 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__); } 0 P9 I, `! z F, M# S ) P. m- Z: M/ d for ( i=0; i<3; i++ ) { ' 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); }, V. I; ]0 {: @ // HAL_ADC_Stop(&hadc); } |
STM32固件库分享,超全系列整理
三创电子(Tcreate)-STM32F030核心板代码
STM32F0 ADC(DMA中断)多通道,注释超详细
FreeRTOS在STM32F030上的移植
基于STM32移植而引发的疑问经验分享
分享STM32F051中文参考手册(重制书签版)
游名:STM32F0+Trinamic智能步进驱动芯片TMC5160(最高20A)参考原...
【MCU实战经验】+STM32F030的步进电机加减速
STM32F0的中文技术参考手册(标签处理过)
基于STM32F030硬件SPI经验分享