抽空测试了一下C031的ADC,使用电位器,一端接3.3V,一端接GND,中间端接PA4,AD采样端,连接如图1所示: 0 Z3 e# \( Q) o/ Q; K( r; \ 图1 . p% C0 ?" S) f. T3 x5 F 功能就是每实现一次转换,闪一下LED。还是先从配置Cubemx开始,配置如图2所示:# e, a- E1 ~% D/ K- Y8 G2 W # A* {* ?$ ~) E! s8 | 图28 {& W5 T9 Z( F0 a( m: N 配置完后,说明基本软件已经搭建好,然后参考SDK中的DEMO,修改了一下程序,查一下handler函数中是否调用了callback函数,一切OK后,部分代码如下所示:4 o, ~2 r" Y# k" _ ``` /* Perform ADC calibration */! i2 _6 E' A" T4 X+ ] if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)9 B+ o6 M7 _* x7 O0 M {: v( v V; `6 P /* Calibration Error */+ \& D( I* z" b) h Error_Handler();4 E8 t& g' L0 B. o- s! e) f }+ @. \% F/ j* o, d0 [ /* Start ADC group regular conversion */, F' R) I; O4 \0 c; J' M /* Note: First start with DMA transfer initialization, following ones+ x7 E* D7 n5 S8 \. S( M with basic ADC start. */ if (HAL_ADC_Start_DMA(&hadc1,' I0 y) l+ b9 i (uint32_t *)uhADCxConvertedData, 1U //ADC_CONVERTED_DATA_BUFFER_SIZE" j. N4 Y3 c6 \ ) != HAL_OK) { /* Error: ADC conversion start could not be performed */1 f: E6 g3 R5 ~9 j1 s Error_Handler();+ @. u9 ~; W4 L c3 D } ``` + K7 u6 p4 i, R. f* r { 这部分是while之前需要定义的,while中修改如下:; i! M: A. L- g# C5 m 9 o3 F1 I& s- i% n ```9 u# `: D9 O! [9 Y' x: I' R8 _ if (HAL_ADC_Start_DMA(&hadc1, (uint32_t *)uhADCxConvertedData, 1U //ADC_CONVERTED_DATA_BUFFER_SIZE; v, K0 q; R9 O: |! ], _ K ) != HAL_OK); z0 f8 }% x5 B+ X | {& E) o6 l, o g/ q! p /* Error: ADC conversion start could not be performed */3 Z/ n2 W8 Y% A Error_Handler();# T: g. e0 a. _ } HAL_Delay(1000);1 g4 _% Y2 t; l6 Z: f4 a9 L /* If ADC conversions and DMA transfer are completed, then process data */ if(ubDmaTransferStatus == 1)" j" V; L* r# e B% T3 _$ {9 u* K { 9 n7 M9 n/ S: N* v3 E9 | uhADCxConvertedData_VoltageGPIO_mVolt = __LL_ADC_CALC_DATA_TO_VOLTAGE(3300U, uhADCxConvertedData[0], LL_ADC_RESOLUTION_12B);* T+ I& f8 w' C ubDmaTransferStatus = 0;1 C3 Z# f9 U. \3 u2 p HAL_GPIO_TogglePin (GPIOA,GPIO_PIN_5);: q2 P* ]' m4 t1 W( A5 X' o HAL_Delay(100); /* Delay to highlight toggle sequence */ ```$ B. s2 @# [0 w+ m7 F! R 测试结果如图3所示: $ S+ \# C( d: L: Y ' t" ?$ o; i) L( q 图3 ( p9 Y. t7 a8 C$ _5 z" ~ 旋转电位器,使用万用表测试了一下电位器输出分压,误差范围内基本和计算值一致。4 Y7 U* ?3 K Y3 y0 X8 T6 r2 D |
【NUCLEO-C0评测】硬件OLED显示
【Stm32C0测评】学习PWM比较实现呼吸灯
【STM32C0测评】外部中断控制小灯
【STM32C0评测】3、基于Nucleo-c031c6开发板的MAX6675温度采集实验
【STM32C031 评测】ADC采样测试
【STM32C0评测】5、娱乐一下,分享2048游戏
【STM32C0评测】4、驱动Lorasx126x,实现透传
【NUCLEO-C031C6】FOC开环测试
【NUCLEO-C031C6】 FOC开环控制
【STM32C031 评测】基于spi接口驱动OLED显示测试