发新帖我要提问
12
返回列表
打印
[STC单片机]

关于主函数和中断函数同时调用一个子函数的问题

[复制链接]
楼主: 秋水水天
手机看帖
扫描二维码
随时随地手机跟帖
21
netzhang| | 2014-12-9 10:54 | 只看该作者 回帖奖励 |倒序浏览
改为可重入的,最好分别用不同的函数。

使用特权

评论回复
22
秋水水天|  楼主 | 2014-12-9 10:59 | 只看该作者
我把他们分开了,可重入的不会写呀。

使用特权

评论回复
23
秋水水天|  楼主 | 2014-12-9 11:00 | 只看该作者
netzhang 发表于 2014-12-9 10:54
改为可重入的,最好分别用不同的函数。

我把他们分开了,可重入的不会写呀。

使用特权

评论回复
24
myqq12| | 2014-12-9 16:33 | 只看该作者
可以考虑内联

使用特权

评论回复
25
沈老| | 2014-12-9 19:30 | 只看该作者
reentrant 的要求比 threadsafe 的要求更加严格.
reentrant 的函数必是 threadsafe 的,
而 threadsafe 的函数未必是 reentrant 的.

使用特权

评论回复
26
秋水水天|  楼主 | 2014-12-9 20:06 | 只看该作者
沈老 发表于 2014-12-9 19:30
reentrant 的要求比 threadsafe 的要求更加严格.
reentrant 的函数必是 threadsafe 的,
而 threadsafe 的 ...

我能说不懂吗。。。。。。

使用特权

评论回复
27
秋水水天|  楼主 | 2014-12-9 20:06 | 只看该作者
myqq12 发表于 2014-12-9 16:33
可以考虑内联

怎么内联?

使用特权

评论回复
28
wangch_sh| | 2014-12-9 20:12 | 只看该作者
你可以不管什么重入不重入。如果你可以保证那个函数主程序和中断调用时不互相影响就可以了,就是这个调用了,那个再调用不会发生逻辑上的错误就可以了。

使用特权

评论回复
29
coody| | 2014-12-9 20:17 | 只看该作者
重入问题,参考3#

使用特权

评论回复
30
hnkf118| | 2014-12-9 21:25 | 只看该作者
51的话 主要是共享变量重入的问题。 如果只是局部变量,同时调用的话,没有问题的。

使用特权

评论回复
31
秋水水天|  楼主 | 2014-12-10 07:48 | 只看该作者
hnkf118 发表于 2014-12-9 21:25
51的话 主要是共享变量重入的问题。 如果只是局部变量,同时调用的话,没有问题的。 ...

只是局部变量的话那个警告也存在吗?我不用管那个警告就好?

使用特权

评论回复
32
ddddd6666| | 2014-12-10 07:48 | 只看该作者
把子函数放到主函数前面,调用没有问题的

使用特权

评论回复
33
徐大山| | 2014-12-10 08:09 | 只看该作者
内联本质上就是写两个函数;主要是小心数据或状态紊乱

使用特权

评论回复
34
秋水水天|  楼主 | 2014-12-10 08:16 | 只看该作者
徐大山 发表于 2014-12-10 08:09
内联本质上就是写两个函数;主要是小心数据或状态紊乱

嗯,应该不会有问题。

使用特权

评论回复
35
秋水水天|  楼主 | 2014-12-10 08:16 | 只看该作者
徐大山 发表于 2014-12-10 08:09
内联本质上就是写两个函数;主要是小心数据或状态紊乱

ok

使用特权

评论回复
36
mcu5i51| | 2014-12-10 09:27 | 只看该作者
其实同时调用了一个函数和同时进入一个函数是不同的,你能保证自己的函数没有同时进入就可以了;
不能保证的话就分开写,或写成可重入的

使用特权

评论回复
37
hnkf118| | 2014-12-11 01:20 | 只看该作者
秋水水天 发表于 2014-12-10 07:48
只是局部变量的话那个警告也存在吗?我不用管那个警告就好?

函数内没有使用任何外部变量的话。此函数可以被后台程序跟中断程序同时调用,不会报警。记得是不能使用任务 外部变量。当然对51来说还有一个问题, 就是寄存器组必须是一个组,51默认是寄存器0组。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则