adctest.c

来自「最新版IAR FOR ARM(EWARM)5.11中的代码例子」· C语言 代码 · 共 72 行

C
72
字号
/*****************************************************************************
 *   adctest.c:  main C entry file for NXP LPC29xx Family Microprocessors
 *
 *   Copyright(C) 2007, NXP Semiconductor
 *   All rights reserved.
 *
 *   History
 *   2007.08.16  ver 1.00    Prelimnary version, first Release
 *
******************************************************************************/
#include "LPC29xx.h"                        /* LPC29xx definitions */
#include "type.h"
#include "target.h"
#include "irq.h"
#include "adc.h"
#include "mtimer.h"
#include <intrinsics.h> /* for interrupts iar */


extern volatile DWORD ADC1Value[ITERATION][ADC_NUM];
extern volatile DWORD ADC1ValueAverage[ADC_NUM];
extern volatile DWORD ADC1IntDone;
extern volatile DWORD ADC1Iteration;

/*****************************************************************************
**   Main Function  main()
******************************************************************************/
int main (void)
{
  DWORD i;

  /* Initialize ADC  */
  ADC1_Init();
  ADC1_Start();

  /* Enable MSCSS timer for ADC event trigger, match0 for ADC0 */
  init_mtimer0(TIMER_TICKS);
  enable_mtimer0();

 __enable_interrupt(); // iar
 
  ADC1Iteration = 0;
  while ( 1 )
  {
	if ( ADC1IntDone )
	{
	  for ( i = 0; i < ADC_NUM; i++ )
	  {
		ADC1ValueAverage[i] += ADC1Value[ADC1Iteration-1][i];
	  }
	  if ( ADC1Iteration == ITERATION )
	  {
		ADC1IntDone = 0;	/* complete ITERATION, calculate average */
		break;
	  }
	  ADC1_Start();
	  ADC1IntDone = 0;
	}
  }

  for ( i = 0; i < ADC_NUM; i++ )
  {
	ADC1ValueAverage[i] /= ITERATION;
  }
  return 0;
}

/*****************************************************************************
**                            End Of File
*****************************************************************************/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?