LPC2387串口中断问题
请问这样初始化有问题么,为啥进不了中断程序,谢谢~void __irq uart0_irq(void)
{
if(0x04 == (U0IIR & 0x0F))
PutFifo();
VICVectAddr = 0x00;
}
void InitSerialPort(void) //9600bps
{
InitialFifo();
PINSEL0 |= 0x50;
PINSEL0 &= ~0xA0;
U0LCR = 0x80;
U0DLM = 0;
U0DLL = 125;
U0LCR = 03;
U0FDR = 0x41;
U0FCR = 0x01;
U0IER |= 0x01;
VICIntEnClr |= 0x40;
VICIntSelect = 0;
VICVectPri6 = 1;
VICVectAddr6 = (unsigned long)uart0_irq;
VICIntEnable |= 0x40;
IRQEnable();
}
为啥? PINSEL0= (PINSEL0 & ~(0xff << 4)) | (0x05 << 4);
U0LCR = 0x83;
Fdiv = (Fpclk / 16) / UART0_BPS; // set baudrate
U0DLM = Fdiv / 256;
U0DLL = Fdiv % 256;
U0LCR = ((U0_DATA_BIT)|(U0_STOP_BIT<<2)|(U0_CHECK_BIT_EN<<3)|(U0_CHECK_BIT<<4));
U0IER = 0x03; // Enable RDA and THRE interrupts
U0FCR = 0xc7;
VICIntSelect &=(~(1<<UART0_INT)); // Eable FIFO
VICVectPri6= 0X07;
VICVectAddr6= (uint32)IRQ_UART0;
VICIntEnable|= (1<<0x06); #define USE_UART 0
// <h>UART0初始化相关配置(CPU主频在CPU.h文件中设置)
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
// <o>UART0_BPS: 串口波特率设置 <1-250000>
// <i> Default: 9600
*/
#define UART0_BPS 9600
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
// <o>U0_DATA_BIT: 数据位配置 <0=> 5位 <1=> 6位 <2=> 7位 <3=> 8位
// <i> Default: 3
*/
#define U0_DATA_BIT 3
// <e>禁止或使能校验位
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
// <o>U0_CHECK_BIT_EN: 校验位使能 <0=> 禁止校验 <1=> 允许校验
// <i> Default: 1
*/
#define U0_CHECK_BIT_EN1
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
// <o>U0_CHECK_BIT: 校验位配置 <0=> 奇校验 <1=> 偶校验 <2=> 强制1 <3=> 强制0
// <i> Default: 0
*/
#define U0_CHECK_BIT 0
// </e>
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
// <o>U0_STOP_BIT: 停止位配置 <0=> 1位 <1=> 2位
// <i> Default: 0
*/
#define U0_STOP_BIT 0
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
// <o>U0_PROIRITY: 串口中断优先级 <0=> 不优先 <1=> 优先
// <i> Default: 1
*/
#define U0_PROIRITY 1
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
// <o>UART0_REC_LENGTH: 接收缓冲区长度字节设置 <1-1024>
// <i> Default: 100
*/
#define UART0_REC_LENGTH 100
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
// <o>UART0_TXD_LENGTH: 发送缓冲区长度字节设置 <1-1024>
// <i> Default: 100
*/
#define UART0_TXD_LENGTH 100 汽车电子的例程。
看看。 我的问题是好像进不了中断
不用中断接收没问题的 改成DEBUGINFLASH好像可以了
但是调试让程序跳到中断服务程序后,
执行了VICVectAddr = 0x00;
VICVectAddr却不等0(查看0xFFFFFF00)
再执行程序就不能中断了
咋回事 不能单步调试。。 ?? 楼主还在吗。。这么多年了** 我现在也进不去了。好像LPC2387这个型号有毒吧
页:
[1]