sytu_chyq 发表于 2010-6-21 17:47

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();
}

sytu_chyq 发表于 2010-6-22 14:41

为啥?

hqgboy 发表于 2010-6-22 16:54

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);

hqgboy 发表于 2010-6-22 16:54

#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

hqgboy 发表于 2010-6-22 16:55

汽车电子的例程。
看看。

sytu_chyq 发表于 2010-6-24 08:37

我的问题是好像进不了中断
不用中断接收没问题的

sytu_chyq 发表于 2010-6-24 12:04

改成DEBUGINFLASH好像可以了
但是调试让程序跳到中断服务程序后,
执行了VICVectAddr = 0x00;
VICVectAddr却不等0(查看0xFFFFFF00)
再执行程序就不能中断了
咋回事

sytu_chyq 发表于 2010-6-24 14:05

不能单步调试。。

sytu_chyq 发表于 2010-6-24 14:05

??

13039826907 发表于 2019-1-10 14:24

楼主还在吗。。这么多年了** 我现在也进不去了。好像LPC2387这个型号有毒吧
页: [1]
查看完整版本: LPC2387串口中断问题