CH573的中断服务函数怎么放有硬性规定吗?

刚上手CH573,头两天搞中断头大的要死,死活调试不通。今早忽然间发现了问题所在:之前用惯了ST,想把所有中断服务函数放在一个irq.c文件中,这样比较清晰。但是我发现


【如图①】只要把SPI0的中断服务函数放在irq.c中,编译器不会报错,但是运行起来直接跑飞,也可能是中断一直卡住未响应【如图①】注意irq.c中还有一个SysTick中断,在①的情况下无法工作,但是②时irq.c的SysTick中断是正常的




【如图②】只要把SPI0的中断服务函数原封不动的剪切黏贴到另外一个.c文件中,那么运行起来就正常了【如图②】


整个过程编译器未报错,使用MounRiver v1.42编译器,优化等级最低


还有个问题,这芯片在线调试功能是基本没法用吗?随便debug进去点开个寄存器想看值弹出来一堆错误。。。



1622172456118377.jpg

1622172456206359.jpg

1622172456812318.jpg


1622172456544902.jpg



你好,可能是ld文件的问题,你把ld文件更新试一下。

icon_rar.gifLink.rar

解压后替换 EVT\EXAM\SRC\Ld目录下的ld文件。


更新了您发的LD文件确实这个问题解决了


问题解决的同时,出现了一个奇怪的现象。我为了验证确实是LD文件导致的问题,当程序运行正常后,又把旧的LD文件放在工程里面重新编译,之前死机的情况不再发生了(确定LD版本没有搞混,你们新旧的LD文件一个是173行,一个是175行)


这样双向验证是无法通过的。。。我能确定的问题是,只要用新版本LD编译烧录过一次,即使再用就旧的LD也没有问题了j_0013.gif


只有登录才能回复,可以选择微信账号登录