#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));
}
}
}
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));
}
}
}