搜索
bottom↓
回复: 5

LM3S的中断无法正常工程

[复制链接]

出0入0汤圆

发表于 2010-12-15 11:24:05 | 显示全部楼层 |阅读模式
今日用LM3S615做了一个定时是中断程序,是用别人的稍加修改过来的,可是把程序下载的板上观看,定时器中断是执行了,可当定时器执行后,好像定时器没有被清零一样就死在那里了,中断服务函数里的语句和主函数里的语句都不执行了。查了查程序感觉没什么问题,一时半会找不去原因来,现把程序贴上,望各位帮忙看看。

#include  "systemInit.h"
#include  <timer.h>


//  定义LED
#define  LED_PERIPH             SYSCTL_PERIPH_GPIOC
#define  LED_PORT               GPIO_PORTC_BASE
#define  LED_PIN                GPIO_PIN_5
#define  LED_TIM                GPIO_PIN_4

#define  ledOn()                GPIOPinWrite(LED_PORT , LED_PIN , 0x00 << 5)
#define  ledOff()               GPIOPinWrite(LED_PORT , LED_PIN , 0x01 << 5)
#define  ledToggle()            GPIOPinWrite(LED_PORT , LED_PIN , ~GPIOPinRead(LED_PORT , LED_PIN))


//  延时
void  delay(unsigned long  ulVal)
{
    while ( --ulVal  !=  0 );
}


//  主函数(程序入口)
int main(void)
{
    jtagWait();                                             //  To prevent JTAG failure,important!
    clockInit();                                            //  System Initialization
   
    SysCtlPeriEnable(LED_PERIPH);                           //  Enable LED in GPIO Port
    GPIOPinTypeOut(LED_PORT, LED_PIN|LED_TIM);              //  Setting Output For LED Foot

    SysCtlPeriEnable(SYSCTL_PERIPH_TIMER0);                 //  Enable the peripherals used by this example
    IntMasterEnable();                                      //  Enable processor interrupts.
    TimerConfigure(TIMER0_BASE, TIMER_CFG_32_BIT_PER);      //  Configure the two 32-bit periodic timers
    TimerLoadSet(TIMER0_BASE, TIMER_A, 3000000UL);          //  Set the Timer0A load value to 500ms

    TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT);        //  Configure the Timer0A interrupt for timer timeout

    TimerEnable(TIMER0_BASE, TIMER_A);                      //  Enable the Timer0A.
    IntEnable(INT_TIMER0A);                                 //  Enable the Timer0A interrupt on the processor (NVIC).

    for (;;)
    {
        ledOn();                                            //  Lit LED
        delay(300 * (TheSysClock / 4000));                  //  Delay 300ms

        ledOff();                                           //  Extinguished LED
        delay(300 * (TheSysClock / 4000));                  //  Delay 300ms
    }
}

//  定时器的中断服务函数
void Timer0A_ISR(void)
{
    unsigned char ucVal;
    unsigned long ulStatus;

    ulStatus = TimerIntStatus(TIMER0_BASE, true);           //  读取中断状态
    TimerIntClear(TIMER0_BASE, ulStatus);                   //  清除中断状态,重要!

    if (ulStatus & TIMER_TIMA_TIMEOUT)                      //  如果是Timer超时中断
    {
        ucVal = GPIOPinRead(LED_PORT, LED_TIM);             //  反转LED
        GPIOPinWrite(LED_PORT, LED_TIM, ~ucVal);
    }
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-12-15 14:20:19 | 显示全部楼层
你的启动代码上面的中断向量表归属你这个定时器中断函数了吗?

出0入0汤圆

 楼主| 发表于 2010-12-21 12:39:18 | 显示全部楼层
我查了一下,是我的中断向量表没有改,现在可以了。

出0入0汤圆

发表于 2011-3-23 12:25:58 | 显示全部楼层
请教一下,中断向量表怎样改啊

出0入0汤圆

发表于 2011-4-20 16:35:00 | 显示全部楼层
你会粘贴,就会改

出0入0汤圆

发表于 2011-7-15 10:53:35 | 显示全部楼层
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-16 01:02

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表