找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

keil定義和聲明的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:74985 發(fā)表于 2015-3-21 03:14 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
今天調(diào)試程序的時(shí)候發(fā)現(xiàn)寫完程序keil直接編譯不動(dòng)了,后來才找到原因:還是定義和聲明的問題。
我是這樣定義的
code uchar *fangjian="房間";
code uchar *danyuan="單元";
code uchar *loudong="樓棟";
code uchar *help="有火情,請(qǐng)速來支援";
我是這樣聲明的:
extern code uchar *fangjian="房間";
extern code uchar *danyuan="單元";
extern code uchar *loudong="樓棟";
extern  code uchar *help="有火情,請(qǐng)速來支援";
這樣編譯器直接無法編譯,后來我有改成這樣聲明
extern code uchar *fangjian;
        extern code uchar *danyuan;
        extern code uchar *loudong;
        extern code uchar *help;
就可以了


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

使用道具 舉報(bào)

沙發(fā)
ID:74985 發(fā)表于 2015-3-21 03:15 | 只看該作者
今天寫程序犯了一個(gè)低級(jí)的錯(cuò)誤,我在定義一個(gè)一個(gè)變量時(shí),沒對(duì)它賦初值。我在后面直接用它,以至于程序不安我的想法走。
比如: uchar num;
            num++;
我原以為num的初值為0;直接對(duì)它進(jìn)行運(yùn)算,其實(shí)不是這樣,num的初值應(yīng)該是一個(gè)隨機(jī)的。所以,以后再定義變量的時(shí)候一定要對(duì)它賦初值
回復(fù)

使用道具 舉報(bào)

板凳
ID:74985 發(fā)表于 2015-3-21 03:15 | 只看該作者
今天調(diào)程序犯了一個(gè)低級(jí)錯(cuò)誤,以至于程序一直不能正常運(yùn)行。錯(cuò)誤的原因如下:
我定義了一個(gè)全局變量,uchar型,但是我聲明的時(shí)候卻是把它聲明成uint型的了,所以程序一直跑偏。

提醒:在使用EEPROM之前最好先對(duì)eeprom清0.
回復(fù)

使用道具 舉報(bào)

地板
ID:74985 發(fā)表于 2015-3-21 03:15 | 只看該作者
今天又犯了一個(gè)低級(jí)錯(cuò)誤。調(diào)試的時(shí)候在寫函數(shù)的參數(shù)時(shí),只把變量名寫上了,沒有寫函數(shù)的類型,很操蛋。一直沒有調(diào)出來,下次一定要注意:在定義函數(shù)的時(shí)候,如果函數(shù)有參數(shù),那一定要定義好參數(shù)的類型,比如:int,char等
回復(fù)

使用道具 舉報(bào)

5#
ID:74985 發(fā)表于 2015-3-21 03:16 | 只看該作者
昨天調(diào)試eeprom一直沒調(diào)好,今天早上終于調(diào)好了,原來每次往eeprom里面寫數(shù)據(jù)的話都要先寫入一個(gè)寫使能指令,而我原來只是認(rèn)為只要加在寫之前加一次寫使能就行,以后寫的數(shù)據(jù)都不用再加些使能指令了。其實(shí)每次寫數(shù)據(jù)都要加寫使能指令。
并且往eeprom里寫完數(shù)據(jù)后必須要延時(shí)一段時(shí)間才能讀出正確的數(shù)據(jù)。
回復(fù)

使用道具 舉報(bào)

6#
ID:74985 發(fā)表于 2015-3-21 03:16 | 只看該作者
今天調(diào)了一個(gè)程序,發(fā)現(xiàn)程序一直不按我的思路走,仔細(xì)一看,原來是我原來定義了一個(gè)函數(shù),init_spi();這個(gè)函數(shù)我原來寫過,但是現(xiàn)在把它刪除了,但是我在main函數(shù)里還在調(diào)用它,但是編譯器還沒報(bào)錯(cuò),所以程序就一直走不動(dòng),就停留在init_spi()這個(gè)函數(shù)上了
回復(fù)

使用道具 舉報(bào)

7#
ID:43559 發(fā)表于 2015-3-21 08:12 | 只看該作者
我遇到的問題是這樣的:在Keil里選擇Large模式,編譯是通過了。
可是程序不好使了。生成的HEX文件燒錄進(jìn)單片機(jī)也不干活了。
又試了下選擇Compact模式編譯,一樣不干活。
只有Small模式的hex文件好用。但可是有時(shí)在Small模式就是編譯不過。有如下提示

ERROR L107: ADDRESS SPACE OVERFLOW
SPACE: DATA
SEGMENT: ?DT?_WRITEONECHAR?DS18B20
LENGTH: 0002H

在Large模式和Compact模式編譯通過,但程序不運(yùn)行。郁悶中、、、、、、
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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