标题:
Stm32 DMA-ADC实现源码与说明
[打印本页]
作者:
even_more
时间:
2018-5-17 13:23
标题:
Stm32 DMA-ADC实现源码与说明
方法: 打开超级终端,配置超级终端为 115200 8-N-1,将编译好的程序下载到板子,即可看到超级终端打印出如下信息:当调节的滑动变阻器时,ADC1 转换的电压值则会改变。
板载的是 20K 的精密电阻,旋转的圈数要多点才能看到 ADC 值的明显变化。(如下)
com.PNG
(53.38 KB, 下载次数: 33)
下载附件
2018-5-17 13:22 上传
单片机源程序如下:
/*******************************************************************************
--------------------------------------------------------------------------------
* 实 验 名 : LCD-ADC-DMA实验
* 实验说明 : 通过将程序下载进去后点击复位,配置端口PA1内的ADC,将电位器变化值转换为
电压值,通过配置DMA,将ADC和DMA连在一起,使其自动进行转换搬运。主函数
直接调用即可。LED指示灯闪烁效果,
按下复位开关重新运行,其他子函数注释
可以参考之前的函数注释
* 连接方式 :
* 注 意 : 所用函数在头文件.c文件内
*******************************************************************************/
#include "public.h"
#include "dma.h"
#include "systick.h"
#include "gui.h"
#include "led.h"
#include "printf.h"
/****************************************************************************
* Function Name : main
* Description : Main program.
* Input : None
* Output : None
* Return : None
****************************************************************************/
int main()
{
u16 value;
u8 i,j,dat[6];
float ad;
dma_init(); //DMA初始化
TFT_Init(); //TFT彩屏初始化
LED_Init(); //端口初始化
printf_init(); //printf初始化
TFT_ClearScreen(BLACK); //清屏
GUI_Show12ASCII(10,10,"This is a ADC1-DMA1 Check!",YELLOW,BLACK);
GUI_Show12ASCII(10,27,"PA1 is AD Input!",YELLOW,BLACK);
GUI_Show12ASCII(10,100,"The AD Volage is:",YELLOW,BLACK);
while(1)
{
value=0;
for(i=0;i<10;i++)//读取10次的AD数值取其平均数较为准确
{
value=value+adc_data[0];
}
delay_ms(500);
value=value/10;
ad=value*3.3/4095;
value=(u16)(ad*100);
dat[0]=value/100+0x30;
dat[1]='.';
dat[2]=value%100/10+0x30;
dat[3]=value%100%10+0x30;
dat[4]='V';
dat[5]='\0';
GUI_Show12ASCII(160,100,dat,YELLOW,BLACK);
if(j>1)
{
j=0;
GPIO_SetBits(GPIOC,GPIO_Pin_0);
}
else
{
j++;
GPIO_ResetBits(GPIOC,GPIO_Pin_0);
}
}
}
复制代码
所有资料51hei提供下载:
LCD-ADC-DMA.7z
(746.83 KB, 下载次数: 37)
2022-12-16 04:24 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1