pic中断不允许重入式调用函数

[复制链接]
 楼主| shiyan1532 发表于 2012-7-29 18:41 | 显示全部楼层 |阅读模式
PIC单片机不允许主函数与中断函数调用同一个函数。那大家都是怎么解决的呢?
sfesdm 发表于 2012-7-29 20:56 | 显示全部楼层
不是有个reentrant吗?没用过PIC单片机,不知道是不是一样的。
NE5532 发表于 2012-7-29 22:09 | 显示全部楼层
楼主问的C还是汇编?C不清楚,但是最简单的方法就是把函数抄一遍,或者想办法规划软件架构,不要出这种问题。汇编的话,你自己就是爷,不存在重入不重入的问题。
misra 发表于 2012-7-29 22:39 | 显示全部楼层
很好解决。写两个函数  即便功能完全相同
dlyt_test001 发表于 2012-7-30 08:43 | 显示全部楼层
很好解决。写两个函数  即便功能完全相同
misra 发表于 2012-7-29 22:39

可以,也可以在中断中设置一个标志。
后在循环澡检测这个标志。有标志再调用那个重入函数。
不过,这样做后,调用函数的执行的实时性会有点延迟。
 楼主| shiyan1532 发表于 2012-7-30 11:18 | 显示全部楼层
我去试试这种方法 5# dlyt_test001
 楼主| shiyan1532 发表于 2012-7-30 11:19 | 显示全部楼层
有人说在中断函数前面加上 #parama level 1,不知这种方式可以不?
misra 发表于 2012-7-30 11:29 | 显示全部楼层
PIC 不让你弄 就是让你少犯错。

而你现在却千方百计的让自己出错。

所以真正想做稳定性高的产品,最好的办法就是写两个函数  即便功能完全相同。
 楼主| shiyan1532 发表于 2012-7-30 11:42 | 显示全部楼层
pic不让中断与主函数公用函数,如果想要在中断内时间刷新显示等等的,该怎么办呢?用标志位么?然后在主函数内判断标志位。 8# misra
misra 发表于 2012-7-30 12:04 | 显示全部楼层
对啊 全局变量啥的 标志为啥的
ocon 发表于 2012-7-30 14:08 | 显示全部楼层
一个好的架构是不应该出现重入风险的。
sinonion 发表于 2012-7-30 14:16 | 显示全部楼层
第二次看到有人问这个问题

#pragma interrupt_level 1
 楼主| shiyan1532 发表于 2012-7-30 15:38 | 显示全部楼层
多些大家指点啊,我决定用标志位试试。
116399651 发表于 2012-7-30 17:49 | 显示全部楼层
哈哈!原来这样
wb8899 发表于 2012-12-16 22:12 | 显示全部楼层
郁闷,今天也是碰到这个问题,搞了一天,一步一步删着调试,我在引脚电平中断里调用一个与主函数共用的子函数,原来编译后的FLSH空间为39%,调用后变为89%,就一句调用语句,在中断里分别判断并调用两个子函数中的其中一个,居然1KFLSH不够用,出错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

48

主题

1157

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部