
抽空测试了一下C031的ADC,使用电位器,一端接3.3V,一端接GND,中间端接PA4,AD采样端,连接如图1所示:![]() 图1 ' i7 L" ^. h- F8 B$ u6 y' N 功能就是每实现一次转换,闪一下LED。还是先从配置Cubemx开始,配置如图2所示: Y/ p S1 c8 v( ? ![]() 4 p" x1 m# C, n4 m# p 图24 D# ~$ I8 f( M3 a1 z0 z1 Q 配置完后,说明基本软件已经搭建好,然后参考SDK中的DEMO,修改了一下程序,查一下handler函数中是否调用了callback函数,一切OK后,部分代码如下所示: ``` /* Perform ADC calibration */: K- {4 C3 D6 |" E if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)1 ^0 d+ _) K/ o- M, E# ` {3 U$ l1 j! W. M* B' R* a /* Calibration Error */9 c2 A3 E+ e/ Y \1 }% S( w Error_Handler();9 N9 U) W6 w0 x3 s; l6 m; |+ y }* l/ |. {2 R) c" p% v6 Z /* Start ADC group regular conversion *// @4 u% t n9 r /* Note: First start with DMA transfer initialization, following ones with basic ADC start. */ if (HAL_ADC_Start_DMA(&hadc1,2 T; }3 p) M; g- p0 P7 x" @ (uint32_t *)uhADCxConvertedData,* X7 O7 S8 c5 m" U( ` 1U //ADC_CONVERTED_DATA_BUFFER_SIZE$ h; B p3 x; Y, l ) != HAL_OK) { /* Error: ADC conversion start could not be performed */ Error_Handler();; J4 Y; z5 |* [% { }8 x0 A$ e3 H3 z) `. r ```! s; s9 z' S: w! g 8 ]% g7 L) O. _' \+ j* R- [3 j 这部分是while之前需要定义的,while中修改如下:: ^) v+ b6 J7 N9 u$ f( | ( o0 I! c& x# o4 s) a& z ```( s" M) D5 x! E) A* [% o) z if (HAL_ADC_Start_DMA(&hadc1, (uint32_t *)uhADCxConvertedData, 1U //ADC_CONVERTED_DATA_BUFFER_SIZE ) != HAL_OK)0 g7 w/ ^; t$ [ { /* Error: ADC conversion start could not be performed */ Error_Handler();, z+ [3 j! G# q+ t2 H* F; t8 Z3 A( B } HAL_Delay(1000);5 ~# @" s6 B" i# L$ S7 a$ k& y /* If ADC conversions and DMA transfer are completed, then process data */ if(ubDmaTransferStatus == 1)" j; d2 K) z4 ` {% Q2 H" G' h* \: G V: G a1 o9 Q7 Z2 W; ` uhADCxConvertedData_VoltageGPIO_mVolt = __LL_ADC_CALC_DATA_TO_VOLTAGE(3300U, uhADCxConvertedData[0], LL_ADC_RESOLUTION_12B); ' x$ q, m* r3 ~ ubDmaTransferStatus = 0; " `% @0 H( I* m HAL_GPIO_TogglePin (GPIOA,GPIO_PIN_5);5 g; V) k2 _$ O8 W HAL_Delay(100); /* Delay to highlight toggle sequence */9 s2 k. r' Q& a7 x3 f& Z0 ?# p6 h, g ``` " k! R H1 A( b; |1 f4 o9 @ 测试结果如图3所示:$ i/ a! J0 u& ~; o( y. ^, j+ k $ W: x7 q0 l( h! p ![]() 图3 , _* I$ y- [; C" z$ ^0 q0 q- G 旋转电位器,使用万用表测试了一下电位器输出分压,误差范围内基本和计算值一致。 |
【新品发布】STM32C0 三大子产品线齐发,精准适配价格敏感应用(文末有奖)
STM32电路知识学习
STM32C031芯片串口的Modbus特性
NUCLEO-C031C6开发板测试7——硬件SPI驱动TFT彩屏显示
NUCLEO-C031C6开发板测试6——驱动TFT彩屏显示
NUCLEO-C031C6开发板测试4——串口通讯测试
NUCLEO-C031C6开发板测试4——I2C驱动日历时钟芯片
STM32C09x和STM32C051:工业应用性价比优化的关键选择
STM32怎么选型
STM32C031芯片串口的Modbus特性