和ADC的设置基本相同,算是ADC的扩展应用。
只是在计算方法上有变化,在adc的初始化程序里面做一些变动就可以了。
包含函数:

(1)Main
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 实验平台 : ST 官方三合一套件 
+ 硬件     : STM32F103C8T6
+ 开发平台 : IAR For ARM 5.40
+ 仿真器   : J-Link
+ 日期     : 2010-10-28
+ 频率     :HSE = 8MHz ,主频 = 72MHz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
#include "includes.h"
#include "stdio.h"
/*******************************************************************************
                             == 变量声明 == 
*******************************************************************************/
float ADC_Value,Tem;
unsigned char a=" 0;unsigned char b=" 0;unsigned char c=" 0;unsigned char d=" 0;
/*******************************************************************************
                             == Main 函数 == 
*******************************************************************************/
void main(void)
{ 
//---- 初始化 ------------------------------------------------------
RCC_Configuration();    //配置系统时钟 
NVIC_Configuration();   //配置 NVIC 和 Vector Table 
SysTick_Config();       //配置SysTick的精确延时
GPIO_Configuration(); 
UART1_Configuration();
AD_Configration();
DMA_Configration();
//---- 任务开始 ---------------------------------------------------- 
LED1_HIGH ; LED2_HIGH ; LED3_HIGH ; LED4_HIGH ; // 初始化让灯全灭
Uart1_PutString("===== douzi STM32 @ Temperature =====\r\n",39);
while (1)
{                                                      // 这里只选采集的10个数据中的一个,应该做一些算法进行滤波才好
         ADC_Value = (float)(sys_analog[5])*330/409600; // 计算公式datasheet上可以找到,但是我没找到。
         Tem = (1.42 - ADC_Value)*1000/4.35 + 25;
       
         Tem = Tem*100 ;                    // ADC是12位的,这里数据类型转换有问题
         a = Tem/1000;
         b = (Tem - a*1000)/100;
         c = (Tem - a*1000 - b*100)/10;
         d = Tem - a*1000 - b*100 - c*10;
                       
          Uart1_PutChar(a+'0');
          Uart1_PutChar(b+'0');
          Uart1_PutString(".",1);
          Uart1_PutChar(c+'0');
          Uart1_PutChar(d+'0');
          Uart1_PutString(" C\n",3);
          
          Delay_Ms(1000);     
}
}
(2)在ADC初始化函数里要变动些内容,关于温度传感器的

文章推荐: