|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請(qǐng)教,在GCC里怎么將 結(jié)構(gòu)體 定義到 Flash 中? |
| 作者:yingjie 欄目:單片機(jī) |
| 2樓: | >>參與討論 |
| 作者: 農(nóng)民講習(xí)所 于 2006/10/19 21:15:00 發(fā)布:
先定義好結(jié)構(gòu),結(jié)構(gòu)是新的變量類(lèi)型說(shuō)明 和CHAR , int, int *之類(lèi)變量說(shuō)明等同地位和作用。所以你在按標(biāo)準(zhǔn)C寫(xiě)法說(shuō)明,如: struct x{ .... }; const struct x sx; 將struct x想象看作CHAR之類(lèi)。 |
|
| 3樓: | >>參與討論 |
| 作者: zsmbj 于 2006/10/19 21:23:00 發(fā)布:
如此: struct stu{ int month; int day; int year; }; PROGMEM struct stu data1={12,31,2006}; PROGMEM struct stu data2={01,01,2005}; |
|
| 4樓: | >>參與討論 |
| 作者: yingjie 于 2006/10/19 21:45:00 發(fā)布:
在avr studio 中看了一下,怎么還是定義到了SRAM中? struct SetMenuType{ unsigned CHAR *MenuText[10]; unsigned CHAR MenuNum; }; ..... struct SetMenuType m1 PROGMEM={{"1234","2345","3456","4567","5678","67879","7890","8901","9012","0123"},10}; |
|
| 5樓: | >>參與討論 |
| 作者: yingjie 于 2006/10/19 21:48:00 發(fā)布:
再就是在以后讀取應(yīng)用的時(shí)候,和普通變量用法一樣嗎? |
|
| 6樓: | >>參與討論 |
| 作者: zsmbj 于 2006/10/19 22:09:00 發(fā)布:
你的定義的問(wèn)題 你在定義里只是將MenuText的指針存在了FLASH里,真正的數(shù)據(jù)則存放在了ram里。 如下可以: struct SetMenuType{ unsigned CHAR MenuText[10][5]; unsigned CHAR MenuNum; }; struct SetMenuType m1 PROGMEM={{"1234","2345","3456","4567","5678","67879","7890","8901","9012","0123"},10}; .lss文件: 0000002d <m1>: 2d: 31 32 33 34 00 32 33 34 35 00 33 34 35 36 00 34 1234.2345.3456.4 3d: 35 36 37 00 35 36 37 38 00 36 37 38 37 39 37 38 567.5678.6787978 4d: 39 30 00 38 39 30 31 00 39 30 31 32 00 30 31 32 90.8901.9012.012 5d: 33 00 0a |
|
| 7樓: | >>參與討論 |
| 作者: yingjie 于 2006/10/22 16:26:00 發(fā)布:
謝謝zsmbj,上面問(wèn)題已經(jīng)解決,新問(wèn)題來(lái)了: 謝謝zsmbj,上面問(wèn)題已經(jīng)解決,新問(wèn)題來(lái)了: 該結(jié)構(gòu)體作為函數(shù)的參數(shù),代入函數(shù)后如何讀MenuNum的值呀? unsigned CHAR GetMenuSelect(struct SetMenuType *menu) { unsigned CHAR num; num=pgm_read_byte(menu->MenuNum); num=menu->MenuNum; num=*((unsigned CHAR*)(menu->MenuNum)); ...... } 以上三種方式均不能得到正確的值。 |
|
| 8樓: | >>參與討論 |
| 作者: yingjie 于 2006/10/22 16:38:00 發(fā)布:
謝謝,搞定了 |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |