最近在用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,你可以将它展开来看,它表示该寄存器是只读的
2.MSP430 IAR编译器会把带const关键字变量放到FLash中,例如嵌入式常用的的表格常使用const关键字,const int Ta××e[64]....个人理解既然是只读,430编译器把它放入Flash正好满足要求.注意不是所有的编译器都这样处理.
3. 头文件的定义寄存器也使用const,你可以将它展开来看,它表示该寄存器是只读的