找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3629|回复: 2
收起左侧

Proteus仿真单片机ADC采集,数据总是为0

[复制链接]
ID:641486 发表于 2021-7-26 13:37 | 显示全部楼层 |阅读模式
原理图如下,电压配置的3.3V,用一个串口发送数据

1.jpg

HAL库开发,STM32CubeMX配置的项目工程

部分程序如下
  1. uint16_t ADC_Value = 0,ADC_Vol = 0;
  2. uint8_t str_buff[64];

  3. void UART_Send()
  4. {
  5.         sprintf((char *)str_buff,"采样值:%d,电压值:%d.%d%dV\r\n",ADC_Value,ADC_Vol/100,(ADC_Vol%100)/10,ADC_Vol%10); //格式化输出
  6.         HAL_UART_Transmit(&huart1,str_buff,sizeof(str_buff),1000);                                                 //串口输出
  7. }
  8.         
  9. void ADC_Get_Value()
  10. {
  11.         HAL_ADC_Start(&hadc1);
  12.         LED_ON;
  13.         if(HAL_ADC_PollForConversion(&hadc1,10) == HAL_OK)
  14.         {
  15.                 ADC_Value = HAL_ADC_GetValue(&hadc1);
  16.                 ADC_Vol = ADC_Value * 330 /4096;               //转化的电压值,3.3V,12位
  17.         }
  18.         UART_Send();
  19.         LED_OFF;
  20.         HAL_ADC_Stop(&hadc1);
  21. }
复制代码
然后在主函数main()的while(1)循环里每个500ms执行ADC_Get_Value()
也就是一直获取采样值,然后通过串口发出去
收到的结果一直是0
2.JPG
只有当我把ADC线直接接到3.3V电源上,才正常获取采样值
其他情况都是0,搞了很久看不出错误在哪儿
有没有大佬帮忙看看程序的,谢谢大家了



回复

使用道具 举报

ID:1024192 发表于 2022-5-11 10:03 | 显示全部楼层
您好,请问解决了嘛?我也遇到了这个问题
回复

使用道具 举报

ID:626976 发表于 2022-7-4 11:09 | 显示全部楼层
您好,请问解决了嘛?我也遇到了这个问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表