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

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 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?
  • ¥15 django5安装失败
  • ¥15 Java与Hbase相关问题
  • ¥15 后缀 crn 游戏文件提取资源
  • ¥20 bash代码推送不上去 git fetch origin master #失败了
  • ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开