/*******************************************
开发坏境:CCSv5.4
开发板:TIVA C Launchpad(TM4C123GH6PM)
程序功能:两路模拟比较器,与内部基准电压比较
程序说明:C0+ PC6 C0- PC7 C0O PF0
C1+ PC5 C1- PC4 C1O PF1
编程者:Linchpin
********************************************/
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "driverlib/pin_map.h"
#include "inc/hw_types.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/sysctl.h"
#include "driverlib/comp.h"
#include "driverlib/rom.h"
#include "grlib/grlib.h"
int main(void)
{
//设置系统时钟为50MHz (400/2/4=50)
SysCtlClockSet(SYSCTL_SYSDIV_4|SYSCTL_USE_OSC |SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ);
//使能需要的外设
SysCtlPeripheralEnable(SYSCTL_PERIPH_COMP0);//虽然有两路,但此处只需配置comp0
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeComparator(GPIO_PORTC_BASE, GPIO_PIN_4 | GPIO_PIN_5|GPIO_PIN_6 | GPIO_PIN_7);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2);
//配置比较器
//比较器共有三种比较模式:1.Cn-与内部基准电压比较 2.Cn-与Cn+比较 3.Cn-与C0+比较 配置不同模式只需改变该语句
ComparatorConfigure(COMP_BASE,0,COMP_TRIG_NONE|COMP_INT_BOTH|COMP_ASRCP_REF);
ComparatorConfigure(COMP_BASE,1,COMP_TRIG_NONE|COMP_INT_BOTH|COMP_ASRCP_REF);
//配置比较器参考电压为2.0625V
ComparatorRefSet(COMP_BASE,COMP_REF_2_0625V);
//中断使能
ComparatorIntEnable(COMP_BASE,0);
ComparatorIntEnable(COMP_BASE,1);
while(1)
{
//获取比较结果并据此设置LED的亮灭
if(ComparatorValueGet(COMP_BASE,0))
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_PIN_1);
else
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, 0);
if(ComparatorValueGet(COMP_BASE,1))
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, GPIO_PIN_2);
else
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, 0);
}
}
本文来自论坛,点击查看完整帖子内容。