TM4-ADC

#include "Includes.h"


void UART0_Init(void);


void ADC0_Init(void);


void UART0_Handler(void);


void ADC_caculate(void);


void UART_Console(void);


uint32_t ADCvalue[1]; //存储ADC的FIFO的数据


int main(void)
{

SysCtlClockSet(SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ|SYSCTL_USE_PLL|SYSCTL_SYSDIV_10);//400 / 2 / 4 = 50MHZ
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE , GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);

UART0_Init();

ADC0_Init();

UART_Console();

while (1)
{
ADC_caculate();

SysCtlDelay(2*1000);

}

}
void ADC0_Init(void)
{
//ADC0位于PD3
//使能ADC0外设
SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
//将D端口使能
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
//配置模拟输入引脚
GPIOPinTypeADC(GPIO_PORTD_BASE , GPIO_PIN_3);
//配置ADC采样序列的触发事件和优先级
ADCSequenceConfigure(ADC0_BASE,3,ADC_TRIGGER_PROCESSOR,0); //ADC采样序列3 处理器事件 相对优先级0最高
//配置ADC采样序列发生器的步进
ADCSequenceStepConfigure(ADC0_BASE,3,0,ADC_CTL_CH6|ADC_CTL_IE|ADC_CTL_END); //选择通道四PD3作为输入
ADCSequenceEnable(ADC0_BASE,3);  //使能ADC采样序列
//ADC中断清除
ADCIntClear(ADC0_BASE,3);


}
void ADC_caculate(void)
{

//ADC处理器触发
ADCProcessorTrigger(ADC0_BASE , 3);

while(!ADCIntStatus(ADC0_BASE,3,false))
{

}//判断是否出错*/

//ADC中断标志清除
ADCIntClear(ADC0_BASE,3);
//获取ADC采样数据

ADCSequenceDataGet(ADC0_BASE,3,ADCvalue); //最后一个参数指向保存数据的数组
UARTprintf("ADC4 = %4d\r\n",ADCvalue[0]);

}
void UART_Console(void)
{


SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);

UARTClockSourceSet(UART0_BASE , UART_CLOCK_PIOSC);


GPIOPinConfigure(GPIO_PA0_U0RX);     //PE4管脚复用为 U5RX
GPIOPinConfigure(GPIO_PA1_U0TX);     //PE5管脚复用为 U5TX

GPIOPinTypeUART(GPIO_PORTA_BASE,GPIO_PIN_0 | GPIO_PIN_1); //设定UART对应管脚

UARTStdioConfig(0,9600,16000000);
}
void UART0_Init(void)
{
//SysCtlClockSet(SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ|SYSCTL_USE_PLL|SYSCTL_SYSDIV_4); //400 / 2 / 4 = 50MHZ
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); 
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

GPIOPinTypeUART(GPIO_PORTA_BASE,GPIO_PIN_0 | GPIO_PIN_1); //设定UART对应管脚
GPIOPinConfigure(GPIO_PA0_U0RX);    
GPIOPinConfigure(GPIO_PA1_U0TX); 
 
//UART配置 时钟源为系统时钟源 9600波特率 8位数据长度 无奇偶验证位 一个停止位
UARTConfigSetExpClk(UART0_BASE,SysCtlClockGet(),9600,UART_CONFIG_WLEN_8|UART_CONFIG_PAR_NONE|UART_CONFIG_STOP_ONE);

IntEnable(INT_UART0); //使能UART中断
UARTIntEnable(UART0_BASE,UART_INT_RT | UART_INT_RX); 
IntMasterEnable(); //使能总中断
//UARTIntClear(UART5_BASE,UART_INT_RX); //清除中断标志
UARTFIFODisable(UART0_BASE); //禁用FIFO
//串口中断地址注册
UARTIntRegister(UART5_BASE,UART0_Handler);
}
void UART0_Handler(void)
{
uint32_t flag = UARTIntStatus(UART0_BASE,1);
//清除中断标志
UARTIntClear(UART0_BASE,flag);
if(flag & UART_INT_RX)
{
//UARTCharsAvail()判断FIFO是否还有数据
while(UARTCharsAvail(UART0_BASE))
{
//输出得到的数据
UARTCharPut(UART0_BASE,UARTCharGet(UART0_BASE));
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值