有人熟悉瑞萨吗,我使用HEW的stdio库是,printf出现了异常【恢复】
#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时却出现问题了。为什么呢? 为什么我下载的High-performance Embedded Workshop 4(HEW4) 用不了啊,感谢你们的支持啊,能加我吗353970907 这个没问题,强制类型转换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异常 #define READ_REG(a) (*(volatile unsigned short far*)(a))
感觉像是这里的问题,并不是printf的问题.
你在每个printf之间加个延时试试看
页:
[1]