gpt4 book ai didi

arm - LPC1769 UART中断导致硬故障

转载 作者:行者123 更新时间:2023-12-04 18:08:44 31 4
gpt4 key购买 nike

我刚刚为 UART3 启用了接收中断,但是我一发送数据就遇到了硬故障。这是我初始化它的方式:

LPC_UART_TypeDef *uart;

LPC_SC->PCONP |= 1 << 25;
LPC_PINCON->PINSEL1 |= 0b1111 << 18;

uart = LPC_UART3;
uart->FCR = 0b111; // Reset FIFOs
uart->LCR = 0b10000011;
uart->DLL = 12;
uart->DLM = 0;
uart->FDR = 0xe5;
uart->LCR = 0b00000011;
uart->IER = 1; // Enable RBR interrupt

NVIC_EnableIRQ(UART3_IRQn);

根据 GDB,我的 ISR 甚至没有受到攻击。我已经确认它在我的向量表中的正确位置,并设置了正确的地址和位 0(对于 Thumb-2 模式,就像我所有其他处理程序一样)。事实上,当我用空函数替换 ISR 时,我仍然会报错。这是我的故障处理程序的输出:

Hard fault FORCED 
r0 = 0000000a
r1 = 0000000b
r2 = 000002ed
r3 = 00000000
r12 = 00000000
lr = fffffffd
pc = 00000000
psr = 60000218
BFAR = e000ed38
CFSR = 00020000
DFSR = 00000000
AFSR = 00000000
SHCSR = 00070000

LR 和 PC 似乎都不是很有帮助。这是我添加的第一个 IRQ。所有其他向量表条目均为 SysTick 及以下。

如何找出导致故障的原因?

这是我的向量表:

.word zeptos_msp_top
.word zeptos_reset_isr
.word 0 /* NMI */
.word zeptos_hardfault_isr_shim
.word zeptos_memmanage_isr
.word zeptos_busfault_isr
.word zeptos_usagefault_isr
.word 0 /* Reserved */
.word 0 /* Reserved */
.word 0 /* Reserved */
.word 0 /* Reserved */
.word zeptos_svc_isr
.word 0 /* DebugMon */
.word 0 /* Reserved */
.word zeptos_pendsv_isr
.word zeptos_systick_isr
.word 0 /* WDT */
.word 0 /* Timer 0 */
.word 0 /* Timer 1 */
.word 0 /* Timer 2 */
.word 0 /* Timer 3 */
.word 0 /* Timer 4 */
.word 0 /* UART 0 */
.word 0 /* UART 1 */
.word 0 /* UART 2 */
.word zeptos_uart3_isr

最佳答案

PC 寄存器的 0x00 在向量表中看起来像 0x00000000 一样可疑。检查你的中断向量表是否正确,lpc176x上UART3的句柄在24位。

表条目 ((uint32_t*)0x00000)[24] 必须指向您的处理程序加上拇指位。

关于arm - LPC1769 UART中断导致硬故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19972412/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com