STM32 CubeMX学习实验9:ADC读取电压值

一、工程配置

打开工程,在Analog中选择ADC1,选择ADC通道(PC3),配置信息如下:

 为了保证ADC转换的准确度,ADC时钟不能超过36MHz,在Clock Prescaler选项中只能选择4分频(84/4=21)及以上,这里选择4分频。分辨率选择12位精度(0-4095),采样时间15个ADC时钟周期。数据对齐方式选择右对齐,如果选择左对齐的方式,需要将得到的数据向右移4位才能得到正确的数据,具体为什么这样可以参考ADC数据存储:左对齐和右对齐 | 风逍遥 (hyxhe.com)icon-default.png?t=N7T8https://www.hyxhe.com/archives/a1f79e07.html

 触发方式选择软件触发,手动开启采集,采样时间越大精度越高,转换就会越慢,这里选择480个周期。

二、代码编写

生成工程代码,直接在主函数中加入开启转换和读取数据即可:

int main(void)
{
  /* USER CODE BEGIN 1 */
    
  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_USART1_UART_Init();
  MX_ADC1_Init();
  /* USER CODE BEGIN 2 */
  
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
      HAL_ADC_Start(&hadc1);//开启转换
      HAL_Delay(10);//等待一段时间
      printf("%f\r\n",(float)HAL_ADC_GetValue(&hadc1)/4096*3.3);//串口输出
  }
  /* USER CODE END 3 */
}

先开启ADC转换,等待一段时间,将数据转换成电压值输出,可以在上位机上看到输出数据,这里使用了SerialChart_v034软件绘制电压曲线图。

三、实验现象

曲线的变化使用电位计来改变。 

下期学习ADC多通道采集和内部温度传感器数据读取。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
示波器相信大家都知道了,在设备的连接汇总,通过示波器判断设备的连接方式,检测设备的兼容性等都是非常重要的,这款ComDigitalScopeV100串口示波器软件功能丰富,是一款集硬件设备的检测与串口的连接,查看各种示波器的变化数据,支持恢复,暂停,移动,调焦,放大,缩小, X 轴调节,Y 轴调节等功能于一体的工具,有需要的用户千万不要错过哦。 ComDigitalScopeV100是一款功能丰富的串口示波器软件,该软件主要您可以将示波器的图像调整到适应您浏览大小的比例,也可以直接缩放到最大化,方便您观察不同数据段的波形变化。 本程序在相应硬件(如USB转TTL,高速RS232等)支持下能够进行串口高速数据采集,并使数据在PC机上实时图形显示。 正常操作时,点击START按钮,打开串口接收功能,软件将从串口接收到的数据实时图形化显示。 下位机只要按照说明书的格式通过串口向上发送数据,上位机即可将接收到的数据显示成为波形,有AA55,CRC,SUM的数据校验方式。 当下位机持续向上位机发送满足要求的数据时,软件则会将收到的数据显示为1-8条曲线。 您可根据需要任意扩大缩小图形,并可保存以备下次分析。同时该程序还具有串口调试助手功能。 这是一款功能极其强大的串口调试工具,界面明了,易于使用,若应用于下位机程序开发等工作,将大大提高您的开发效率,成为您必不可缺的开发助手。 ComDigitalScopeV100 有两条坐标T0 T1 ,有T0,T1之间最大最小显示。可更改各个数据通道名称,以及数据显示倍数显示调整等功能。 试用版本,COM1,波特率为9600bit/s。
SerialPlot接受3种不同类型的数据输入: *简单的二进制流,支持不同的数字格式(无符号/有符号 - 8/16/32位和浮点数) * CSV格式的ASCII数据 *用户定义的自定义帧格式(帧开始字节,帧大小,校验和等)。 您可以拍摄当前视图的快照并将其存储在CSV文件中。您也可以从CSV文件加载它们,方便查看。 用户也可以通过点击定义“命令”发送到串口设备。命令可以用HEX或ASCII格式定义。 SerialPlot v0.10.0发布 哈桑YavuzÖzderya • 09/03/ 2017在15:19 • 0评论 SerialPlot 0.10发布。此版本带来了一些性能改进,次要功能和错误修复。 现在,您可以设置2个选项,而不是“样本数”选项卡中的“样本数”选项。“缓冲区大小”和“绘图宽度”。“缓冲区大小”是保存在内存中的样本总数,“绘图宽度”是在X轴上一次绘制的最大样本数。要查看以前的样本,只需使用X轴滚动条。这个区别的主要原因是表现。以前,您无法将样本数量设置得太高,因为SerialPlot试图一次绘制所有数据。现在您可以将“缓冲区大小”设置为1.000.000,只要保持“绘图宽度”较小,很可能就可以了。另一个好处是,有时当你频繁地更改数据时,缩放出路并不意味着太多,您也可以在X轴上保持一定的缩放级别,以便能够看到任何细节。如果你喜欢旧的行为,你总是可以设置缓冲区大小选项相同的数量作为绘图宽度,它应该没事。请记住,虽然“绘图宽度”选项有一个较小的限制,然后“缓冲区大小”出于性能的原因。一张纸条; 性能改进没有完成。我仍在进行一些改进,以增加“缓冲区大小”限制。 现在您可以设置RS232控制信号(DTR,RTS),并从“端口”选项卡查看输入信号()状态。能够设置DTR信号是一个要求的功能,以便SerialPlot可以与Arduino Leanardo板一起使用。 我们现在也有一个更新检查器。您可以从“帮助”菜单启动它。除非您禁用了SerialPlot,否则每天会检查一次更新。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值