节日快乐:
我公司开发基于DA1458X DSPS的应用,用的是自己的版,但是代码基于官方DSPS。从主处理器能通过UART发送并启动DA14580的程序,但是之后通过同样的UART串口(115200波特率)发送一个包,调试器并没有跳到__wrap_UART_Handler函数里。UART初始化和GPIO设定与官方DSPS一致,除了调试时睡眠模式是关闭的。暂停调试器发现正在无限运行以下反汇编:
0x00028158 6B00 LDR r0, [r0, #0x30]
0x0002815A 4700 BX r0
0x0002815C B510 PUSH {r4,lr}SystemInit
0x0002815E 4822 LDR r0,[pc,#136] ; @0x000281E8
0x00028160 6881 LDR r1,[r0,#0x08]
0x00028162 0709 LSLS r1,r1,#28]
0x00028164 0F09 LSRS r1,r1,#28main
0x00028166 2901 CMP r1,#0x0184] ; @0x20003A80
0x00028168 D01A BEQ 0x000281A0
根据map文件显示地址是在运行UART_Handler (0x00028157), 因为实在ROM,看不到源代码。求教如何让程序跳转到uart_sps.c 文件的__wrap_UART_Handler里。
Keywords:
Device:
问题解决了, 不能用 __wrap_UART_Handler 函数,得用$Sub$$UART_Handler 函数。
谢谢你的经验分享