📄 main.c
字号:
/****** (C) COPYRIGHT 2010 UP Team, Wuhan University of Technology ************
* 文件名: main.c
* 作者 : UP Team, Wuhan University of Technology
* 日期 : 01/18/2010
* 描述 : 主程序源文件.
*******************************************************************************
*******************************************************************************
* 历史:
* 01/18/2010 : V1.0 初始版本
*******************************************************************************/
/* Includes ------------------------------------------------------------------*/
#include "LPC11xx.h" /* LPC11xx 定义 */
#include "adc.h"
#include "uart.h"
extern volatile uint32_t ADCValue[ADC_NUM];
extern volatile uint32_t ADCIntDone;
#if ADC_DEBUG
extern volatile uint32_t UARTCount;
extern volatile uint8_t UARTBuffer[BUFSIZE];
/**
* @函数名:ConvertDigital
* @描述:把数字转换成ASCII码字符
* @参数:digital 待转换的数据
* @返回值:转换后的ASCII码字符
*/
uint8_t ConvertDigital ( uint8_t digital )
{
uint8_t ascii_char;
if ( (digital >= 'A') && (digital <= 'F') )
{
ascii_char = digital - 0x0A;
ascii_char += 0x41; /* A~F */
}
else
{
ascii_char = digital + 0x30; /* 0~9 */
}
return ( ascii_char );
}
#endif
/**
* @函数名:main
* @描述:主函数
* @参数: 无
* @返回值:无
*/
int main (void)
{
uint32_t i, j;
uint8_t c;
/* 系统初始化 */
SystemInit();
#if ADC_DEBUG
/* 配置串口 */
UARTInit(115200);
#endif
/* 初始化ADC */
ADCInit( ADC_CLK );
#if BURST_MODE /* 仅仅在中断模式下工作 */
ADCBurstRead();
while ( !ADCIntDone );
ADCIntDone = 0;
#else
/* 在轮询模式下工作 */
while (1)
{
/* 轮询8个ADC的状态 */
for ( i = 0; i < ADC_NUM; i++ )
{
#if ADC_INTERRUPT_FLAG /* 中断驱动 */
/* 读ADC通道i的值 */
ADCRead( i );
while ( !ADCIntDone );
ADCIntDone = 0;
#else
ADCValue[i] = ADCRead( i ); /* 轮询 */
#endif
#if ADC_DEBUG
LPC_UART->IER = IER_THRE | IER_RLS; /* 除能 UART的 RBR */
/* 把32位整形的值转换成8个字符,以便串口输出 */
UARTBuffer[0] = ConvertDigital( (uint8_t)(ADCValue[i]>>28));
UARTBuffer[1] = ConvertDigital( (uint8_t)((ADCValue[i]>>24)&0xF));
UARTBuffer[2] = ConvertDigital( (uint8_t)((ADCValue[i]>>20)&0xF));
UARTBuffer[3] = ConvertDigital( (uint8_t)((ADCValue[i]>>16)&0xF));
UARTBuffer[4] = ConvertDigital( (uint8_t)((ADCValue[i]>>12)&0xF));
UARTBuffer[5] = ConvertDigital( (uint8_t)((ADCValue[i]>>8)&0xF));
UARTBuffer[6] = ConvertDigital( (uint8_t)((ADCValue[i]>>4)&0xF));
UARTBuffer[7] = ConvertDigital( (uint8_t)(ADCValue[i]&0xF));
UARTBuffer[8] = '\r';
UARTBuffer[9] = '\n';
/* 通过串口输出当前ADC的值 */
UARTSend("ADC", 3);
c = i + '0';
UARTSend(&c, 1);
UARTSend("=", 1);
UARTSend( (uint8_t *)UARTBuffer, 10 );
LPC_UART->IER = IER_THRE | IER_RLS | IER_RBR; /* Re-enable RBR */
#endif
}
UARTSend("<-------------------->\r\n", 24);
/* 等待大概3s */
for (j = 0; j < 0x888888; j++);
}
#endif
}
/******************************************************************************
** End Of File
******************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -