请教!关于msp430内置温度传感器温度测量的问题

楼主
请教!关于msp430内置温度传感器温度测量的问题
[P]我想写一个程序,用来实现采集CPU内部温度,并发送给串口,在PC上显示,但是为什么不显示温度呢?哪位好心人帮忙看看啊 ?困惑我好几天了[EM05][CODE]//******************************************************************************
//******************************************************************************
#include  <msp430x14x.h>
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long
/*当BRCLK=CPU_F时用下面的公式可以计算,否则要根据设置加入分频系数*/
#define baud           9600                                //设置波特率的大小
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式
#define baud_h         (uchar)(baud_setting>>8)            //提取高位
#define baud_l         (uchar)(baud_setting)               //低位
int long temp;
//*************************************************************************
//                    系统时钟初始化
//*************************************************************************
void Clock_Init()
{
  uchar i;
  BCSCTL1&=~XT2OFF;                 //打开XT振荡器
  BCSCTL2|=SELM1+SELS;              //MCLK为8MHZ,SMCLK为8MHZ
  do{
    IFG1&=~OFIFG;                   //清除震荡标志
    for(i=0;i<100;i++)
     _NOP();                      //延时等待
  }
  while((IFG1&OFIFG)!=0);           //如果标志为1,则继续循环等待
  IFG1&=~OFIFG;
}//*************************************************************************
//               MSP430串口初始化
//*************************************************************************
void UART_Init()
{
  U1CTL|=SWRST;               //复位SWRST
  U1CTL|=CHAR;                //8位数据模式
  U1TCTL|=SSEL1;              //SMCLK为串口时钟
  U1BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N
  U1BR0=baud_l;               //N=UBR+(UxMCTL)/8
  U1MCTL=0x00;                //微调寄存器为0,波特率9600bps
  ME2|=UTXE1;                 //UART1发送使能
  ME2|=URXE1;                 //UART1接收使能
  U1CTL&=~SWRST;
  IE2|=URXIE1;                //接收中断使能位
  P3SEL|= BIT6;               //设置IO口为特殊功能模块
  P3DIR|= BIT6;               //设置P3.4为输入,P3.5为输出口
  P3SEL|= BIT7;              //设置IO口为外围功能模块
 
}
//*************************************************************************
//              串口1发送数据函数
//*************************************************************************
  void Send_Byte(uchar data)
    {
      U1TXBUF=data;              
      while ((IFG2 & UTXIFG1)==0);
    }
//*************************************************************************
//            处理来自串口1的发送中断,预留
//*************************************************************************
#pragma vector=UART1TX_VECTOR
__interrupt void UART1_TX_ISR(void)
{
}
//************主函数*********************************************************//
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  ADC12CTL0 = SHT0_8 + REFON + ADC12ON;
  ADC12CTL1 = SHP;                          // enable sample timer
  ADC12MCTL0 = SREF_1 + INCH_10;
  ADC12IE = 0x001;
  ADC12CTL0 |= ENC;
  while(1)
  {
    ADC12CTL0 |= ADC12SC;                   // Sampling and conversion start
    _BIS_SR(CPUOFF + GIE);                  // LPM0 with interrupts enabled
 
  }
}
//**************ADC中断函数***************************************************//
#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR (void)
  {
    temp = ADC12MEM0;                       // Move results, IFG is cleared
     Send_Byte(temp);
    _BIC_SR_IRQ(CPUOFF);                    // Clear CPUOFF bit from 0(SR)
  }
[/CODE][/P]
1楼
[P]我也碰到这样的问题,内置温度传感器不正常,我已经放弃使用它了。[/P]
2楼
[P]到目前为止,我还没打算用这个功能...。[/P][P]我想大概测测估算周围环境还行,依赖他的测量高精度那就别了。[/P]

电脑版 Page created in 0.1562 seconds width 3 queries.