码迷,mamicode.com
首页 > 其他好文 > 详细

[TM4C123单片机实战] 两路ADC检测,短路报警

时间:2015-05-17 23:37:26      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:单片机   tm4   c   adc   datasheet   

如果最终得到的数据是两路数据的差值, 我们可以采用ADC的 Difference 工作模式


#include <stdbool.h>
#include <stdint.h>
#include "inc/hw_memmap.h"
#include "driverlib/adc.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/sysctl.h"
#include "user/LCDDriver.h"

#define abs(x) (((x)<0)? -(x):(x))

uint32_t pui32ADC0Value[1]={0};
//这是我们的数据缓存, ADC采样数据存储在这里
void adcConfig(){
	SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC1);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
	GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_1);
	
	GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_3 | GPIO_PIN_2);
//初始化ADC所使用的GPIO	
        ADCSequenceConfigure(ADC1_BASE, 3, ADC_TRIGGER_PROCESSOR, 0);
	ADCSequenceStepConfigure(ADC1_BASE, 3, 0, ADC_CTL_D | ADC_CTL_CH0 |
                             ADC_CTL_IE | ADC_CTL_END);
//这里我们选择了两路差工作模式ADC_CTL_D
	ADCSequenceEnable(ADC1_BASE, 3);
	ADCIntClear(ADC1_BASE, 3);
}//使能

bool isRisk(){//数据采集程序
	GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 255);

	ADCProcessorTrigger(ADC1_BASE, 3);
	while(!ADCIntStatus(ADC1_BASE, 3, false));
	ADCIntClear(ADC1_BASE, 3);
	ADCSequenceDataGet(ADC1_BASE, 3, pui32ADC0Value);
	//AIN0(PE3) -  AIN1(PE2)
	LCD_Draw_Num(pui32ADC0Value[0],0,7,0,false);
	LCD_Draw_Line_Clear(6,false);
	if(pui32ADC0Value[0] > 500) return true;
	else return false;
}
关于ADc的引脚, 参考reference

技术分享

关于ADC的模式:

参考reference




[TM4C123单片机实战] 两路ADC检测,短路报警

标签:单片机   tm4   c   adc   datasheet   

原文地址:http://blog.csdn.net/qq_21970857/article/details/45798899

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!