OpenEdv-开源电子网

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

USMART移植C8051F020,KEIL C51无法编译通过

[复制链接]

1

主题

5

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
220
金钱
220
注册时间
2013-5-19
在线时间
65 小时
发表于 2015-7-19 21:00:59 | 显示全部楼层 |阅读模式
5金钱
原子坛主好:
      从STM32中发现了USMART,想将其移植到C8051F020平台,使用的是KEIL C51 Vision4
       编译卡在了 
res=(*(u32(*)())usmart_dev.funs[id].func)(temp[0]);以及之后的函数
    这个函数在编译时无法获取其原型[/mw_shl_code]
    很奇怪,之前移植到AVR MEGA128用的编译环境是ICCAVR,没出现这样的问题,不明白原因[/mw_shl_code]
像这样修改了[/mw_shl_code]
res=(*(u32(*)(u32))usmart_dev.funs[id].func)(temp[0]); [/mw_shl_code]
res=(*(u32(*)(u32,u32))usmart_dev.funs[id].func)(temp[0],temp[1]); [/mw_shl_code]
错误又出现在
res=(*(u32(*)(u32,u32))usmart_dev.funs[id].func)(temp[0],temp[1]); 这行,显示错误代码 indirect call: parameters do not fit within registers[/mw_shl_code]
 [/mw_shl_code]
不明白,求解[/mw_shl_code]
[/mw_shl_code]

usmart.c .PNG
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-7-19 22:29:20 | 显示全部楼层
可能是51传递参数的寄存器数比较少的原因导致的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2021-11-30
在线时间
2 小时
发表于 2023-7-13 15:54:23 | 显示全部楼层
51单片机最多只能传3个参数,如果要传多个参数需要改配置。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 11:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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