标题: IAR for AVR下变量和常量可以像Keil C51一样使用吗? [打印本页]

作者: 涛qq623942603    时间: 2022-8-13 10:36
标题: IAR for AVR下变量和常量可以像Keil C51一样使用吗?
我想达到的效果时,常量定义下flash里面,然后可以像变量一样读取。
和下图一样:


然而我移植到AVR里面,却不行。
下图是AVR的测试:


后面发现改变Uart_COM1_WR_NByte_F(uint16_t Len,uint8_t const __flash * Array)这个函数的指针类型,也可以操作常量。
如下图:


这就导致需要写2个函数,一个是变量指针的函数,一个常量指针的函数,keil C51 可以2个函数通用。而IAR for AVR下不行。



作者: 涛qq623942603    时间: 2022-8-13 10:49
查找资料,有人说AVR是哈佛结构,他的FLASH空间和SRAM空间是重叠的,所以2个函数不能通用,要区分开来,之前以为是我写法不对,研究了好久,网上的资料大部分是教你如何定义常量到flash,没有说如何读取常量。反正我没办法了,只能写2个函数区别,比如打印函数,写2个,一个可以打印变量的数据,一个打印常量的数据,有没有大神可以解决这个问题的,让它变的通用。类似keil_C51 , PIC一样通用
作者: Y_G_G    时间: 2022-8-13 13:32
问题在于"123",不在于什么结构
IAR和Keil对于"123"这个字符串的定义不一样
IAR没有用过,不知道,在Keil中,"123"是被分成"1""2""3"三个ASCII码的
而且,Keil也可以识别"回家"这种中文的字符串,在别的环境,有的是不行
但如果是C语言,那就是一样的,没有什么指令结构这一说的
作者: coody_sz    时间: 2022-8-13 14:44
常量读取与变量读取一般不同,51也是不同的。
作者: Hephaestus    时间: 2022-8-13 21:09
我记得AVR是统一编址的啊,应该是AVR可以,51不行。

怎么到你这里就颠倒过来了呢?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1