搜索
bottom↓
回复: 3

有人熟悉瑞萨吗,我使用HEW的stdio库是,printf出现了异常【恢复】

[复制链接]

出0入0汤圆

发表于 2008-10-18 13:16:39 | 显示全部楼层 |阅读模式
#define READ_REG(a)     (*(volatile unsigned short far*)(a))



 printf("HCONFIG = %#x\r\n", READ_REG(HCONFIG));

 printf("PCONFIG = %#x\r\n", READ_REG(PCONFIG));

 printf("SCLOCK = %#x\r\n", READ_REG(SCLOCK));

 printf("VER = %#x\r\n", READ_REG(VER));



得到的结果是

HCONFIG = 0x101

PCONFIG = 0x671

SCLOCK = 0x671

VER = 0x671



但正确的应该是这样的:

HCONFIG = 0x101

PCONFIG = 0x671

SCLOCK = 0x3

VER = 0x44



如果我只printf一个寄存器的内容,结果是OK的,如:

printf("SCLOCK = %#x\r\n", READ_REG(SCLOCK));

结果是:

SCLOCK = 0x3



但是同时连续printf时却出现问题了。为什么呢?

出0入0汤圆

发表于 2008-11-28 14:57:15 | 显示全部楼层
为什么我下载的High-performance Embedded Workshop 4(HEW4) 用不了啊,感谢你们的支持啊,能加我吗353970907

出0入0汤圆

 楼主| 发表于 2008-10-23 22:56:29 | 显示全部楼层
这个没问题,强制类型转换a为存储unsigned short的far类型的地址,前面加个*,就是取地址的内容

#define READ_REG(a)     (*(volatile unsigned short far*)(a))



我发现printf异常的原因是,renesas的MCU通过CS2访问的是外部的deveice,且外部的deveice速度比较慢

应该要设置CSE2W0=1,CSE2W1=0,至少有2个等待



起初我用的是默认设置CSE2W0=0,CSE2W1=0,没有等待。所以造成了printf异常

出0入0汤圆

发表于 2008-10-23 13:58:56 | 显示全部楼层
#define READ_REG(a)     (*(volatile unsigned short far*)(a)) 

感觉像是这里的问题,并不是printf的问题.



你在每个printf之间加个延时试试看
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-9 04:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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