我为 LPC1857 制作了一个工作程序,它启用了中断,每个 systick 中断然后调用一些函数。它与 LPC1857 完美配合。当我尝试在 LPC1850 上运行相同的程序时,程序执行跳转到 0xFFFFFFFE 并在中断发生时停止。在 SystickHandler 中调用的函数永远不会被调用。看起来程序为处理程序获取了错误的地址,但我不明白这是怎么回事。发生这种情况时,LR 指向 0xFFFFFFF9。这两个地址都是保留的。
我更改了 LPC1850 的链接器文件(与 LPC1857 项目的唯一区别,除了一些不相关端口的初始化),它看起来像这样:
ENTRY(_start)
INPUT(& &)
MEMORY
{
FLASH (rx) : ORIGIN = 0x1C000000, LENGTH = 16M
SRAM (rwx) : ORIGIN = 0x10000000, LENGTH = 64K
}
SECTIONS
.text :
{
_text = .;
KEEP(*(.isr_vector))
*startup.o(.text)
*(.text*)
*(.glue_7t) *(.glue_7)
*(.rodata*)
_text_end = .;
} > SRAM
.bss :
{
_bss = .;
*(.bss*)
*(COMMON)
_bss_end = .;
. = ALIGN(4);
} > SRAM
.data : AT (ADDR(.text) + SIZEOF(.text))
{
_data = .;
*(vtable)
*(.data*)
_data_end = .;
} > SRAM
. = ALIGN(4);
.ARM.extab : {
*(.ARM.extab*)
} > SRAM
. = ALIGN(4);
__exidx_start = ABSOLUTE(.);
.ARM.exidx : {
*(.ARM.exidx*)
} > SRAM
__exidx_end = ABSOLUTE(.);
.stack :
{
_stack_top = . + SIZEOF(.stack);
} > SRAM
}
你知道我错过了什么吗?如果您需要任何其他信息,请告诉我。提前致谢!!