void InitUart()
{
CLKCONCMD &= ~0x40; // 设置系统时钟源为 32MHZ晶振
while(CLKCONSTA & 0x40); // 等待晶振稳定
CLKCONCMD &= ~0x47; // 设置系统主时钟频率为 32MHZ
PERCFG = 0x00; //位置1 P0口
P0SEL = 0x3c; //P0_2,P0_3,P0_4,P0_5用作串口,第二功能
P2DIR &= ~0XC0; //P0 优先作为UART0 ,优先级
U0CSR |= 0x80; //UART 方式
U0GCR |= 11; //U0GCR与U0BAUD配合
U0BAUD |= 216; // 波特率设为115200
UTX0IF = 0; //UART0 TX 中断标志初始置位1 (收发时候)
U0CSR |= 0X40; //允许接收
IEN0 |= 0x84; // 开总中断,接收中断
}
这是设置UART0的参数设置,和时钟设置。但是 单步调试的时候进入第一条语句
CLKCONCMD &= ~0x40; // 设置系统时钟源为 32MHZ晶振
执行后就报下面的堆栈越界的信息:
Mon Feb 02 15:01:57 2015: The stack 'IdataStack' is filled to 100% (64 bytes used out of 64). The warning threshold is set to 90.%
Mon Feb 02 15:01:57 2015: The stack pointer for stack 'IdataStack' (currently IData:0x00) is outside the stack range (IData:0xC0 to IData:0x100)
调试模式是把程序下载到开发板上单步调试