中级会员
 
- 积分
- 228
- 金钱
- 228
- 注册时间
- 2013-5-4
- 在线时间
- 0 小时
|

楼主 |
发表于 2014-3-10 18:55:11
|
显示全部楼层
我调出来了,两路没有用DMA,程序见下。不知道对于多于两路不用DMA行不行,望原子哥给点建议啊
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "exti.h"
#include "wdg.h"
#include "timer.h"
#include "lcd.h"
#include "rtc.h"
#include "wkup.h"
#include "adc.h"
//Mini STM32开发板范例代码13
//ADC 实验
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
#define N 100
int main(void)
{
u16 i,j;
u16 value_buf[N];
u16 value_buf1[N];
u16 max1=value_buf[0];
u16 max2=value_buf1[0];
float temp;
Stm32_Clock_Init(9);//系统时钟设置
delay_init(72); //延时初始化
uart_init(72,9600); //串口1初始化
LED_Init();
LCD_Init();
Adc_Init();
POINT_COLOR=RED;//设置字体为红色
LCD_ShowString(60,50,"Mini STM32");
LCD_ShowString(60,70,"ADC TEST");
LCD_ShowString(60,90,"ATOM@ALIENTEK");
LCD_ShowString(60,110,"2010/12/30");
//显示提示信息
POINT_COLOR=BLUE;//设置字体为蓝色
LCD_ShowString(60,130,"ADC_CH0_VAL:");
LCD_ShowString(60,150,"ADC_CH0_VOL:0.000V");
LCD_ShowString(60,170,"ADC_CH0_VAL:");
LCD_ShowString(60,190,"ADC_CH0_VOL:0.000V");
while(1)
{
//通道1取最大值
for(i=0;i<N;i++)
{
value_buf=Get_Adc(ADC_CH1);
}
for (j=0;j<N;j++)
{
if(value_buf[j]>max1)
max1=value_buf[j];
}
LCD_ShowNum(156,130,max1,4,16);//显示ADC的值
temp=(float)max1*(3.3/4096);
max1=temp;
LCD_ShowNum(156,150,max1,1,16);//显示电压值
temp-=max1;
temp*=1000;
LCD_ShowNum(172,150,temp,3,16);
//通道0最大值
for(i=0;i<N;i++)
{
value_buf1=Get_Adc(ADC_CH0);
}
for (j=0;j<N;j++)
{
if(value_buf1[j]>max2)
max2=value_buf1[j];
}
LCD_ShowNum(156,170,max2,4,16);//显示ADC的值
temp=(float)max2*(3.3/4096);
max2=temp;
LCD_ShowNum(156,190,max2,1,16);//显示电压值
temp-=max2;
temp*=1000;
LCD_ShowNum(172,190,temp,3,16);
LED0=!LED0;
delay_ms(250);
}
} |
|