永发信息网

初学ARM7-LPC2131,但是定时器中断无论如何不能产生。程序是从周立功书上抄的。请高手指点迷津。困惑很久!

答案:5  悬赏:60  手机版
解决时间 2021-04-01 06:12
  • 提问者网友:蔚蓝的太阳
  • 2021-04-01 00:24
初学ARM7-LPC2131,但是定时器中断无论如何不能产生。程序是从周立功书上抄的。请高手指点迷津。困惑很久!
最佳答案
  • 五星知识达人网友:醉吻情书
  • 2021-04-01 01:00
T0TCR=0x01; //启动定时器

把上面这句改为T0TCR=0x03;
T0TCR=0x01;
可能是定时器没有复位,再试试?
全部回答
  • 1楼网友:山河有幸埋战骨
  • 2021-04-01 04:10
是不是进去了你没发现?可以在在中断里给一个IO电平翻转,用过测试它验证。
  • 2楼网友:笑迎怀羞
  • 2021-04-01 03:02
#include
#define uint8 unsigned char
#define uint32 unsigned int
void Timer0_ISR(void) __attribute__ ((interrupt));
uint8 num;
void DelayNs(uint32 dly)
{
uint32 i;
for(;dly>0;dly--)
for(i=5000;i>0;i--);
}
void Timer0_ISR(void)
{
T0IR = 0x01;
IO0SET = 0x00000001;
DelayNs(400);
IO0CLR = 0x00000001;
}
void Timer0Init(void)
{
T0IR = 0x01;
T0PR = 99;
T0MCR = 0x03;
T0MR0 = 110592/100;
T0TCR = 0x01;
VICIntSelect = 0;
VICVectCntl0 = 0x00000024;
VICVectAddr0 = (int)Timer0_ISR;
VICIntEnable = 0x00000010;
}
int main()
{
PINSEL0 = 0x00000000;
IO0DIR = 0x00000001;
Timer0Init();
while(1);
}
没看出什么错误 上面的例子我做的 验证过了 可以进入中断 虽然也存在着一点警告 不过可以。我看过了 ZLG的貌似不错
  • 3楼网友:笑迎怀羞
  • 2021-04-01 01:36
将定时器启动放到中断使能后,并且清除一下中断标志位。试一下吧。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯