Microchip
直播中

王宁

8年用户 185经验值
私信 关注
[问答]

PIC完全锁定在PLIB内部的某个无限循环

我有一个经过彻底测试的老C项目,它是在MpLab 8.7中为PIC24FJ256GA106使用C30编译器构建的,现在我想使用最新的XC16编译器在最新的MpLabX中继续这个项目。我已经完成了对MPLABX的导入,结果很好。选择了新的XC16编译器,修复了路径并确保设置都是相同的。这个项目现在没有警告和错误,而且在很大程度上是有效的。主回路运行,中断射击,但我有工作串行通信,但是…本项目使用PIC的PMP与同一板上的Zylog芯片进行通信,代码使用微芯片提供的外围库(PIC24/dsPIC外围库v2.00-Windows)中的PMP方法:www.微芯片。com/mplab/compilers当我通过PIC的PMP调用以前工作的(C30)方法来设置Zylog芯片时,PIC完全锁定,大概在PLIB内部的某个无限循环中。我现在完全不知道可能出了什么问题。如果我使用MPLABX与C30,它工作完美。切换到XC16,具有相同的设置,并在PMPMistRead()内部锁定。它开始感觉像是XC16外围库中的一个bug,但我确信一定在某种程度上已经测试过了,这让我对可能遗漏的内容摸不着头脑。在从C30到XC16的移植中,有没有其他人有类似的问题?或者我有什么新的想法可以解决?

回帖(1)

杨叶

2019-10-24 16:14:45
您好,我想完整地提供了外围库的源代码。您激活优化了吗?如果您认为问题出在哪里,那么可能需要重新编译库以便能够调试它。我认为PLIB中存在这样的问题似乎不太可能,因为它们很长一段时间都没有被触及……PMP是一个需要设置的复杂外围设备,因为所有信号都可以被选为肯定的或否定的。我猜XC16生成的代码与C30不同,并且XC16生成的代码现在违反了您的系统的某些定时,而XC16生成的代码没有使用C30(软件延迟、等待状态数量不足)。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分