完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
亲爱的论坛用户,目前我的XC32编译器存在问题。如果我编程我的设备,我得到一个非常随机的类似行为,在一个正常的if语句,每次编译时都会发生变化。我认为我把问题缩小到这个IF语句:IF-.中的函数:“ptrEndRXbuf”和“ptrStartRXbuf”是在中断服务例程中更改的易失性int变量。很可能是真的。这改变了从完美工作到根本不工作,每次我编程设备,即使代码不变。奇怪的是,如果我在IF语句中添加断点并在调试模式下运行,那么每一件事情都应该按照它的方式工作。此外,在if语句中添加一个简单的延迟(大约10mS)也有帮助,但是显然,我不能把它留在最终代码中。我使用MPLAB X IDE v2.20和XC32编译器(优化lvl 0),我试过“清理并构建”并重新启动MPLAB和我的计算机几次。我还没有重新安装MPLAB X,这是我最后的希望。所以我的问题是:有人遇到这样的问题并找到解决方案吗?有人猜吗?请告诉我,如果我需要提供更多的细节。
|
|
相关推荐
1个回答
|
|
我有几个猜测。但我正在做大量的假设。例如,我假设您正在实现一种FIFO缓冲区,它由中断填充,然后由外部代码清空。如果没有更多的信息,我不确定我能够解决您的问题。但是我可能能够帮助您调试它。请为我尝试一下:在代码中放置计数器。在ISM_RXDataAvailable内部,在返回之前执行“ptrEndRXbuf-ptrStartRXbuf”,并将值分配给临时值。tMP= pTrrDrxBuf-pTrasrTrxBuf“。然后增加tmp的一个值是0,如果它不是0.tmp=ptrEndRXbuf-ptrStartRXbufif(tmp){NonZeroCount+;}.{ZeroCount+;}.(tmp);然后在if语句中添加另一个计数器if(ISM_RXDataAvailable(){//此处的其它代码DataDetected+)}思想是您可以运行它如果不使用断点,请按暂停按钮并比较计数值。我不能告诉您的缓冲指针何时以及如何修改。我假设当一个字节被添加到缓冲器中时,在中断中改变PtReNDRXBUF变量。此外,我假设当缓冲区中的字节被移除时,在中断之外改变PTRSTARTrxBuf?但我不知道缓冲区是否在周围。我希望这能有所帮助。
|
|
|
|
只有小组成员才能发言,加入小组>>
5253 浏览 9 评论
2038 浏览 8 评论
1958 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3219 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2267 浏览 5 评论
792浏览 1评论
688浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
617浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
686浏览 0评论
586浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 11:15 , Processed in 1.426311 second(s), Total 79, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号