main.c

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

C
251
字号
/******************** (C) COPYRIGHT 2005 STMicroelectronics **********************
* File Name          : main.c
* Author             : MCD Application Team
* Date First Issued  : 09/27/2005 :  V1.0
* Description        : Main program body
**********************************************************************************
* History:
* 09/27/2005 :  V1.0
**********************************************************************************
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH
* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*********************************************************************************/

/* Standard include ------------------------------------------------------------*/
#include "73x_lib.h"
#include "73x_lcd.h"
/* Include of other module interface headers -----------------------------------*/
/* Local includes --------------------------------------------------------------*/
/* Private typedef -------------------------------------------------------------*/
/* Private define --------------------------------------------------------------*/
/* Private macro ---------------------------------------------------------------*/
/* Private variables -----------------------------------------------------------*/
u16 Conversion_Value = 0;
u8 buffer[11] = "ADC: ";

/* Peripherals Init Structures */
GPIO_InitTypeDef GPIO0_InitStructure;
GPIO_InitTypeDef GPIO3_InitStructure;
ADC_InitTypeDef  ADC_InitStructure;
CMU_InitTypeDef  CMU_InitStructure;

/* Private function prototypes -------------------------------------------------*/
unsigned int millier(unsigned int val){
 return((val/1000) + 0x30);
}
unsigned int centaine(unsigned int val){
  unsigned int valCopy;
 valCopy = val % 1000;
 return((valCopy/100) + 0x30);
}
unsigned int dixaine(unsigned int val){
 unsigned int valCopy;
 valCopy = val % 100;
 return((valCopy/10) + 0x30);
}		
unsigned int unite(unsigned int val){
 unsigned int valCopy;
 valCopy = val % 100;
 return((valCopy%10) + 0x30);
}
/* Interface functions ---------------------------------------------------------*/
/* Private functions -----------------------------------------------------------*/


int main(void)
{
u32 CPIO_Value;
#ifdef DEBUG
    debug();
#endif



/*-------------------------------------GPIO0 --------------------------------*/
  /* GPIO0 Clock Enable */
  CFG_PeripheralClockConfig(CFG_CLK_GPIO0, ENABLE);
  /* GPIO0 Configuration */
  GPIO0_InitStructure.GPIO_Mode = GPIO_Mode_OUT_PP;
  GPIO0_InitStructure.GPIO_Pins = GPIO_PIN_ALL ;
  GPIO_Init (GPIO0, &GPIO0_InitStructure);

/*-----------------------------------GPIO3 ----------------------------------*/
  /* GPIO3 Clock Enable */
  CFG_PeripheralClockConfig(CFG_CLK_GPIO3, ENABLE);
  /* GPIO3 Configuration */
  GPIO3_InitStructure.GPIO_Mode = GPIO_Mode_HI_AIN_TRI;
  GPIO3_InitStructure.GPIO_Pins = GPIO_PIN_ALL ;
  GPIO_Init (GPIO3, &GPIO3_InitStructure);

/*-----------------------------------EIC-------------------------------------*/
  /* EIC Clock Enable */
  CFG_PeripheralClockConfig(CFG_CLK_EIC, ENABLE);
  /* EIC Config */
  EIC_IRQChannelPriorityConfig( ADC_IRQChannel, 1);
  EIC_IRQChannelConfig( ADC_IRQChannel , ENABLE );
  EIC_IRQCmd(ENABLE);

/*---------------------------------CMU---------------------------------------*/
  /* CMU Initialization */
  CMU_DeInit( );
  CMU_StructInit(&CMU_InitStructure);
  /* Enable the external oscillator */
  CMU_InitStructure.CMU_CKSEL0 = CMU_CKSEL0_CKOSC;
  CMU_Init(&CMU_InitStructure);
  /* Disable DIV2 */
  PRCCU->CFR &= 0x7FFF;

/*---------------------------------ADC---------------------------------------*/
  /* ADC Clock Enable */
  CFG_PeripheralClockConfig(CFG_CLK_ADC, ENABLE);
  /* ADC Configuration */
  ADC_DeInit ();
  ADC_StructInit(&ADC_InitStructure);
  ADC_InitStructure.ADC_Calibration = ADC_Calibration_ON;
  ADC_InitStructure.ADC_CalibAverage = ADC_CalibAverage_Enable;
  ADC_InitStructure.ADC_AutoClockOff = ADC_AutoClockOff_Disable ;
  ADC_InitStructure.ADC_ConversionMode = ADC_ConversionMode_Scan ;
  ADC_InitStructure.ADC_SamplingPrescaler = 0x2;
  ADC_InitStructure.ADC_ConversionPrescaler = 0x4;
  ADC_InitStructure.ADC_FirstChannel = ADC_CHANNEL0 ;
  ADC_InitStructure.ADC_ChannelNumber = 1;
  ADC_Init (&ADC_InitStructure);


  /* EOC interrupt Enable */
  ADC_ITConfig(ADC_IT_EOC, ENABLE);
  /* Enable ADC */
  ADC_Cmd(ENABLE);
  /*---------------------------------LCD---------------------------------------*/

  /* LCD Configuration */
  LCD_Init();
  LCD_LineClear(1);
  LCD_LineClear(2);
  LCD_SetPosCur(1,1);
  /* Display "STR730 IAR BOARD" message on LCD: Line 1 */
  LCD_SendStringByStep("STR730 IAR BOARD", 1, 1);
  LCD_Wait (40000);
  LCD_SetPosCur(2,1);
  /* Display "ADC:" message on LCD: Line 2 */
  LCD_SendStringByStep(buffer,2, 1);

 while(1)
 {
  /* Start ADC conversion */
   ADC_ConversionCmd (ADC_ConversionStart);
   buffer[8] = unite(Conversion_Value);
   buffer[7] = dixaine(Conversion_Value);
   buffer[6] = centaine(Conversion_Value);
   buffer[5] = millier(Conversion_Value);
   buffer[9] = 0;
   /* Display ADC conversion Value on LCD */
   LCD_SendStringByStep(&buffer[5],2, 5);
   CPIO_Value = 0;

   for(u32 i = (u32)((float)Conversion_Value/60); i; i--)
   {
    CPIO_Value <<= 1;
    CPIO_Value |= 1;
   }
   GPIO_WordWrite(GPIO0,CPIO_Value);

  }
 }


/******************* (C) COPYRIGHT 2005 STMicroelectronics *****END OF FILE****/

























































































⌨️ 快捷键说明

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