抽空测试了一下C031的ADC,使用电位器,一端接3.3V,一端接GND,中间端接PA4,AD采样端,连接如图1所示: 5 P$ b/ v! \7 B3 z% J- | f+ a1 A0 P. \4 n# E 图1 , k+ V/ Y9 V0 [0 k5 M6 A% e8 s 功能就是每实现一次转换,闪一下LED。还是先从配置Cubemx开始,配置如图2所示: ( R' _: V3 ?* V* l) S' e. J 图2 配置完后,说明基本软件已经搭建好,然后参考SDK中的DEMO,修改了一下程序,查一下handler函数中是否调用了callback函数,一切OK后,部分代码如下所示:5 o& D3 d6 T* d2 ]: [ ```1 `+ H6 w- R6 J* c9 n/ C! |* {+ k! e /* Perform ADC calibration */" n$ N" q; a4 ~( r c9 M if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)0 ?; q3 q6 s6 [# j. E {! C; a# n$ ~; `3 _( C7 Q. a0 l5 T, I0 W% b /* Calibration Error */ Error_Handler();8 b( J6 y/ C ^( g } 7 D) q% [0 W& j* U, M /* Start ADC group regular conversion */ /* Note: First start with DMA transfer initialization, following ones* s) ?6 g1 F2 |: b: G with basic ADC start. */ if (HAL_ADC_Start_DMA(&hadc1,, H6 H' \* n2 ] (uint32_t *)uhADCxConvertedData,/ E3 h6 G$ b' D0 R. \8 B" J 1U //ADC_CONVERTED_DATA_BUFFER_SIZE+ `" Y- f1 }8 o0 k ) != HAL_OK) { /* Error: ADC conversion start could not be performed */ Error_Handler();& h; |/ B8 Z% m- ] d! z2 i }0 s# s' M/ b% X ``` / b' m) E1 n& s: z 这部分是while之前需要定义的,while中修改如下: ```& b# y2 N) X/ F( y4 M( D if (HAL_ADC_Start_DMA(&hadc1," c) u1 s" V! a: ?' _ (uint32_t *)uhADCxConvertedData, 1U //ADC_CONVERTED_DATA_BUFFER_SIZE6 O6 d/ |0 K1 A4 r/ F* e+ A) ` ) != HAL_OK); O: G3 r6 q" k: d) P; ] { r4 U. t5 b: _0 b6 {! T# | /* Error: ADC conversion start could not be performed */2 O. m' _+ N* o# N- @3 O Error_Handler(); } HAL_Delay(1000); /* If ADC conversions and DMA transfer are completed, then process data */ if(ubDmaTransferStatus == 1) { uhADCxConvertedData_VoltageGPIO_mVolt = __LL_ADC_CALC_DATA_TO_VOLTAGE(3300U, uhADCxConvertedData[0], LL_ADC_RESOLUTION_12B); E2 g2 j4 _! m$ l 9 K$ Q1 b' \% e6 c ubDmaTransferStatus = 0;0 m% n* Y" s2 \* T HAL_GPIO_TogglePin (GPIOA,GPIO_PIN_5);- H& x2 V) u A K- \ HAL_Delay(100); /* Delay to highlight toggle sequence */9 ~3 k K* C4 ] ``` / T& `* N$ m; d 测试结果如图3所示:; v( K+ ]3 H) S0 X( n 图3 ' K) b( g) q9 h; B0 G7 D 旋转电位器,使用万用表测试了一下电位器输出分压,误差范围内基本和计算值一致。' [& _2 Q7 S. G |
狂欢三】STM32C031使用TIM定时器DMA方式实现WS2812彩灯输出(三)
【狂欢三】STM32C031使用TIM定时器DMA方式实现PWM输出(二)
【狂欢三】STM32C031使用TIM定时器PWM输出
有奖直播 | 详解最新入门级32位MCU-STM32C071
新品STM32C071不简单,高达128KB闪存和24KB RAM,让成本5美元的图显系统也拥有丝滑GUI!
【STM32C0评测】追光小实验
【NUCLEO-C0评测】硬件OLED显示
【Stm32C0测评】学习PWM比较实现呼吸灯
【STM32C0测评】外部中断控制小灯
【STM32C0评测】3、基于Nucleo-c031c6开发板的MAX6675温度采集实验