你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32C031评测】3.可调电阻的ADC+DMA

[复制链接]
jundao721 发布时间:2024-3-21 22:16
抽空测试了一下C031的ADC,使用电位器,一端接3.3V,一端接GND,中间端接PA4,AD采样端,连接如图1所示:

3-1.jpg

图1

功能就是每实现一次转换,闪一下LED。还是先从配置Cubemx开始,配置如图2所示:

3-3.JPG

图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-2.JPG )

图3

旋转电位器,使用万用表测试了一下电位器输出分压,误差范围内基本和计算值一致。
收藏 评论0 发布时间:2024-3-21 22:16

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版