高分!!100分!!!及待高手解决LPC2148的入门问题
望高手指点,一个小的定时器中断程序,在中断程序里面清oled的显示
定时时间为1s,使用芯片为LPC2148
问题解决后,立马给分!!!
#include <NXP/IOLPC2148.h>
#include "config.h"
void Time0Init();
void Timer0_ISR();
void Time0Init()
{
//定时时间=MR*(PR+1)/FPCLK
T0IR=1;//清除中断
T0TC=0;//定时器设置为0
T0PR=0;//时钟不分频,即每个PCLK周期,32位TC(定时器计数器)加1,PCLK=11.0592MHz
T0MCR=0x03;//设置T0MR0匹配后复位T0TC,并产生中断
T0MR0=Fpclk;//设置匹配寄存器,该句设置MR0为115,即每过115个PCLK周期,定时器计数器TC加1
T0TCR=0x01;//启动定时器T0
//VICVectAddr = 0;
VICIntSelect=VICIntSelect&(~(1<<4));//定时器0中断分配为IRQ中断
VICVectCntl0=0x20|4;
VICVectAddr0=(uint32)Timer0_ISR;
VICIntEnable=(0<<4);
}
void main(void)
{
Init_SO12864();
OLED_Init();
OLED_CLS();
Dis_String(0,0,"WELCOME ++TO");
Delay_ms(2000);
Time0Init();
while(1);
}
void Timer0_ISR()
{
OLED_CLS();
}
[解决办法]
有什么问题》》》》
[解决办法]
参考例子
http://bbs.21ic.com/icview-207401-1-1.htmlhttp://blog.21ic.com/user1/3841/archives/2008/49938.html
[解决办法]
__irq void Timer0_ISR(){ OLED_CLS(); }
[解决办法]
//VICVectAddr = 0;
VICIntSelect=VICIntSelect&(~(1<<4));//定时器0中断分配为IRQ中断
VICVectCntl0=0x20|4;
VICVectAddr0=(unsigned int)Timer0_ISR;
VICIntEnable=(1<<4);
}
int main(void)
{
unsigned char done;
OLED_CLS();
Delay_ms(2000);
Time0Init();
done=0;
while(!done);
return 0;
}
void Timer0_ISR()
{
OLED_CLS();
}
这段代码加上一个startup.s在keil4下面软仿真可进中断。