完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,我真的希望有人能帮助我,我已经试着处理一个星期了,但是我还没有弄清楚是什么问题:(我有注释部分代码来弄清楚是什么问题,嗯,代码是一个机器状态,输入值是垂直速度(Alt_rate),diffe租金高度(Total_DAlt)和时间,为了进行模拟,我使用UART发送了一些字母,如“A”、“B”到“I”,这些字母定义了Alt_rate、Total_DAlt和时间的一些值。堆栈指针不会进入检查CurrState的条件内,因为CurrState变量应该是“BipperSinking”或“BipperCli.g”,在开始的时候可以,但是一旦我发送“A”并且发生中断事件,堆栈指针就会进入条件内,但是当我使用调试器检查reallyCurrstate是否为“BipperSinking”或“BipperCli.g”,它没有,CurrStatestill有“BipperIDLE”,所以这就是我的问题.*SP为什么会进入这个条件中,而Currstate不符合条件要求?(另一种情况是,当我快速发送‘A’(或其他)时,PIC被重置。为什么?(希望有人能帮助我。我使用的是PIC32MX320I附上的代码,对不起,代码中有很多注释。
|
|
相关推荐
4个回答
|
|
将优化级别设置为最低以获得更好的调试经验。Project>Properties>.>gcc>.>-o
|
|
|
|
在ISR中设置的任何变量和代码中其他地方引用的变量都应该具有“易失性”关键字修饰符。
|
|
|
|
除了上面提到的“volatile”之外,代码还有很多问题:UART2 ISR被声明为IPL1SRS,但是没有SRS配置规范——您绝对确定SRS被设置为IPL1吗?(如果是的话,为什么?常识规定SRS应该用于最重要的中断,它应该在系统中具有最高优先级。)您正在ISR中向UART写入字符串。ISR应该尽可能的快速和最小,在发送中旋转可能很容易导致接收上的溢出错误。您正在禁用ISR中的中断。如果您不想要嵌套中断,或者不要启用多向量中断,或者对它们都使用相同的优先级。不要把这看成是个人问题,但是代码也很难看,这使得很难理解发生了什么。如果你有机会,我强烈推荐阅读“干净代码”。
|
|
|
|
嗨,真的感谢大家的建议和反馈,安德烈姆,我不认为它是个人的。相反,我真的很感激人们花时间帮助我,我知道代码不容易理解。我会考虑你所有的建议,我会张贴结果。谢谢,如果仍然不能工作,我希望能再次帮助我:)再次感谢
|
|
|
|
只有小组成员才能发言,加入小组>>
5248 浏览 9 评论
2037 浏览 8 评论
1957 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3218 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2265 浏览 5 评论
788浏览 1评论
679浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
608浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
685浏览 0评论
582浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 01:09 , Processed in 1.251936 second(s), Total 82, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号