打印

DSP5402之倒塌的"数组"访问

[复制链接]
1622|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hotpower|  楼主 | 2008-5-16 20:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define FLASH(x)  (*((volatile unsigned char *) 0x8000 + x))
/*----------------------------------------------------------
另类的"数组"访问,外扩的SST39VF800A从0x8000开始
void FlashObj::ChipErase(void)
{
  FLASH(0x5555) = 0xaa;  
  FLASH(0x2AAA) = 0x55;  
  FLASH(0x5555) = 0x80;
  FLASH(0x5555) = 0xaa;  
  FLASH(0x2AAA) = 0x55;  
  FLASH(0x5555) = 0x10;
  Wait(0x5555);
}
void FlashObj::Wait(unsigned int address)
{
unsigned int temp, val;
  do {
    val = FLASH(address);
    __nop();
    temp = FLASH(address);
    __nop();
  }
  while(((val ^ temp) & (1 << BIT6)) != 0);
}
----------------------------------------------------------*/

相关帖子

沙发
hotpower|  楼主 | 2008-5-18 07:32 | 只看该作者

非常感谢simon21ic对宏bug的纠错!!!!

simon21ic 发表于 2008-5-17 22:21 侃单片机 ←返回版面   举报该贴 

所以讨论一个没人用的写法没意义啊

映像中途只有看到过一次&a的用法
#define sizeof(a)  ((char*)(&(a)+1) - (char*)&(a))

顺便提一下32楼的宏:
#define FLASH(x)  (*((volatile unsigned char *) 0x8000 + x))
最好写成
#define FLASH(x)  (*((volatile unsigned char *) 0x8000 + (x)))
 
 

相关链接:https://bbs.21ic.com/club/bbs/ShowAnnounce.asp?v=&ID=2967209

使用特权

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

本版积分规则

1460

主题

21619

帖子

506

粉丝