msp430编程中测试内存的问题,求助

lhp_1 2012-10-17 03:19:41
char TestRAM(void)
{
register INT16U *pRam=(INT16U *)0x200;
register INT16U Temp;
for(INT16U Index=0; Index<0x200; Index+=2)
{
Temp=*pRam;
*pRam=0xffff;
if((*pRam^=0xffff)!=0)
return(0);
*pRam=Temp;
pRam++;
}
return(1);
}


各种不懂、、求指教。。。
...全文
133 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhp_1 2012-10-19
  • 打赏
  • 举报
回复
你好 !麻烦看下我的理解对不对
register INT16U *pRam=(INT16U *)0x200; ;定义个无符号的指针*pRam并保存0x200处的数据
register INT16U Temp; ;定义寄存器变量Temp;
for(INT16U Index=0; Index<0x200; Index+=2)
{
Temp=*pRam; ;把指针的数据赋值给Temp
*pRam=0xffff; ;0xffff保存在指针中
if((*pRam^=0xffff)!=0) ;这个异或和下面的看不懂,,,麻烦解释下
return(0);
*pRam=Temp;
pRam++;
}
return(1);
}

为什么测试0x200后的地址,是自己定义的吗?怎么与0xffff异或就能测试?
初学、、、多多指教。。谢谢
billowtust 2012-10-18
  • 打赏
  • 举报
回复
这个就是用来测试内部RAM的代码,不过是否可行就不大清楚了

测试了从0x200地址以后的0x200字节长度的RAM区

把原来的值保存一下,然后向指向地址中写入0xffff,然后读回来和0xffff异或,正确的话结果是0,检测到错误时,函数返回0

每次比较两个字节长度,完事后指针地址加1,因为是INT16U的关系,转换成字节就是加2了

全部检测通过后,函数返回1

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧