完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,我在编译堆栈模式中使用XC8,我有主和中断调用的函数。结果,编译器复制了这些函数。但是我不希望某些函数被复制,因为我确信它们不会同时在主程序和中断例程中调用。但是我没有找到这样的方法。我试着使用函数标识符“y-ReCurnand”(XC8C编译器用户指南的第5.81.3节),但是它们不被编译器识别。谁知道我怎么解决这个问题?我使用XC8(V1.45)
以上来自于百度翻译 以下为原文 Hi, i'm using xc8 in compiled stack mode and i have functions that are called by main and interruptions. As a consequence the compiler duplicate those functions. But i don't want some functions to be duplicated, because i'am sure that they don't will be called inside the main and the interrupts routines at the same time. But i don't find a way to do that. I tried to use the function identifier "__reentrant" (Section 5.8.1.3 of the XC8 C Compiler User’s Guide), but they are not recognize by the compiler. Anyone know how can i fix this problem ? I am using XC8 (v1.45) |
|
相关推荐
6个回答
|
|
您没有得到这样的观点:“编译堆栈”导致在函数中访问参数的固定位置,或者即使访问上下文中的函数只调用一个函数,也可以访问“原始”变量。因此……(与营销相反,编译器不是真正的“无所不知”)。
以上来自于百度翻译 以下为原文 You haven't got the point: "compiled stack" results in the function accessing fixed locations for the parameters passed - or even accessing the "original" variable if there is only a single call to a function within the context. Thus ... (Contrary to marketing, compilers are not really "omniscient".) |
|
|
|
有趣的是,XC8用户指南告诉你具体要做什么。参见:“5.97.1禁用复制”
以上来自于百度翻译 以下为原文 Funnily enough, the XC8 User Guide tells you exactly what to do. See: "5.9.7.1 DISABLING DUPLICATION" |
|
|
|
此外,由于您没有指定您正在使用的PIC处理器,因此可能(从XC8用户指南)解释您的结果:
以上来自于百度翻译 以下为原文 Also since you did not specifiy the pic processor you are using, possibly this (from the XC8 User Guide) explains your results: |
|
|
|
嗨,你有几个选择。您可以选择混合堆栈模型,而不是复制功能,使它们使用软件堆栈,使它们可重入。您可以通过使用每个函数的可重入关键字来手动执行上述操作,或者可以通过使用中断TraceBealPracm来防止编译器重复复制潜在的重入问题。所有这些都在用户的Guide.Jeff中描述。
以上来自于百度翻译 以下为原文 Hi, You have several options. You can select the hybrid stack model, which will, instead of duplicating the functions, make them use the software stack so that they are reentrant. You can perform the above manually by using the reentrant keywords with each function; or you can ask the compiler to ignore the potential reentrancy issue by using the interrupt_level pragma to prevent them from being duplicated. All of these are described in the User's Guide. Jeff. |
|
|
|
|
|
|
|
杰夫在维护友好手册方面投入了大量的工作——当人们忽视它时,我对他的耐心感到震惊。
以上来自于百度翻译 以下为原文 Jeff puts a lot of work into maintaining the Friendly Manual - I'm astounded at his patience when people ignore it. |
|
|
|
只有小组成员才能发言,加入小组>>
5161 浏览 9 评论
1999 浏览 8 评论
1928 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3171 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2226 浏览 5 评论
731浏览 1评论
613浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
503浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
629浏览 0评论
527浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 23:55 , Processed in 1.441253 second(s), Total 88, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号