感谢作者杜洋,大师的代码风格很不错,注释清晰
ADC—单通道(DMA读取)+proteus8.7+stm32F103C6,可仿真信号和信号+随机噪声输入AD采集
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- /*********************************************************************************************
- 模板制作: 杜洋工作室/洋桃电子
- 程序名: 光敏电阻ADC读取程序
- 编写人: 杜洋
- 编写时间: 2018年4月6日
- 硬件支持: STM32F103C8 外部晶振8MHz RCC函数设置主频72MHz
- 修改日志:
- 1-
-
-
- 说明:
- # 本模板加载了STM32F103内部的RCC时钟设置,并加入了利用滴答定时器的延时函数。
- # 可根据自己的需要增加或删减。
- *********************************************************************************************/
- #include "stm32f10x.h" //STM32头文件
- #include "sys.h"
- #include "delay.h"
- #include "adc.h"
- #include "usart.h"
- extern vu16 ADC_DMA_IN5; //声明外部变量
- // 局部变量,用于保存转换计算后的电压值
- float ADC_ConvertedValueLocal;
- void Delay (uint32_t nCount)
- {
- for(; nCount != 0; nCount--);
- }
- int main (void){//主程序
- // delay_ms(500); //上电时等待其他器件就绪//
-
- RCC_Configuration(); //系统时钟初始化
- Delay(0x2fff);//打开时钟后,才能延时?
- USART1_Init(57600); //串口初始化(参数是波特率)
- USART1_printf ("\r\n ----ADC单通道DMA读取USART初始化 ok----\r\n");
- ADC_Configuration(); //ADC初始化设置
- USART1_printf ("\r\n ----ADC单通道DMA读取ADC初始化 ok----\r\n");
- while (1)
- {
- USART1_printf("\r\n The current AD value = %04d \r\n", ADC_DMA_IN5);
- ADC_ConvertedValueLocal=(float)ADC_DMA_IN5*(3.32/4096);
- USART1_printf("\r\n The current AD value = %f V \r\n",ADC_ConvertedValueLocal);
- // Delay(0x2fff);
- delay_ms(10);
-
- }
- }
- 【变量定义】
- u32 a; //定义32位无符号变量a
- u16 a; //定义16位无符号变量a
- u8 a; //定义8位无符号变量a
- vu32 a; //定义易变的32位无符号变量a
- vu16 a; //定义易变的 16位无符号变量a
- vu8 a; //定义易变的 8位无符号变量a
- uc32 a; //定义只读的32位无符号变量a
- uc16 a; //定义只读 的16位无符号变量a
- uc8 a; //定义只读 的8位无符号变量a
- #define ONE 1 //宏定义
- delay_us(1); //延时1微秒
- delay_ms(1); //延时1毫秒
- delay_s(1); //延时1秒
- GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1)); //LED控制
- */
复制代码
所有资料51hei提供下载:
6ADC—单通道(DMA读取).7z
(1.22 MB, 下载次数: 187)
|