2358|5

314

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

问:lm3s9b92显示芯片温度实验 出问题 [复制链接]

 我自己新建了一个工作区,把源程序直接拷贝进去,子文件该加也添加了进去,Options 也做了相应修改,运行时,其他显示都没问题,就是温度值显示不了,请问可能的原因是什么?(编译没有任何错误)

(程序是光盘里的,可以运行也能够显示温度值。)

[ 本帖最后由 喜鹊王子 于 2012-3-7 19:57 编辑 ]

最新回复

  详情 回复 发表于 2012-3-8 07:59
点赞 关注
 

回复
举报

424

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
按照IAR的建工程的说明再建立一遍试试吧,Options要与原来的工程一样。
不然能有什么办法?
 
 
 

回复

569

帖子

0

TA的资源

五彩晶圆(中级)

板凳
 
楼主用的是什么开发板?用什么方式显示温度?UART吗?

楼主查一下是UART没有发送数据,还是ADC没有采样到数据。

楼主要说详细点,最好把程序贴出来。
 
 
 

回复

314

帖子

0

TA的资源

纯净的硅(初级)

4
 

回复 板凳 hlx3012 的帖子

//————————————————头文件————————————————————
#include "inc/hw_ints.h"//硬件中断
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"//硬件类型
#include "driverlib/gpio.h"//GPIO
#include "driverlib/sysctl.h"//系统
#include "grlib/grlib.h"//画图
#include "drivers/kitronix320x240x16_ssd2119_8bit.h"
#include "drivers/set_pinout.h"
#include "driverlib/interrupt.h"//中断
#include "driverlib/comp.h"//comp
#include "driverlib/systick.h"//systick
#include "driverlib/adc.h"//adc
#include  
//———————————————————————————————————————
tContext sContext;//声明绘图
tBoolean ADC_EndFlag = false;//定义A/D转换结束的标志                              
unsigned long TheSysClock = 12000000UL;//定义系统时钟12MHZ
//———————————————————————————————————————
// The error routine that is called if the driver library encounters an error.
//———————————————————————————————————————
#ifdef DEBUG4
void
__error__(char *pcFilename, unsigned long ulLine)
{
}
#endif
//———————————————————————————————————————
//******************************************************************************
//  Initialize the System timer (SysTick)初始化
void SysTickInit(void)
{   // Set the period of the SysTick
    SysTickPeriodSet(TheSysClock);//SysTick(一个简单的定时器)的周期   
    // Enable SysTick interrupts
    SysTickIntEnable();//使能SysTick中断   
    // Enable System interrupts
    IntMasterEnable();//使能处理器中断   
    // Enable the SysTick
    SysTickEnable();//使能SysTick计数器                                       
}
//******************************************************************************
//———————————————————————————————————————
// Display the temperature of the chip
void tmpDisplay(unsigned long ulValue)
{
    unsigned long ulTemp;
    char pcBuffer1[4];
    char pcBuffer2[3];
   
    ulTemp = 151040UL - 225 * ulValue;//(ADC采样值转化为温度值)的1024倍
    pcBuffer1[0] = ' ';//空格
    pcBuffer1[1] = (ulTemp/1024)%100/10 + '0';//十位
    pcBuffer1[2] = (ulTemp/1024)%10 + '0';//个位
    pcBuffer1[3] = '\0';//结束符
    GrContextFontSet(&sContext, &g_sFontCm36b);//字体设置
    GrStringDrawCentered(&sContext, pcBuffer1, -1, 110, 180, 1);//写整数部分   
    pcBuffer2[0] = '.';//小数点
    pcBuffer2[1] = (ulTemp%1024)/102+'0';//小数
    pcBuffer2[2] = '\0';//结束符
    GrContextFontSet(&sContext, &g_sFontCm36b);//字体设置
    GrStringDrawCentered(&sContext, pcBuffer2, -1, 150, 180, 1);//写小数部分  
}
//———————————————————————————————————————
//******************************************************************************
//  SysTick ISR SysTick的中断服务函数
void SysTick_ISR(void)
{    //  Just used to wake up CPU,do nothing 唤醒CPU
}
//******************************************************************************
//———————————————————————————————————————
//  ADC Sequence 3 ISR   ADC序列3的中断服务函数
void ADC_Sequence_3_ISR(void)
{    unsigned long ulStatus;
    //Get interrupt status
    ulStatus = ADCIntStatus(ADC_BASE, 3, true);//获取当前的中断状态   
    // Clear interrupts
    ADCIntClear(ADC_BASE, 3);//清除中断状态,重要                             
    // If interrupt status is ture, set ADC ending flag as ture
    //如果中断状态有效,置位ADC采样结束标志
    if (ulStatus != 0)                                      
    {
        ADC_EndFlag = true;                                 
    }
}
//如果中断状态值为真,则将中断结束标志置为真,真表示需要屏蔽的中断状态
//假表示需要原始的中断状态
//———————————————————————————————————————
int main(void)
{    unsigned long ulValue;  
    // Set the clocking to run directly from the crystal.
    SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_OSC|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);   
    // Get system clock
    TheSysClock = SysCtlClockGet();//获取处理器时钟速率                  
    // Initialize the device pinout appropriately for this board.
    //—————————————初始化显示驱动—————————————————
    PinoutSet();   
    // Initialize the display driver and graphics context.
    Kitronix320x240x16_SSD2119Init();
    //—————————————————————————————————————
    GrContextInit(&sContext, &g_sKitronix320x240x16_SSD2119);//初始化a drawning context
    //————————————————设置方框—————————————————
    tRectangle sRect;   
    sRect.sXMin = 0;
    sRect.sYMin = 0;
    sRect.sXMax = GrContextDpyWidthGet(&sContext) - 1;
    sRect.sYMax = 23;
    //—————————————————————————————————————
    GrContextForegroundSet(&sContext, ClrDarkBlue);
    GrRectFill(&sContext, &sRect);
    GrContextForegroundSet(&sContext, ClrWhite);
    GrRectDraw(&sContext, &sRect);
    GrContextFontSet(&sContext, &g_sFontCm20);
    GrStringDrawCentered(&sContext, "Lab7-2: ADC Controls", -1,GrContextDpyWidthGet(&sContext) / 2, 10, 0);   
    // Operation Tips
    GrContextFontSet(&sContext, &g_sFontCm26b);
    GrStringDrawCentered(&sContext, "Temperature Sample", -1,GrContextDpyWidthGet(&sContext) / 2, 60, 1);
    GrContextFontSet(&sContext, &g_sFontCm16);
    GrStringDrawCentered(&sContext, "Sample from the internal temperature sensor,", -1,GrContextDpyWidthGet(&sContext) / 2, 100, 1);
    GrStringDrawCentered(&sContext, "the current temperature of MCU is :", -1,GrContextDpyWidthGet(&sContext) / 2, 140, 1);
    GrStringDrawCentered(&sContext, "o", -1,GrContextDpyWidthGet(&sContext) / 2+20, 165, 1);
    GrContextFontSet(&sContext, &g_sFontCm36);
    GrStringDrawCentered(&sContext, "C", -1,GrContextDpyWidthGet(&sContext) / 2+35, 180, 1);   
    // Initialize the ADC0.
    // Enable ADC0                          
    SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);//使能ADC0           
    // Set the sample rate of ADC0
    SysCtlADCSpeedSet(SYSCTL_ADCSPEED_125KSPS);//设置ADC采样速率   
    // Disable before setting
    ADCSequenceDisable(ADC_BASE, 3);//禁止一个采样序列   
    // Configure sample sequence:ADC base address,sample sequence number,trigger event,and priority
    ADCSequenceConfigure(ADC_BASE, 3, ADC_TRIGGER_PROCESSOR, 0);//采样序列配置,0表示最高优先级   
    // Sample step setup:ADC base address,sample sequence number,step value,channel setting
    ADCSequenceStepConfigure(ADC_BASE, 3, 0, ADC_CTL_TS|ADC_CTL_END|ADC_CTL_IE);//采样步进设置   
    // Enable ADC interrupt
    ADCIntEnable(ADC_BASE, 3);//使能ADC中断                           
    // Enable interrupt for ADC sequence 3
    IntEnable(INT_ADC3);//使能ADC采样序列中断                           
    // Enable system clock
    IntMasterEnable();//使能处理器中断  
    // Start Sampling
    ADCSequenceEnable(ADC_BASE, 3);//使能采样序列
    // Initialize SysTick
    SysTickInit();//SysTick初始化                                       
    while(1)
    { // fall into sleep mode
      SysCtlSleep();//使处理器进入睡眠模式      
      //  Process
      ADCProcessorTrigger(ADC_BASE, 3);//处理器触发采样序列      
      // Waiting for sample complete
      while (!ADC_EndFlag);                          
      // Clear flag
      ADC_EndFlag = false;                                 
      ADCSequenceDataGet(ADC_BASE, 3, &ulValue);//获取采样序列3捕获的数据
      // Display the current temperature of the CPU
      tmpDisplay(ulValue);                                 
      GrFlush(&sContext);        
    }
}
 
 
 

回复

1万

帖子

16

TA的资源

版主

5
 

中断相量没设吧,在。S文件里

个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 
 

回复

314

帖子

0

TA的资源

纯净的硅(初级)

6
 

回复 5楼 ddllxxrr 的帖子

我用的IAR编译环境,我在单步运行的时候,运行到SysCtlSleep();//使处理器进入睡眠模式  的时候单步运行的按钮就灰了。。。。而原来的文件中运行则不会这样。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表