找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4337|回复: 0
收起左侧

STM32 ADC单通道(DMA读取)程序Proteus仿真 信号+随机噪声输入AD采集

[复制链接]
ID:569027 发表于 2020-11-21 11:08 | 显示全部楼层 |阅读模式
感谢作者杜洋,大师的代码风格很不错,注释清晰
ADC—单通道(DMA读取)+proteus8.7+stm32F103C6,可仿真信号和信号+随机噪声输入AD采集
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.png 51hei.png

单片机源程序如下:
  1. /*********************************************************************************************
  2. 模板制作:  杜洋工作室/洋桃电子
  3. 程序名:        光敏电阻ADC读取程序
  4. 编写人:        杜洋        
  5. 编写时间:        2018年4月6日
  6. 硬件支持:        STM32F103C8   外部晶振8MHz RCC函数设置主频72MHz   

  7. 修改日志:  
  8. 1-        
  9.         
  10.                                                         
  11. 说明:
  12. # 本模板加载了STM32F103内部的RCC时钟设置,并加入了利用滴答定时器的延时函数。
  13. # 可根据自己的需要增加或删减。

  14. *********************************************************************************************/
  15. #include "stm32f10x.h" //STM32头文件
  16. #include "sys.h"
  17. #include "delay.h"
  18. #include "adc.h"
  19. #include "usart.h"

  20. extern vu16 ADC_DMA_IN5; //声明外部变量

  21. // 局部变量,用于保存转换计算后的电压值         
  22. float ADC_ConvertedValueLocal;        

  23. void  Delay (uint32_t nCount)
  24. {
  25.   for(; nCount != 0; nCount--);
  26. }

  27. int main (void){//主程序
  28. //        delay_ms(500); //上电时等待其他器件就绪//
  29.         
  30.         RCC_Configuration(); //系统时钟初始化
  31.         Delay(0x2fff);//打开时钟后,才能延时?
  32.             USART1_Init(57600); //串口初始化(参数是波特率)
  33. USART1_printf ("\r\n ----ADC单通道DMA读取USART初始化 ok----\r\n");
  34.         ADC_Configuration(); //ADC初始化设置
  35. USART1_printf ("\r\n ----ADC单通道DMA读取ADC初始化  ok----\r\n");
  36.         while (1)
  37.         {
  38.                 USART1_printf("\r\n The current AD value = %04d \r\n", ADC_DMA_IN5);
  39.        ADC_ConvertedValueLocal=(float)ADC_DMA_IN5*(3.32/4096);
  40.                 USART1_printf("\r\n The current AD value = %f V \r\n",ADC_ConvertedValueLocal);
  41. //        Delay(0x2fff);
  42.                 delay_ms(10);
  43.         
  44. }
  45. }


  46. 【变量定义】
  47. u32     a; //定义32位无符号变量a
  48. u16     a; //定义16位无符号变量a
  49. u8     a; //定义8位无符号变量a
  50. vu32     a; //定义易变的32位无符号变量a
  51. vu16     a; //定义易变的 16位无符号变量a
  52. vu8     a; //定义易变的 8位无符号变量a
  53. uc32     a; //定义只读的32位无符号变量a
  54. uc16     a; //定义只读 的16位无符号变量a
  55. uc8     a; //定义只读 的8位无符号变量a

  56. #define ONE  1   //宏定义

  57. delay_us(1); //延时1微秒
  58. delay_ms(1); //延时1毫秒
  59. delay_s(1); //延时1秒

  60. GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1)); //LED控制

  61. */
复制代码

所有资料51hei提供下载:
6ADC—单通道(DMA读取).7z (1.22 MB, 下载次数: 187)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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