zhcj66 发表于 2014-4-3 10:18:56

LPC4357串口中断死在B .上

LPC4357中有个问题实在搞不明白想请教一下 关于串口3
程序只要添加NVIC_EnableIRQ(USART3_IRQn);就会死掉
死在startup_LPC43xx.s 307行的B.
M0s_IRQHandler
CAN0_IRQHandler
QEI_IRQHandler

                B       .

                ENDP

我的代码 如果采用扫描模式 发送和接收正常,就是加了接收中断就不行了
初始化串口3如下
void UART3Init(void)
{
   /* Enable GPIO register interface clock                                     */
   LPC_CCU1->CLK_M4_GPIO_CFG   |= 1;
   while (!(LPC_CCU1->CLK_M4_GPIO_STAT   & 1));

   // Enable USART3 peripheral clock      见手册UM10503-P199      
   LPC_CCU2->CLK_APB2_USART3_CFG |= 1;
   while (!(LPC_CCU2->CLK_APB2_USART3_STAT & 1));

   //Enable USART3 register interface clock 见手册UM10503-P198
   LPC_CCU1->CLK_M4_USART3_CFG   |= 1;
   while (!(LPC_CCU1->CLK_M4_USART3_STAT & 1));

   // Init GPIO pins   见手册UM10503-P389和P403
   LPC_SCU->SFSP2_3 =(1 << 6) |      /* Input buffer enabled               */
            (1 << 4) |      /* Pull-up disabled                   */
            (2 << 0) ;      /* Pin P2_3 used as U3_TXD            */

   LPC_SCU->SFSP2_4 =(1 << 6) |      /* Input buffer enabled               */
            (1 << 4) |      /* Pull-up disabled                   */
            (2 << 0) ;      /* Pin P2_4 used as U3_RXD            */

   // Init USART3 见UM10503手册P1099
   LPC_USART3->LCR    = 0x83;            /* 8 bits, no Parity, 1 Stop bit      */
   LPC_USART3->DLL    = 0x06;            /* 115200 Baudrate @ 12 MHz IRC       */
   LPC_USART3->DLM    = 0x00;
   LPC_USART3->FDR    = 0xC1;
   LPC_USART3->LCR    = 0x03;            /* DLAB = 0                           */
   
   LPC_USART3->IER   |= (1<<0);//使能接收中断
/* preemption = 1, sub-priority = 1 */
    NVIC_SetPriority(USART3_IRQn, ((0x01<<3)|0x01));
   /* Enable Interrupt for UART1 channel */
    NVIC_EnableIRQ(USART3_IRQn);
}

void USART3_IRQHandler (void)
{
   if (LPC_USART3->LSR & 0x01)
   {
      USART3_Putc(LPC_USART3->RBR);
   }
}
请帮我看一下是什么地方出现了问题 谢谢

aozima 发表于 2014-4-3 10:24:30

有末实现的中断ISR,
查IPSR寄存器就知道是哪个中断发生了。

zhcj66 发表于 2014-4-3 10:43:16

aozima 发表于 2014-4-3 10:24
有末实现的中断ISR,
查IPSR寄存器就知道是哪个中断发生了。

刚刚接触不太明白 请详说

gnocy 发表于 2014-4-3 10:53:27

没有中断入口

gnocy 发表于 2014-4-3 10:54:19

在启动代码中没有没有找打USART3_IRQHandler向量

zhcj66 发表于 2014-4-3 11:02:37

gnocy 发表于 2014-4-3 10:54
在启动代码中没有没有找打USART3_IRQHandler向量

那我应该如何修改呢

zhcj66 发表于 2014-4-3 11:23:44

找到问题了,是把UART3_IRQHandler写成了USART3_IRQHandler 真不应该啊
现在还有个问题在没有发送数据给MCU的时候 为什么总是进入UART3_IRQHandler函数?不太理解

lusson 发表于 2014-4-3 11:30:51

进入中断后没有清掉中断标志?

zhcj66 发表于 2014-4-3 13:08:23

lusson 发表于 2014-4-3 11:30
进入中断后没有清掉中断标志?

重新上电一次就好了,真是莫名其妙

zhcj66 发表于 2014-4-19 10:56:36

gnocy 发表于 2014-4-3 10:54
在启动代码中没有没有找打USART3_IRQHandler向量

请帮我看看这个问题出在哪里了谢谢http://www.amobbs.com/thread-5577720-1-1.html
页: [1]
查看完整版本: LPC4357串口中断死在B .上