找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1624|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

IAR for AVR下變量和常量可以像Keil C51一樣使用嗎?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:78835 發(fā)表于 2022-8-13 10:36 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我想達到的效果時,常量定義下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下不行。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:78835 發(fā)表于 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一樣通用
回復(fù)

使用道具 舉報

板凳
ID:401564 發(fā)表于 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)這一說的
回復(fù)

使用道具 舉報

地板
ID:1034262 發(fā)表于 2022-8-13 14:44 | 只看該作者
常量讀取與變量讀取一般不同,51也是不同的。
回復(fù)

使用道具 舉報

5#
ID:883242 發(fā)表于 2022-8-13 21:09 | 只看該作者
我記得AVR是統(tǒng)一編址的啊,應(yīng)該是AVR可以,51不行。

怎么到你這里就顛倒過來了呢?
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表