完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
您好,我有以下问题:-在MPLAB X IDE V2.30中,在XC8编译器中运行时可以监视堆栈长度吗?PIC16LF1829 uC的堆栈深度是16,我正在浏览代码的.map文件,已经看到几个函数的深度9,在map文件中编辑:saw主函数,并且它说-调用时需要的硬件堆栈级别:13i在我的代码中编程了3个中断,深度将是问题?如果是,优化技术是什么?谢谢,
|
|
相关推荐
8个回答
|
|
这是XC8的一个优势。堆栈被编译为13 + 3=16。没有必要进行监控。使用更少的查看调用树。修改你的代码,这样就不会太深了。不要忘记C库函数。
|
|
|
|
好的,谢谢,还有一个后续问题:-我在下面观察了map fileHardware堆栈级别中使用的东西:调用时所需的1硬件堆栈级别:11所使用的级别与所需的级别之间的区别是什么?
|
|
|
|
您有main()树和中断树。如果使用函数指针,它们可能是额外的树。我已经有一段时间没有查看过了,它可能已经改变了。这确实是一个XC8问题。您可能希望在其中发布指向它的链接。
|
|
|
|
这意味着什么?PIC只有一个中断向量。如果在ISR中依次调用三个函数,则一次只运行一个函数是无关的。
|
|
|
|
在过去的几个MPLAB X IDE版本3.15到3.25中,现在有可能在MyRoy视图中查看硬件堆栈。这只能在模拟器中使用,但现在它可以从真实的硬件中获得。这可以显示你在代码中的深度。目前只能在PIC16F1XXX设备上使用。
|
|
|
|
与MPLAB X中的堆栈视图无关。XC8是编译过的堆栈。编译器知道堆栈到底有多深。除非启用软件堆栈。然后堆栈在RAM中,你可以和其他人一起猜测。
|
|
|
|
这意味着什么?PIC只有一个中断向量。如果在ISR中依次调用三个函数,那么一次只有一个函数在运行,这无关紧要。
|
|
|
|
编译器知道这一点,并且会为这个完整的调用树计算它。如果您有一个PIC18,并且在哪里使用高优先级和低优先级中断,您将需要添加所有三个。
|
|
|
|
只有小组成员才能发言,加入小组>>
5160 浏览 9 评论
1998 浏览 8 评论
1927 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3170 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2225 浏览 5 评论
727浏览 1评论
612浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
501浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
626浏览 0评论
524浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 08:58 , Processed in 1.285521 second(s), Total 90, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号