记录无知岁月 2023-04-28 23:42 采纳率: 0%
浏览 30

Proteus仿真STM32的ADC

有用过Proteus仿真STM32的ADC模块吗?最近尝试发现不论怎样都不好使,包括是否采用固件,使用标准库还是HAL库,都是不好使的(其他的如GPIO,串口没有问题)。Proteus版本为8.13

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-30 00:08
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 给你找了一篇非常好的博客,你可以看看是否有帮助,链接:使用CubMX和Proteus学习STM32单片机(五)------ADC模数转换
    • 除此之外, 这篇博客: STM32CubeMX+Keil+Proteus仿真ADC采集中的 HAL库中关于ADC的重要函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      共分为三种:轮询中断DMA三种模式
      开启ADC函数

      HAL_ADC_Start(&hadc1);     //轮询模式开启ADC
      HAL_ADC_Start_IT(&hadc1); //中断模式开启ADC
      HAL_ADC_Start_DMA(&hadc1);//DMA模式开启ADC
      

      关闭ADC函数

      HAL_ADC_Stop(&hadc1);    //轮询模式关闭ADC
      HAL_ADC_Stop_IT(&hadc1); //中断模式关闭ADC
      HAL_ADC_Stop_DMA(&hadc1);//DMA模式关闭ADC
      

      读取ADC转换值

      HAL_ADC_GetValue(&hadc1);
      

      ADC校准函数(通常在ADC初始化之后加上该函数)

      MX_ADC1_Init();                     //ADC初始化
      HAL_ADCEx_Calibration_Start(&hadc1);//AD校准 
      

      等待转换结束函数(用于轮询模式)

      void HAL_ADC_PollForConversion(&hadc1, 50){//第二个参数为等待时间
      //判断转化函数是否结束的条件语句
      if(HAL_ADC_PollForConversion(&hadc1,10) == HAL_OK){
      	/*User Code*/
      }
      }
      

      ADC中断回调函数(用于中断模式,中断发生则进入该函数)

      void HAL_ADC_ConvCpltCallback(&hadc1){
      if(hadc->Instance == ADC1){
      	/*User Code*/
      }
      }
      

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 4月28日

悬赏问题

  • ¥15 数据量少可以用MK趋势分析吗
  • ¥15 使用VH6501干扰RTR位,CANoe上显示的错误帧不足32个就进入bus off快慢恢复,为什么?
  • ¥15 大智慧怎么编写一个选股程序
  • ¥100 python 调用 cgps 命令获取 实时位置信息
  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中