
抽空测试了一下C031的ADC,使用电位器,一端接3.3V,一端接GND,中间端接PA4,AD采样端,连接如图1所示:![]() 0 E- ], _( @# Z5 f F 图1 9 f# j. n- p; v' a6 M 功能就是每实现一次转换,闪一下LED。还是先从配置Cubemx开始,配置如图2所示:% X* C8 w- W3 L- i+ `! b7 h7 U 2 ]. ^0 L" u. x% b% h# K ![]() 图2 ! _7 ^8 g4 l6 J8 D 配置完后,说明基本软件已经搭建好,然后参考SDK中的DEMO,修改了一下程序,查一下handler函数中是否调用了callback函数,一切OK后,部分代码如下所示:) G: N+ ?3 c- T( U ; @* i1 L* [& X$ x5 v( D9 l ``` /* Perform ADC calibration */& [9 R3 X. Z; i( J8 M if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)" f& c- Y. L! e: {6 `" I& A { /* Calibration Error */+ n8 n5 |# T, }& u; [ Error_Handler(); } 2 }# K& s$ H# ~ }$ H1 b /* Start ADC group regular conversion */ /* Note: First start with DMA transfer initialization, following ones9 M/ X: c3 s# D( n9 m2 R with basic ADC start. */% S( ?! p- }# i1 ]3 w, N if (HAL_ADC_Start_DMA(&hadc1, (uint32_t *)uhADCxConvertedData,4 T' Q0 I0 [) \( i. t4 Z 1U //ADC_CONVERTED_DATA_BUFFER_SIZE) F! ?& { q# t v1 \4 M ) != HAL_OK)9 ]3 k4 s' `( S) ?/ R1 S0 O {5 n* [4 S" ^% X: s2 w3 v /* Error: ADC conversion start could not be performed */! v1 t8 c. O$ Z& B2 S$ l6 z Error_Handler(); } ``` 这部分是while之前需要定义的,while中修改如下:/ D7 B' \8 h8 Y! z 9 A/ R* m4 _0 c9 g6 m( ~ ``` if (HAL_ADC_Start_DMA(&hadc1,! O& m# H) W: G (uint32_t *)uhADCxConvertedData, 1U //ADC_CONVERTED_DATA_BUFFER_SIZE ) != HAL_OK)' e; K+ I0 c. T2 R8 |! h1 w { /* Error: ADC conversion start could not be performed */ Error_Handler(); }+ w! h- I: R; I- `4 \ HAL_Delay(1000);5 l$ g8 Z' c4 {4 E$ }7 [: Y. J+ x /* 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);. h: ~1 i: }& b* Q% Q ubDmaTransferStatus = 0; HAL_GPIO_TogglePin (GPIOA,GPIO_PIN_5);, p" z5 M/ X. _; W# T HAL_Delay(100); /* Delay to highlight toggle sequence */ ```/ a/ X# ^& Q$ g# z" `! y 8 @4 K/ W- V- y1 L$ E 测试结果如图3所示:" G" d* T, S# h6 {) e7 f ![]() 图3 & k3 E' N; P$ U0 B" V 旋转电位器,使用万用表测试了一下电位器输出分压,误差范围内基本和计算值一致。) g# E' y% w$ `! c |
【新品发布】STM32C0 三大子产品线齐发,精准适配价格敏感应用(文末有奖)
STM32怎么选型
STM32C031芯片串口的Modbus特性
狂欢三】STM32C031使用TIM定时器DMA方式实现WS2812彩灯输出(三)
【狂欢三】STM32C031使用TIM定时器DMA方式实现PWM输出(二)
【狂欢三】STM32C031使用TIM定时器PWM输出
有奖直播 | 详解最新入门级32位MCU-STM32C071
新品STM32C071不简单,高达128KB闪存和24KB RAM,让成本5美元的图显系统也拥有丝滑GUI!
【STM32C0评测】追光小实验
【NUCLEO-C0评测】硬件OLED显示