在线情况
楼主
  • 头像
  • 级别
    • 积分7
    • 经验630
    • 文章5
    • 注册2012-06-19
    请教!关于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]
    微控网感谢您的参与
    在线情况
    2
    • 头像
    • 级别
      • 积分19
      • 经验632
      • 文章26
      • 注册2011-10-10
      [P]我也碰到这样的问题,内置温度传感器不正常,我已经放弃使用它了。[/P]
      微控网感谢您的参与
      在线情况
      3
      • 头像
      • 级别
      • 门派
      • 职务总版主
      • 声望+9
      • 财富5
      • 积分3065
      • 经验390701
      • 文章6744
      • 注册2006-03-07
      [P]到目前为止,我还没打算用这个功能...。[/P][P]我想大概测测估算周围环境还行,依赖他的测量高精度那就别了。[/P]
      [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
      Powered by LeadBBS 9.2 .
      Page created in 0.1719 seconds with 9 queries.