
抽空测试了一下C031的ADC,使用电位器,一端接3.3V,一端接GND,中间端接PA4,AD采样端,连接如图1所示:![]() 图1 功能就是每实现一次转换,闪一下LED。还是先从配置Cubemx开始,配置如图2所示: ![]() 图2 配置完后,说明基本软件已经搭建好,然后参考SDK中的DEMO,修改了一下程序,查一下handler函数中是否调用了callback函数,一切OK后,部分代码如下所示: ``` /* Perform ADC calibration */ if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK) { /* Calibration Error */ Error_Handler(); } /* Start ADC group regular conversion */ /* Note: First start with DMA transfer initialization, following ones with basic ADC start. */ if (HAL_ADC_Start_DMA(&hadc1, (uint32_t *)uhADCxConvertedData, 1U //ADC_CONVERTED_DATA_BUFFER_SIZE ) != HAL_OK) { /* Error: ADC conversion start could not be performed */ Error_Handler(); } ``` 这部分是while之前需要定义的,while中修改如下: ``` if (HAL_ADC_Start_DMA(&hadc1, (uint32_t *)uhADCxConvertedData, 1U //ADC_CONVERTED_DATA_BUFFER_SIZE ) != HAL_OK) { /* Error: ADC conversion start could not be performed */ Error_Handler(); } HAL_Delay(1000); /* 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); ubDmaTransferStatus = 0; HAL_GPIO_TogglePin (GPIOA,GPIO_PIN_5); HAL_Delay(100); /* Delay to highlight toggle sequence */ ``` 测试结果如图3所示: ![]() 图3 旋转电位器,使用万用表测试了一下电位器输出分压,误差范围内基本和计算值一致。 |
有奖直播 | 超性价比入门级MCU:STM32C0全新子产品线深度解读
【STM32峰会观看直播获奖】晒奖品
STM32C071RB外部中断控制小灯点亮熄灭
STM32C071RB实现串口收发功能
【STM32C071RBT6测评】——PWM输出测试:实现一个呼吸灯
NUCLEO-C071RB评测7_UART不定长数据收发的再测试
【STM32C0评测】C071:USB的使用
【STM32C0评测】C071:IIC的使用
NUCLEO-C071RB评测6_四种工作模式的功耗测试
【STM32C0评测】GPIO测试:使用外部中断控制小灯点亮熄灭