我想进行多通道采集:
#include "grlib/grlib.h"
#include "drivers/lcd_320x240_ili932x.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/adc.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
#include "driverlib/fpu.h"
#include "utils/uartstdio.h"
#include "utils/ustdlib.h"
//-----------------------------------------------------------------------------
// 子函数功能说明: 串口功能设置
//-----------------------------------------------------------------------------
void
InitConsole(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE); // 使能GPIO外设
GPIOPinConfigure(GPIO_PE4_U5RX); // 配置串口接收管脚
GPIOPinConfigure(GPIO_PE5_U5TX); // 配置串口发送管脚
GPIOPinTypeUART(GPIO_PORTE_BASE, GPIO_PIN_4 | GPIO_PIN_5);//把GPIO功能复用为串口
UARTStdioInit(5); //设置串口属性
}
//-----------------------------------------------------------------------------
// 主函数
//-----------------------------------------------------------------------------
int
main(void)
{ tContext sContext;
tRectangle sRect;
unsigned long ulADC0_Value[1];
char cText[10];
// FPUEnable(); //FPU使能
// FPULazyStackingEnable(); //使能FPU堆栈
SysCtlClockSet(SYSCTL_SYSDIV_10 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_16MHZ); //配置系统时钟
// lcd_ili932x_init(); //初始化LCD驱动
// GrContextInit(&sContext, &g_sLcdDisplay);//初始化图形库
// lcd_backlight_on();
// lcd_ili932x_flush(&sContext);
// sRect.sXMin = 0;
// sRect.sYMin = 0;
// sRect.sXMax = GrContextDpyWidthGet(&sContext) - 1;
// sRect.sYMax = 23;
// GrContextForegroundSet(&sContext, ClrDarkBlue);
// GrRectFill(&sContext, &sRect); // 填充蓝 {MOD}方块
// GrContextForegroundSet(&sContext, ClrWhite);
// GrRectDraw(&sContext, &sRect); // 加白 {MOD}框框
// GrContextFontSet(&sContext, &g_sFontCm20);
// GrStringDrawCentered(&sContext, "ADC out", -1,
// GrContextDpyWidthGet(&sContext) / 2, 10, 0); // 显示ADC输出实验标志
InitConsole(); // 初始化开发板串口
UARTprintf("ADC ->
");
UARTprintf(" Type: Single Ended
");
UARTprintf(" Samples: One
");
UARTprintf(" Update Rate: 250ms
");
UARTprintf(" Input Pin: AIN17/PH1
"); // 串口显示
// GrContextFontSet(&sContext, &g_sFontCm20);
// GrStringDraw(&sContext, "ADC out", -1, 50, 30, 1);
// GrContextFontSet(&sContext, &g_sFontCm20);
// GrStringDraw(&sContext, "Type: Single Ended", -1, 50, 60, 1);
// GrContextFontSet(&sContext, &g_sFontCm20);
// GrStringDraw(&sContext, "Update Rate: 250ms", -1, 50, 90, 1);
// GrContextFontSet(&sContext, &g_sFontCm20);
// GrStringDraw(&sContext, "Input Pin: AIN11/PB5", -1, 50, 120, 1); // TFT液晶屏显示
SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0); // 使能ADC0外设,并初始化
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH); //GPIO管脚E使能
GPIOPinTypeADC(GPIO_PORTH_BASE, GPIO_PIN_1); // 配置ADC管脚
GPIOPinTypeADC(GPIO_PORTH_BASE, GPIO_PIN_0); 在此处加了一路CH16,即PH0
ADCReferenceSet(ADC0_BASE, ADC_REF_INT );//此函数设置AD转换的参考电压,不设置默认采用内部参考电压 ADC_REF_INT表示使用片内参考电压
ADCSequenceConfigure(ADC0_BASE, 2, ADC_TRIGGER_PROCESSOR, 0); // 配置ADC0,采样序列2,ADC处理器触发,优先级为0
ADCSequenceStepConfigure(ADC0_BASE, 2, 0, ADC_CTL_CH17 | ADC_CTL_IE |
ADC_CTL_END); // CH3,中断使能,对列结束选择,无ADC通道
ADCSequenceStepConfigure(ADC0_BASE, 2, 0, ADC_CTL_CH16 | ADC_CTL_IE |
ADC_CTL_END); // CH3,中断使能,对列结束选择,无ADC通道 在此处加了一路CH16,即PH0
ADCSequenceEnable(ADC0_BASE, 2); //使能ADC采样
ADCIntClear(ADC0_BASE, 2); //ADC中断清除
while(1)
{
ADCProcessorTrigger(ADC0_BASE, 2); //ADC处理器触发
while(!ADCIntStatus(ADC0_BASE, 2, false)) //获取中断状态
{
}
ADCSequenceDataGet(ADC0_BASE, 2, ulADC0_Value); //获取ADC采样数据
UARTprintf("AIN0 = %4d
", ulADC0_Value[0]); //串口显示采样值
usprintf(cText, "AIN0 = %4d
",ulADC0_Value[0]);
GrContextFontSet(&sContext, &g_sFontCm20);
GrStringDraw(&sContext, cText, -1, 50, 150, 1); //液晶屏显示采样值
UARTprintf("AIN1 = %4d
", ulADC0_Value[1]);
usprintf(cText, "temperature = %4d
",ulADC0_Value[1]);
GrContextFontSet(&sContext, &g_sFontCm20);
//GrStringDraw(&sContext, cText, -1, 50, 90, 1);
SysCtlDelay(SysCtlClockGet()/ 12); // 时钟延迟
}
}
有多通道的例程吗?求
此帖出自
小平头技术问答
一周热门 更多>