音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(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ù)
在Keil上用RealView編譯實(shí)現(xiàn)ARTX的第1個(gè)C++帖圖
正在琢磨,有些忽悠,難題頭暈



* - 本貼最后修改時(shí)間:2006-2-8 21:44:30 修改者:hotpower

2樓: >>參與討論
hotpower
從現(xiàn)在開始放棄在ARM用C編程
 

3樓: >>參與討論
hexenzhou
!
樓主用重載,虛擬基類試試!

4樓: >>參與討論
scanli
Keil上中的RealView在win2000下有問題?
在win2000下編譯所帶的例子程序不能通過,在winxp下則沒有問題,請大家看看是什么原因。

5樓: >>參與討論
hotpower
暈到~~~這不是函數(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
終于又攻掉了一個(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
等待hotpower的總結(jié)報(bào)告
關(guān)注中...

8樓: >>參與討論
hotpower
哈哈,這次又從黃河里跳了出來
命不錯(cuò)...又采取了非常手段解決了...

哈哈,ARTX真不錯(cuò)...不過在采用C++后,反而感覺OS沒什么太大的幫助作用.

C++確實(shí)對MCU/ARM/DSP有很大幫助,至少省心不少...

9樓: >>參與討論
云中月8888
是不是要放棄artx?
用C++,artx是不是成了雞肋?

10樓: >>參與討論
hotpower
唱一曲<<黃河頌>>---再次感謝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
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
看到Hotpower的發(fā)言,決定立刻放棄C  ^_^



13樓: >>參與討論
hotpower
Keil在ADS的C++時(shí)代ARTX玩不成,RealView就不同了
放棄不知妥否???

但玩AVR時(shí),選定GCC就是為C++.看來那次的選擇沒錯(cuò)...

這次只能碰大運(yùn)了...本來玩C++的就很少,何況在ARTX中玩C++,不知是否在玩火???

不過現(xiàn)在還是比較溫暖的...自樂吧...

14樓: >>參與討論
liaisong
在Keil 中能否用UC/OS+C++呢?因?yàn)閷C/OS熟.
 
15樓: >>參與討論
simple1423
大家用c++就是要封裝吧
比如把按扭的處理函數(shù),位置變量等放在一個(gè)類里面?

看到一篇文章把函數(shù)名放到struct里面,和這個(gè)意思是一樣.
一直用c,現(xiàn)在繼續(xù)把c搞精通!

有說ads不好,為什么呢?還是買一個(gè)仿真器,用別個(gè)自帶的配套軟件好吧

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請教陳子牙!!
請教2131開發(fā)板在Easyjtag方式下不運(yùn)行
請問LPC21XX的抗干擾性如何?
請問ZLG:EasyARM2131的中斷句柄定義?
看門狗引起復(fù)位
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號