⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 mpc55**系列芯片的例程 包括SCI,SPI,TIMER,FIT,EDMA等几乎所有功能的实现
💻 C
字号:
/* main.c:  performs a simple ADC conversion of channel 5 using ADC0 */
/* Rev 1.0 Sept 13, 2004 S. Mihalik. */
/* Rev 1.1 Jul 18 2007 SM- Changed ADCCLK prescaler for faster MPC551x default */
/*         sysclk, added result in millivolts, used channel 5, conversion in loop */
/* Rev 1.2 Jun 12 2008 SM- Moved initADC0 out of while loop */
/* Copyright Freescale, 2007. All Rights Reserved */
/* Notes:  */
/*  1. MMU not initialized; must be done by debug scripts or BAM */
/*  2. SRAM not initialized; must be done by debug scripts or in a crt0 type file */

#include "mpc563m.h" /* Use proper include file such as mpc5510.h or mpc5554.h */

  static uint32_t Result = 0;         /* ADC conversion result  */
  static uint32_t ResultInMv = 0;     /* ADC conversion result in millivolts */

void initADC0(void) {
  EQADC.CFPR[0].R = 0x80801001;       /* Send CFIFO 0 a ADC0 configuration command */
                                      /* enable ADC0 & sets prescaler= divide by 2 */ 
  EQADC.CFCR[0].R = 0x0410;           /* Trigger CFIFO 0 using Single Scan SW mode */
  while (EQADC.FISR[0].B.EOQF !=1) {} /* Wait for End Of Queue flag */
  EQADC.FISR[0].B.EOQF = 1;           /* Clear End Of Queue flag */
}

void SendConvCmd (void) {
  EQADC.CFPR[0].R = 0x80000500; /* Conversion command: convert channel 5 */
                                /* with ADC0, set EOQ, and send result to RFIFO 0 */ 
  EQADC.CFCR[0].R = 0x0410;     /* Trigger CFIFO 0 using Single Scan SW mode */
}

void ReadResult(void) {
  while (EQADC.FISR[0].B.RFDF != 1){}      /* Wait for RFIFO 0's Drain Flag to set */
  Result = EQADC.RFPR[0].R;                /* ADC result */        
  ResultInMv = (uint32_t)((5000*Result)/0x3FFC);  /* ADC result in millivolts */        
  EQADC.FISR[0].B.RFDF = 1;                /* Clear RFIFO 0's Drain Flag */
  EQADC.FISR[0].B.EOQF = 1;                /* Clear CFIFO's End of Queue flag */
  }

int main(void) {
  int i = 0;                   	/* Dummy idle counter */
  initADC0();                  	/* Enable ADC0 only on eQADC */
  while (1) {
    SendConvCmd();              /* Send one conversion command */
    ReadResult();               /* Read result */
    i++;           /* Wait forever */
  }
}

⌨️ 快捷键说明

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