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);
}
}
请帮我看一下是什么地方出现了问题 谢谢 有末实现的中断ISR,
查IPSR寄存器就知道是哪个中断发生了。 aozima 发表于 2014-4-3 10:24
有末实现的中断ISR,
查IPSR寄存器就知道是哪个中断发生了。
刚刚接触不太明白 请详说 没有中断入口 在启动代码中没有没有找打USART3_IRQHandler向量 gnocy 发表于 2014-4-3 10:54
在启动代码中没有没有找打USART3_IRQHandler向量
那我应该如何修改呢 找到问题了,是把UART3_IRQHandler写成了USART3_IRQHandler 真不应该啊
现在还有个问题在没有发送数据给MCU的时候 为什么总是进入UART3_IRQHandler函数?不太理解 进入中断后没有清掉中断标志? lusson 发表于 2014-4-3 11:30
进入中断后没有清掉中断标志?
重新上电一次就好了,真是莫名其妙 gnocy 发表于 2014-4-3 10:54
在启动代码中没有没有找打USART3_IRQHandler向量
请帮我看看这个问题出在哪里了谢谢http://www.amobbs.com/thread-5577720-1-1.html
页:
[1]