|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
在Keil上用RealView編譯實(shí)現(xiàn)ARTX的第1個(gè)C++帖圖 |
| 作者:hotpower 欄目:ARM技術(shù) |
正在琢磨,有些忽悠,難題頭暈 * - 本貼最后修改時(shí)間:2006-2-8 21:44:30 修改者:hotpower
|
| 2樓: | >>參與討論 |
| 作者: hotpower 于 2006/2/8 21:04:00 發(fā)布:
從現(xiàn)在開始放棄在ARM用C編程
|
|
| 3樓: | >>參與討論 |
| 作者: hexenzhou 于 2006/2/9 8:35:00 發(fā)布:
! 樓主用重載,虛擬基類試試! |
|
| 4樓: | >>參與討論 |
| 作者: scanli 于 2006/2/9 8:50:00 發(fā)布:
Keil上中的RealView在win2000下有問題? 在win2000下編譯所帶的例子程序不能通過,在winxp下則沒有問題,請大家看看是什么原因。 |
|
| 5樓: | >>參與討論 |
| 作者: hotpower 于 2006/2/9 12:32:00 發(fā)布:
暈到~~~這不是函數(shù)重載??? void LCDDISPLAY(const CHAR *); void LCDDISPLAY(unsigned int, unsigned CHAR, signed CHAR); 虛擬基類現(xiàn)在沒試,因?yàn)樗贛CU/ARM中不太重要,有時(shí)間試試... 不過確實(shí)還存在不少問題,在構(gòu)造String類時(shí)遇到阻擊,正在考慮... 不過先應(yīng)付項(xiàng)目后再說... |
|
| 6樓: | >>參與討論 |
| 作者: hotpower 于 2006/2/10 17:59:00 發(fā)布:
終于又攻掉了一個(gè)難關(guān)---在C++中定義類成員函數(shù)指針數(shù)組 經(jīng)過6個(gè)小時(shí)的"苦戰(zhàn)"終于在Keil的RealView編譯器上移植了主題http://www.21icbbs.com/club/bbs/ShowAnnounce.asp?v=&ID=1713555中的在C++中定義類成員函數(shù)指針數(shù)組... 快要暈到~~~,喜悅之中---爽~~~ 終于在ARM里打開了通往ARTX+C++的大門. * - 本貼最后修改時(shí)間:2006-2-10 18:01:31 修改者:hotpower |
|
| 7樓: | >>參與討論 |
| 作者: testcode 于 2006/2/11 7:45:00 發(fā)布:
等待hotpower的總結(jié)報(bào)告 關(guān)注中... |
|
| 8樓: | >>參與討論 |
| 作者: hotpower 于 2006/2/11 19:06:00 發(fā)布:
哈哈,這次又從黃河里跳了出來 命不錯(cuò)...又采取了非常手段解決了... 哈哈,ARTX真不錯(cuò)...不過在采用C++后,反而感覺OS沒什么太大的幫助作用. C++確實(shí)對MCU/ARM/DSP有很大幫助,至少省心不少... |
|
| 9樓: | >>參與討論 |
| 作者: 云中月8888 于 2006/2/11 21:34:00 發(fā)布:
是不是要放棄artx? 用C++,artx是不是成了雞肋? |
|
| 10樓: | >>參與討論 |
| 作者: hotpower 于 2006/2/12 2:27:00 發(fā)布:
唱一曲<<黃河頌>>---再次感謝TestCode class LcdObj {//系統(tǒng)顯示菜單類 public: LcdObj(void);//LcdObj的構(gòu)造函數(shù) public: void LcdPinSetup(void); void LcdInit(void); void LcdSend(CHAR); void LcdSendCommand(CHAR); void LcdSendData(CHAR); void LcdDelayMs(unsigned int); void SetLCDDISPLAYPos(unsigned CHAR, unsigned CHAR); void LCDDISPLAYBuffer(void);//刷新LCD顯示緩沖區(qū) private: void LcdClearBuffer(void); public: unsigned CHAR LcdRow,LcdCol; void LCDDISPLAY(const CHAR *); void LCDDISPLAY(unsigned int, unsigned CHAR, signed CHAR); public: unsigned CHAR LcdTimeCount; private: unsigned CHAR LcdRowWriteEnable[4]; unsigned CHAR LcdBuffer[4][16];//4行8個(gè)漢字16個(gè)字符 }; class KeyObj { public: KeyObj(void); void Exec(void);//每2.5mS中斷調(diào)用一次, KeyCount會自動+1 public: volatile unsigned CHAR KeyTest[8];//2.5mS壓鍵計(jì)數(shù)器 private: unsigned CHAR KeyCount;//鍵盤計(jì)數(shù)器 unsigned int KeyBuffer;//鍵盤緩沖區(qū) private: void KeyInit(void); public: void KeyCommandExec(unsigned CHAR, unsigned CHAR); unsigned CHAR GetKeyVal(void); static void Key00(void); static void Key01(void); static void Key02(void); static void Key03(void); static void Key04(void); static void Key05(void); static void Key06(void); static void Key07(void); static void Key08(void); static void Key09(void); static void Key10(void); static void Key11(void); static void Key12(void); static void Key13(void); static void Key14(void); static void Key15(void); static void Key16(void); static void Key17(void); static void Key18(void); static void Key19(void); static void Key20(void); static void Key21(void); static void Key22(void); static void Key23(void); static void Key24(void); static void Key25(void); static void Key26(void); static void Key27(void); static void Key28(void); static void Key29(void); };//鍵盤模塊 //typedef void (KeyObj::* PFV)(void);//類成員函數(shù)指針 typedef void (* PV)(void);//一般函數(shù)指針 //inline void KeyObj::KeyCommandExec(unsigned CHAR mode, unsigned CHAR keyval) { //static PV KeyCommandTab[3][8] = {//鍵盤放事件處理表 (RAM=0x40000000) //const PV KeyCommandTab[3][8] = {//鍵盤放事件處理表 (RAM=0x40000474) static const PV KeyCommandTab[3][10] = {//鍵盤放事件處理表(FLASH ROM=0x00002148) {&KeyObj::Key00, &KeyObj::Key01, &KeyObj::Key02, &KeyObj::Key03, &KeyObj::Key04, &KeyObj::Key05, &KeyObj::Key06, &KeyObj::Key07, &KeyObj::Key08, &KeyObj::Key09}, //鍵釋放事件處理 {&KeyObj::Key10, &KeyObj::Key11, &KeyObj::Key12, &KeyObj::Key13, &KeyObj::Key14, &KeyObj::Key15, &KeyObj::Key16, &KeyObj::Key17, &KeyObj::Key18, &KeyObj::Key19}, //壓鍵事件處理 {&KeyObj::Key20, &KeyObj::Key21, &KeyObj::Key22, &KeyObj::Key23, &KeyObj::Key24, &KeyObj::Key25, &KeyObj::Key26, &KeyObj::Key27, &KeyObj::Key28, &KeyObj::Key29} //長壓鍵事件處理 }; PV func;//聲明一般函數(shù)指針 if ((mode < 3) && (keyval <= 9)) { // func = reinterpret_cast<PV>(KeyCommandTab[mode][keyval]);//從FLASH中取出鍵盤放事件處理表 func = KeyCommandTab[mode][keyval];//從FLASH中取出鍵盤放事件處理表 func();//運(yùn)行KeyX0()~KeyX8() } } /*------------------------ 鍵釋放事件處理 ------------------------*/ /*---------------------------------- 釋放選擇鍵 --------------------------------*/ //__inline void KeyObj::Key00(void) { os_evt_set (8, Beep_Task);// } /*---------------------------------- 釋放上調(diào)鍵 --------------------------------*/ //__inline void KeyObj::Key01(void) { } .... 求助:在gccavr中c++的類成員函數(shù)如何定義函數(shù)指針數(shù)組 |
|
| 11樓: | >>參與討論 |
| 作者: hotpower 于 2006/2/12 10:57:00 發(fā)布:
static const等效為code???這個(gè)實(shí)踐確實(shí)不錯(cuò)!!! //typedef void (KeyObj::* PFV)(void);//類成員函數(shù)指針 typedef void (* PV)(void);//一般函數(shù)指針 //inline void KeyObj::KeyCommandExec(unsigned CHAR mode, unsigned CHAR keyval) { //static PV KeyCommandTab[3][10] = {//鍵盤放事件處理表 (RAM=0x40000000) //const PV KeyCommandTab[3][10] = {//鍵盤放事件處理表 (RAM=0x40000474) static const PV KeyCommandTab[3][10] = {//鍵盤放事件處理表(FLASH ROM=0x00002148) {&KeyObj::Key00, &KeyObj::Key01, &KeyObj::Key02, &KeyObj::Key03, &KeyObj::Key04, &KeyObj::Key05, &KeyObj::Key06, &KeyObj::Key07, &KeyObj::Key08, &KeyObj::Key09}, //鍵釋放事件處理 {&KeyObj::Key10, &KeyObj::Key11, &KeyObj::Key12, &KeyObj::Key13, &KeyObj::Key14, &KeyObj::Key15, &KeyObj::Key16, &KeyObj::Key17, &KeyObj::Key18, &KeyObj::Key19}, //壓鍵事件處理 {&KeyObj::Key20, &KeyObj::Key21, &KeyObj::Key22, &KeyObj::Key23, &KeyObj::Key24, &KeyObj::Key25, &KeyObj::Key26, &KeyObj::Key27, &KeyObj::Key28, &KeyObj::Key29} //長壓鍵事件處理 }; PV func;//聲明一般函數(shù)指針 if ((mode < 3) && (keyval <= 9)) { // func = reinterpret_cast<PV>(KeyCommandTab[mode][keyval]);//從FLASH中取出鍵盤放事件處理表 func = KeyCommandTab[mode][keyval];//從FLASH中取出鍵盤放事件處理表 func();//運(yùn)行KeyX0()~KeyX8() } } 從3種KeyCommandTab加載的位置了看,RealView是可以控制變量的加載位置的 |
|
| 12樓: | >>參與討論 |
| 作者: 457878 于 2006/2/12 11:16:00 發(fā)布:
看到Hotpower的發(fā)言,決定立刻放棄C ^_^ |
|
| 13樓: | >>參與討論 |
| 作者: hotpower 于 2006/2/12 11:23:00 發(fā)布:
Keil在ADS的C++時(shí)代ARTX玩不成,RealView就不同了 放棄不知妥否??? 但玩AVR時(shí),選定GCC就是為C++.看來那次的選擇沒錯(cuò)... 這次只能碰大運(yùn)了...本來玩C++的就很少,何況在ARTX中玩C++,不知是否在玩火??? 不過現(xiàn)在還是比較溫暖的...自樂吧... |
|
| 14樓: | >>參與討論 |
| 作者: liaisong 于 2006/2/13 11:29:00 發(fā)布:
在Keil 中能否用UC/OS+C++呢?因?yàn)閷C/OS熟. |
|
| 15樓: | >>參與討論 |
| 作者: simple1423 于 2006/2/13 11:45:00 發(fā)布:
大家用c++就是要封裝吧 比如把按扭的處理函數(shù),位置變量等放在一個(gè)類里面? 看到一篇文章把函數(shù)名放到struct里面,和這個(gè)意思是一樣. 一直用c,現(xiàn)在繼續(xù)把c搞精通! 有說ads不好,為什么呢?還是買一個(gè)仿真器,用別個(gè)自帶的配套軟件好吧 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |