|
发表于 2010-12-12 15:59:51
|
显示全部楼层
楼主你好:
我是新学ARM,按网上的例子作UART仿真,单独在KEIL或PROTEUS下全速运行时没有问题,KEIL和PROTEUS联调全速运行时也没有问题,但是单步调试的时候,KEIL就进入了死机状态。XP系统,KEIL4.12+PROTEUS7.7.
程序如下:
#include <LPC21xx.H>
#define cr 0x0D
del()
{
int i,j;
for (i=0;i<+50000;i++)
for (j=0;j<=5;j++);
}
char tab1[]={"xdlThe LED is down!\n"};
char tab2[]={"xdlThe LED is up!\n"};
int sentchar(int ch)
{
if (ch=='\n')
{while (!(U0LSR&0x40));
U0THR=cr;
}
while(!(U0LSR&0X40));
return(U0THR=ch);
}
void senttab(char *p)
{
while (*p!='\0')
{
sentchar(*p++);
} }
int main(void)
{
PINSEL0=0X00000005;
U0LCR=0X83;
U0DLL=88;
U0LCR=0X03;
while(1)
{
del();
senttab(tab1);
del();
senttab(tab2);
}
}
问题:
1.单步联调运行到while(!(U0LSR&0X40));时KEIL就死机(95%的时候死机,有时第一次通过,再次的时候过不了)。
2.仿真用的频率是11.0592M的,U0DLL应设定为72,实际上设定为88是才正常,波特率应设定多少?。 |
|