|
抽空测试了一下C031的ADC,使用电位器,一端接3.3V,一端接GND,中间端接PA4,AD采样端,连接如图1所示:% `4 G9 B% I8 Q. [ 9 X( r D% q, g) k9 t" d
$ @; |2 K E7 E4 ]- l+ I/ f9 s 图1 功能就是每实现一次转换,闪一下LED。还是先从配置Cubemx开始,配置如图2所示: U6 v* E1 j0 o
1 V0 B# W% t/ Q9 R 图2& i, K' o" U' U' w7 X: O V/ a' W & a: t1 f; ?' N! |/ t 配置完后,说明基本软件已经搭建好,然后参考SDK中的DEMO,修改了一下程序,查一下handler函数中是否调用了callback函数,一切OK后,部分代码如下所示:( ]& i1 o/ k% ?" ]0 d ```! p9 y1 Z) g3 Z /* Perform ADC calibration *// l- ? @. |+ e' t$ L! o9 L( e if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK) { /* Calibration Error */& b: F, y2 {- V$ W* i( g8 f+ o, L c+ W: p Error_Handler();3 f1 B, | M: h6 q/ j }; ^% c4 [# c) F' ~- F( x/ B# S /* Start ADC group regular conversion */ /* Note: First start with DMA transfer initialization, following ones ]$ t+ s; N: W; | with basic ADC start. */ if (HAL_ADC_Start_DMA(&hadc1,7 l$ s. M+ A9 T$ K% ] (uint32_t *)uhADCxConvertedData, 1U //ADC_CONVERTED_DATA_BUFFER_SIZE8 k/ b* P0 v" a/ t* l ) != HAL_OK)- K! m3 Q) S8 Y; Y/ b { /* Error: ADC conversion start could not be performed */* Q! U; H: n' G5 y! i; n% G Error_Handler(); } ``` 这部分是while之前需要定义的,while中修改如下:4 U% {+ R/ b/ o( x! k & Z% R8 Y5 X( z+ r ```9 b. Z" a4 `- _/ _& u; O& c0 W if (HAL_ADC_Start_DMA(&hadc1,2 q I' L0 _6 d. m! q (uint32_t *)uhADCxConvertedData,! ^" [0 d, i8 H' _' e! t# g 1U //ADC_CONVERTED_DATA_BUFFER_SIZE" K" u* E! P! m7 F" }& d( F* ~ ) != HAL_OK) _8 _. i- j* y2 h8 R$ u% u {7 U, {4 `6 C. T' u4 h- g3 C /* Error: ADC conversion start could not be performed */ Error_Handler();* [& h, z4 P9 s' w" S } HAL_Delay(1000); /* If ADC conversions and DMA transfer are completed, then process data */. j) ~6 z1 ]! e* V( R! o( W+ E if(ubDmaTransferStatus == 1) {1 W( W) }% V( W3 y uhADCxConvertedData_VoltageGPIO_mVolt = __LL_ADC_CALC_DATA_TO_VOLTAGE(3300U, uhADCxConvertedData[0], LL_ADC_RESOLUTION_12B); ubDmaTransferStatus = 0;. j& } o6 Z$ s( m ( g) Q" D0 [% H$ X( D HAL_GPIO_TogglePin (GPIOA,GPIO_PIN_5); p7 W% p6 `! Y* r7 A+ m ^, ^" l* b HAL_Delay(100); /* Delay to highlight toggle sequence */ ``` 测试结果如图3所示:- d' J1 {! e5 c 1 \+ x* i# i& b+ D2 e# H/ Q( u
图3' s4 K6 t) W, V( ^1 v' ^" ` 旋转电位器,使用万用表测试了一下电位器输出分压,误差范围内基本和计算值一致。: i+ v2 S. B: A$ I |
【STM32C0评测】C071:USB的使用
【STM32C0评测】4、驱动Lorasx126x,实现透传
STM32C0 × HDSMART弘大智控解锁旋钮式智能控制器,开启人机交互新体验
基于编码器信号的PWM输出示例
【新品发布】STM32C0 三大子产品线齐发,精准适配价格敏感应用(文末有奖)
有奖直播 | 超性价比入门级MCU:STM32C0全新子产品线深度解读
【STM32C0测评】Nucleo-C092开发板驱动DS1302实验
【STM32峰会观看直播获奖】晒奖品
STM32C071RB外部中断控制小灯点亮熄灭
STM32C071RB实现串口收发功能
微信公众号
手机版