OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4889|回复: 4

MDK定义可再入函数问题

[复制链接]

11

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2013-12-1
在线时间
3 小时
发表于 2013-12-3 22:08:37 | 显示全部楼层 |阅读模式
我想知道在MDK环境下怎么定义可再入函数啊,我知道之前KeilC51那版本可以用reentrant关键字去修饰。但我在MDK环境下也这样子修饰,编译器报错呢,根本不行咧
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

1446

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2256
金钱
2256
注册时间
2010-12-16
在线时间
206 小时
发表于 2013-12-3 22:17:05 | 显示全部楼层
按照可重入函数设计即可.

51的资源少,一般不设计栈区,局部变量也会有全局地址,这样就不适合设计可重入函数,为了通知编译器要设计可重入函数,就需要一个关键字.

ARM没有这个问题.
技术讨论请发帖 , 需要我回复请点左下的 < 回复 > 让系统通知我 . 本人不通过其他方式返回任何参数.
回复 支持 反对

使用道具 举报

11

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2013-12-1
在线时间
3 小时
 楼主| 发表于 2013-12-3 22:23:52 | 显示全部楼层
回复【2楼】shihantu:
---------------------------------
那譬如:中断函数里调用delay20ms()这个函数,主函数里也调用delay20ms()了这个函数,而我又不想弄两个不同名称的20ms延时函数,那可不是要乱套了,这问题要怎么解决呢?
回复 支持 反对

使用道具 举报

2

主题

1446

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2256
金钱
2256
注册时间
2010-12-16
在线时间
206 小时
发表于 2013-12-4 01:07:59 | 显示全部楼层
回复【3楼】cjw1990:
---------------------------------
为什么要设计两个函数呢,都调用同一个函数不就行了吗?

建议你看看什么是可重入设计,不是一个关键字就可以解决的,也和那个所谓的关键字无关.

51的关键字是为了提高非重入函数效率而设计的非标准的东西,也不是说加了关键字就一定重入安全.
技术讨论请发帖 , 需要我回复请点左下的 < 回复 > 让系统通知我 . 本人不通过其他方式返回任何参数.
回复 支持 反对

使用道具 举报

11

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2013-12-1
在线时间
3 小时
 楼主| 发表于 2013-12-4 08:10:40 | 显示全部楼层
哦,开始有点明白了。是不是在MDK环境下不管哪里调用了这个delay20ms()函数,都是是用不同寄存器的?说白了就是栈空间足够大,可以存放很多的临时变量,可不可以这样理解呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-8 07:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表