
抽空测试了一下C031的ADC,使用电位器,一端接3.3V,一端接GND,中间端接PA4,AD采样端,连接如图1所示:- v5 i& E( k9 z9 L' [![]() * v I4 [% J$ k, k. q- R/ r( {; f, e 图1 功能就是每实现一次转换,闪一下LED。还是先从配置Cubemx开始,配置如图2所示:( ]" M0 f7 E) ]) f1 V ![]() % y' n* T% T5 K( |8 ^ 图2 配置完后,说明基本软件已经搭建好,然后参考SDK中的DEMO,修改了一下程序,查一下handler函数中是否调用了callback函数,一切OK后,部分代码如下所示: ``` /* Perform ADC calibration */) P* z4 ]! }6 j0 P if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK) { /* Calibration Error */ Error_Handler(); }1 ?# n* ?( \; Z, Z4 q & }: `$ N# l( C7 |5 o6 y4 G1 m9 r+ O& W /* Start ADC group regular conversion */ /* Note: First start with DMA transfer initialization, following ones7 ]7 [% A0 S9 P1 T- `! Q8 U: x$ A4 ` with basic ADC start. */# r! L/ j7 o2 r2 k1 C( k3 k if (HAL_ADC_Start_DMA(&hadc1,, U p. f1 a& ~) _. F& j/ Q (uint32_t *)uhADCxConvertedData,% [5 l) H' ?& n8 b$ P, h 1U //ADC_CONVERTED_DATA_BUFFER_SIZE+ S) R$ h0 `& Y( Z# f l ) != HAL_OK) {: N7 {) j& F3 {. J9 |0 ^ /* Error: ADC conversion start could not be performed */# }8 a1 _( g) f Error_Handler(); }4 v! _' c [7 }" P, _! `, \ ```6 N, u0 `& L, {( o- O8 U6 d: T' n$ G+ D & k. ]( f3 `" L 这部分是while之前需要定义的,while中修改如下:5 |7 ~0 C2 {" s. l* m# O: d6 ?1 d3 s 2 O( @* h8 G6 \ G/ R/ y: L- l6 a, P ```" \, g2 \" G2 ~+ \2 ~' Q( X" }1 K if (HAL_ADC_Start_DMA(&hadc1,0 q2 |- J s9 t2 {1 y" s& o (uint32_t *)uhADCxConvertedData, 1U //ADC_CONVERTED_DATA_BUFFER_SIZE ) != HAL_OK)2 q1 {& A* `/ z! W2 g" u { /* Error: ADC conversion start could not be performed */ Error_Handler(); }& _* U6 F4 `' O HAL_Delay(1000); /* If ADC conversions and DMA transfer are completed, then process data */$ O0 X0 c" E7 w2 M$ O5 V1 y if(ubDmaTransferStatus == 1) {% ^9 U3 P- G1 D- U9 B4 ~ uhADCxConvertedData_VoltageGPIO_mVolt = __LL_ADC_CALC_DATA_TO_VOLTAGE(3300U, uhADCxConvertedData[0], LL_ADC_RESOLUTION_12B); ' n! w& ~9 `6 O! P- i6 _0 U ubDmaTransferStatus = 0; HAL_GPIO_TogglePin (GPIOA,GPIO_PIN_5); HAL_Delay(100); /* Delay to highlight toggle sequence */ ``` " W0 S/ |" u# g0 L) z6 o& i 测试结果如图3所示: ![]() & P) m0 Y2 ^. D7 c! Z; u4 {' D 图3: V6 _2 G6 E2 F7 c; h9 w & u' h5 ], `6 I- f4 e 旋转电位器,使用万用表测试了一下电位器输出分压,误差范围内基本和计算值一致。 |
【STM32C0评测】C071:USB的使用
【STM32C0评测】C071:IIC的使用
NUCLEO-C071RB评测6_四种工作模式的功耗测试
【STM32C0评测】GPIO测试:使用外部中断控制小灯点亮熄灭
【STM32C0评测】+NUCLEO-C071 UART测试
NUCLEO-C071RB评测5_I2C通讯测试
【STM32C0评测】C071:加个PWM
NUCLEO-C071RB评测1_GPIO测试
【STM32C0评测】C071:GPIO+定时器+串口
STM32C0评测】C071开箱