打印

求助,关于arm7定时器中断的问题,进入不了中断服务程序

[复制链接]
3362|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
你好陌生人|  楼主 | 2013-4-11 16:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <NXP\iolpc2148.h>
#include <stdio.h>
#include <intrinsics.h>     //中断头文件
#include "pll.h"

void Timer0_int(void);

const unsigned char TABLE[3]={1,4,8};  //占空比改变的值放到一个数组里

/**************************延时**************************/
void  Delay(unsigned int  dly)
{  
  unsigned int  i;
   for(; dly>0; dly--)
      for(i=0; i<5000; i++);
}

//主函数
void main(void)
{
  char i;
  
  PLL_Init();
  PINSEL1 = (0x03<<12);      //MAT0.0连接到管脚
  
  T0EMR = 0x01;             //高电平
  T0EMR = 0x01<<4;          //匹配低电平
  
  
  T0PR = 0;                 //9+1个Fpclk,TC增加一次
  
  T0MCR = 0x18;            //当MR1和TC相等时,TC复位,产生中断
  T0MR1 = 15000000;       //PWM的时钟频率为APB时钟频率的1/1000
  T0MR0 = T0MR1/10;         //占空比为90%
  
  T0TCR = 0x02;             //定时计数器复位
  T0TCR = 0x01;             //定时器使能
  
  VICIntSelect = 0x00;
  VICVectCntl0 = 0x20|VIC_TIMER0;
  VICVectAddr0 = (unsigned int)Timer0_int;  
  VICIntEnable = (1<<VIC_TIMER0);
  
  __enable_interrupt();
  
  while(1)
  {
    for(i=0;i<3;i++)
    {
      T0MR0 = T0MR1*TABLE[i]/10;//改变占空比
      Delay(1000);
    }
  }
}

//定时器1中断
void Timer0_int(void)
{
// T0IR = 0x02;
  
  T0EMR= 0x01|0x01<<4;     //高电平
  
  VICVectAddr = 0;
}

//irq 中断入口
#pragma vector=IRQV
__irq __arm void irq_handler (void)
{
  void (*interrupt_function)();
  unsigned int vector;

  vector = VICVectAddr;     //获得中断向量.
  interrupt_function = (void(*)())vector;
  if(interrupt_function != NULL)
  {
    interrupt_function();  //调用向量中断函数.
  }
  else
  {
    VICVectAddr = 0;      //清除VIC中的中断.
  }
}

//fiq中断入口
__fiq __arm void fiq_handler (void)
{
  while(1);
}
T0IR中断寄存器一直保持着TM0中断复位状态,进入不到中断服务程序

相关帖子

沙发
你好陌生人|  楼主 | 2013-4-11 16:52 | 只看该作者
怎么没有人回答啊?

使用特权

评论回复
板凳
jlass| | 2013-4-11 17:17 | 只看该作者
不要老是一段代码扔上来,在没有硬件的情况下,根本没发看。

使用特权

评论回复
地板
你好陌生人|  楼主 | 2013-4-12 09:31 | 只看该作者
jlass 发表于 2013-4-11 17:17
不要老是一段代码扔上来,在没有硬件的情况下,根本没发看。

这是nxplpc2148的芯片,现在主要是进入不了中断服务程序,求大神赐教啊

使用特权

评论回复
5
airwill| | 2013-4-13 07:16 | 只看该作者
新人啊。
最好先对比现成的例子,拿例子程序来下手。

使用特权

评论回复
6
你好陌生人|  楼主 | 2013-4-13 09:35 | 只看该作者
airwill 发表于 2013-4-13 07:16
新人啊。
最好先对比现成的例子,拿例子程序来下手。

我就是那现成的例子,人家是用ads编译的 ,我把它抑制到iar上就成这样了,求版主解决啊

使用特权

评论回复
7
2012CMD| | 2013-4-13 10:10 | 只看该作者
曾经遇到过,下载到nand flash的0地址或者nor flash中即可,因为你在nor启动后下载到0x30000000中中断向量表不能正确加载(中断向量表本来要加载到0地址处,现在被你那个uboot或者什么boot的东东占据了位置)

使用特权

评论回复
8
你好陌生人|  楼主 | 2013-4-13 15:55 | 只看该作者
2012CMD 发表于 2013-4-13 10:10
曾经遇到过,下载到nand flash的0地址或者nor flash中即可,因为你在nor启动后下载到0x30000000中中断向量 ...

谢谢啊,我试一下

使用特权

评论回复
9
310808020114| | 2013-5-19 19:02 | 只看该作者
2012CMD 发表于 2013-4-13 10:10
曾经遇到过,下载到nand flash的0地址或者nor flash中即可,因为你在nor启动后下载到0x30000000中中断向量 ...

我是新手,请问我该如何下载到norflash的0地址呢,如何设置?我试过,但没有成功

使用特权

评论回复
10
310808020114| | 2013-5-19 19:04 | 只看该作者
310808020114 发表于 2013-5-19 19:02
我是新手,请问我该如何下载到norflash的0地址呢,如何设置?我试过,但没有成功 ...

也遇到同样的问题了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

152

帖子

1

粉丝