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

📄 temperature.c

📁 最新版IAR FOR ARM(EWARM)5.11中的代码例子
💻 C
字号:
/*************************************************************************
 *
 *    Used with ICCARM and AARM.
 *
 *    (c) Copyright IAR Systems 2006
 *
 *    File name   : temperature.c
 *    Description : Temperature measurement functions
 *
 *    History :
 *    1. Date        : July 25, 2005
 *       Author      : Stanimir Bonev
 *       Description : Created
 *
 *    2. Date        : Aug. 14, 2006
 *       Author      : Todor Atanasov
 *       Description : Changed
 *
 *    $Revision: 7414 $
 **************************************************************************/
#include "Temperature.h"
#include "arm_comm.h"
#include "adc.h"

Int32U DataBuf[16];
Int32U Result;
Int8U  DataInd;

Flo32 K = 1.0;
Flo32 Temperature;

/*************************************************************************
 * Function Name: TempConverter
 * Parameters:    Flo32 Temperature,
 *                tTemperatureUnits CurrUnit ,
 *                tTemperatureUnits Unit
 * Return:        Float
 * Description: Convert the temperature from "Current Units" to " Desired Units"
 *
 *************************************************************************/
Flo32 TempConverter(Flo32 Temperature,tTemperatureUnits CurrUnit , tTemperatureUnits Unit)
{
  if(CurrUnit != Unit)
  {
    switch(CurrUnit)
    {
    case KELVIN:
      if(Unit == CELSIUS)
      {
        Temperature += KELVIN_TO_CELSIUS_OFFSET;
      }
      else
      {
        Temperature *= GRADUS_TO_FAHRENHEIT_GRADUS;
        Temperature += KELVIN_TO_FAHRENHEIT_OFFSET;
      }
      break;
    case CELSIUS:
      if(Unit == KELVIN)
      {
        Temperature -= KELVIN_TO_CELSIUS_OFFSET;
      }
      else
      {
        Temperature *= GRADUS_TO_FAHRENHEIT_GRADUS;
        Temperature += CELSIUS_TO_FAHRENHEIT_OFFSET;
      }
      break;
    case FAHRENHEIT:
      if(Unit == KELVIN)
      {
        Temperature -= KELVIN_TO_FAHRENHEIT_OFFSET;
        Temperature /= GRADUS_TO_FAHRENHEIT_GRADUS;
      }
      else
      {
        Temperature -= CELSIUS_TO_FAHRENHEIT_OFFSET;
        Temperature /= GRADUS_TO_FAHRENHEIT_GRADUS;
      }
      break;
    }
  }
  return(Temperature);
}
/*************************************************************************
 * Function Name: MeasureTerm
 * Parameters: none
 *
 * Return: Int32U
 *
 * Description: Measures the NTC channel and filtering the result
 *
 *************************************************************************/
Int32U MeasureTerm (void)
{
Int32U * pData = &DataBuf[DataInd++&0xF];

  Result -= *pData;
  *pData = GetAdcChannel(ADC_CHN_6);
  Result += *pData;
  return(Result >> 4);
}

⌨️ 快捷键说明

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