標(biāo)題: IAR for AVR下變量和常量可以像Keil C51一樣使用嗎? [打印本頁]

作者: 濤qq623942603    時間: 2022-8-13 10:36
標(biāo)題: IAR for AVR下變量和常量可以像Keil C51一樣使用嗎?
我想達(dá)到的效果時,常量定義下flash里面,然后可以像變量一樣讀取。
和下圖一樣:


然而我移植到AVR里面,卻不行。
下圖是AVR的測試:


后面發(fā)現(xiàn)改變Uart_COM1_WR_NByte_F(uint16_t Len,uint8_t const __flash * Array)這個函數(shù)的指針類型,也可以操作常量。
如下圖:


這就導(dǎo)致需要寫2個函數(shù),一個是變量指針的函數(shù),一個常量指針的函數(shù),keil C51 可以2個函數(shù)通用。而IAR for AVR下不行。



作者: 濤qq623942603    時間: 2022-8-13 10:49
查找資料,有人說AVR是哈佛結(jié)構(gòu),他的FLASH空間和SRAM空間是重疊的,所以2個函數(shù)不能通用,要區(qū)分開來,之前以為是我寫法不對,研究了好久,網(wǎng)上的資料大部分是教你如何定義常量到flash,沒有說如何讀取常量。反正我沒辦法了,只能寫2個函數(shù)區(qū)別,比如打印函數(shù),寫2個,一個可以打印變量的數(shù)據(jù),一個打印常量的數(shù)據(jù),有沒有大神可以解決這個問題的,讓它變的通用。類似keil_C51 , PIC一樣通用
作者: Y_G_G    時間: 2022-8-13 13:32
問題在于"123",不在于什么結(jié)構(gòu)
IAR和Keil對于"123"這個字符串的定義不一樣
IAR沒有用過,不知道,在Keil中,"123"是被分成"1""2""3"三個ASCII碼的
而且,Keil也可以識別"回家"這種中文的字符串,在別的環(huán)境,有的是不行
但如果是C語言,那就是一樣的,沒有什么指令結(jié)構(gòu)這一說的
作者: coody_sz    時間: 2022-8-13 14:44
常量讀取與變量讀取一般不同,51也是不同的。
作者: Hephaestus    時間: 2022-8-13 21:09
我記得AVR是統(tǒng)一編址的啊,應(yīng)該是AVR可以,51不行。

怎么到你這里就顛倒過來了呢?




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1