Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1806939
  • 博文数量: 134
  • 博客积分: 2488
  • 博客等级: 大尉
  • 技术积分: 7554
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-26 21:19
个人简介

1.每日自省; 2.享受人生; 3.尽力而为; 4.坚持不懈; 5.切莫急躁; 6.慎言敏行; 7.动心忍性; 8.上善若水。

文章分类

全部博文(134)

文章存档

2014年(38)

2013年(42)

2012年(15)

2011年(39)

分类: 嵌入式

2011-08-17 10:38:28

    最近在用IAR调试程序,发现如下问题:
 
const char mm[6]={0xff,0xff,0xff,0xff,0xff,0xff};
---------
char *ptr;
ptr=mm;
错误提示为:
Error[Pe513]: a value of type "char const *" cannot be assigned to an entity of type "char *"
我想把这个数组存储到flash,应该怎样做?
不过,可以直接使用mm[n];方式取数据的。
    错误很明显,指针类型不一直!已经将数组定义到Flash中了!只是具体位置由编译器控制而已。还可以直接将该数组定义到Flash中所需的位置。
如果该数组的值需要运行时改变的话,就必须采用FLash写方式
 
根据错误提示,对变量就行强制转换为如下:
ptr = (char *)mm;也可以指向直接地址的,如ptr = (char *)0x1000
 
注:
1.const关键字的真正意思是只读
2.MSP430 IAR编译器会把带const关键字变量放到FLash中,例如嵌入式常用的的表格常使用const关键字,const int Ta××e[64]....个人理解既然是只读,430编译器把它放入Flash正好满足要求.注意不是所有的编译器都这样处理.
3. 头文件的定义寄存器也使用const,你可以将它展开来看,它表示该寄存器是只读的
阅读(3488) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~