色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

單片機調試有那些常見問題如何解決

j4AI_wujianying ? 來源:未知 ? 作者:易水寒 ? 2018-11-17 11:50 ? 次閱讀

.error: #18:

6.error: #18: expected a ")"

如果是出現在c文件中, 多半是因為少了一個")",或者錯誤行有編譯器不識別的字符

如果出現在頭文件中,錯誤行又是一個函數聲明,多半是因為在函數聲明中有編譯器不認識的字符

error: #20

error: #20: identifier "TIM2_IRQChannel" is undefined 誰能說說,哪里錯了

你的固件庫里的庫文件沒有添加進工程里面,所以出現未定義的情況。

TIM2_IRQChannel指定時器2的中斷通道沒有定義,其實在固件庫對這些參數都有定義,宏定義代替了一串寄存器地址數據。需要將.C文件添加到工程文件中

warning: #1-D

main.c(7): warning: #1-D: last line of file ends without a newline

當使用keil編譯時,彈出這樣的警告信息:main.c(7): warning: #1-D: last line of file ends without a newline

這個是由于在main函數的“}”后,沒有加回車。

只要在main函數的“}”后加回車鍵,此警告信息即可消除。

error:#65

...test_menu.c(27):error:#65:expected a ";"

分數送你了,問題在你回答之前已經解決了,頭文件里的結構體定義里的最后一行沒有加";" 如 NB menu{..};

Error: L6200E

Error: L6200E: Symbol temp multiply defined (by wenshidu.o and main.o).在編譯的時候出現了這個問題,但是檢查不出來,希望各位大俠幫幫忙

什么變量你給付了兩次值

你看看是不是那個外部變量你又給賦值了

main.c申明,其他.c文件對應的.h文件中用extern引用

warning: #223-D

....sourceCCxx00_New.C(718): warning: #223-D: function "_NOP_" declared implicitly

在使用的文件中添加extern void _NOP_();既可

warning: #1295-D

....includeCCxx00_New.h(20): warning: #1295-D: Deprecated declaration CC_XCal - give arg types

沒有用形參 定時時用void CC_XCal(void);即可

Error: L6218E: Undefined symbol

.Objoutput.axf: Error: L6218E: Undefined symbol FSMC_NORSRAMCmd (referred from tft_lcd.o).

.Objoutput.axf: Error: L6218E: Undefined symbol FSMC_NORSRAMInit (referred from tft_lcd.o).

Target not created

請教高人,我該如何處理。

你看看tft_lcd里面有沒有添加fsmcXXX.h之類的頭文件,這個錯誤是說你使用的函數沒有被定義。

一般只要添加相應的頭文件即可

error: #101:

error: #101: has already been declared in the current scope

#ifndef __STM32F10x_LIB_H

#define __STM32F10x_LIB_H

#endif調整到最后!

file:///C:UsersADMINI~1AppDataLocalTempksohtmlwps_clip_image-20349.png

error: #247: function "DelayUs" has already been defined

有一個同名的 DelayUs類已經被定義過了

error: #109: expression must have (pointer-to-) function type

這個問題就是那19個error中的大部分,意思是表達式需要一個(指針)函數參數,我一開始以為是自己函數聲明或者調用上的錯誤,但是看了下發現并沒有錯,后來查了好久發現原來是犯了一個很低級的錯誤:將宏定義和函數名重名了。因為我一開始想的是每一個宏定義對應一個函數名,這樣做起來就比較清晰,但是我卻很傻逼地將函數名每次直接復制到宏名,導致了這種蛋碎的結果。

warning: #61-D

warning: #68-D:

在KeilARMLPCARM,存在(1<<31)編譯警告問題

main.c(174): warning: #61-D: integer operation result is out of range

main.c(174): warning: #68-D: integer conversion resulted in a change of sign

由于編譯器默認signed int即32位有符號整數類型,而1<<31實際為0x80000000,

這樣就有可能改寫了符號位(最高位)

依此類推,(2<<30),(3<<29)...等都會出現編譯警告問題.

解決辦法為: ((unsigned int)1<<31),((unsigned int)2<<30),...

warning: #1295-D:

warning: #1295-D: Deprecated declaration ShowSendTime - give arg types

解決方法:將void ShowSendTime()改為void ShowSendTime(void)

warning: #550-D:

warning: #550-D: variable "d" was set but never used

描述:變量'd'定義但從未使用,或者是,雖然這個變量你使用了,但編譯器認為變量d所在的語句沒有意義,編譯器把它優化了.

解決:仔細衡量所定義的變量d是否有用,若是認定變量d所在語句有意義,那么嘗試用volatile關鍵字修飾變量d,若是真的沒有用,那么刪除掉以釋放可能的內存.

error: #159:

.error: #159: declaration is incompatible with previous "wr_lcd" (declared at line 40)

void a(void) //函數a的實體

{

b(); //調用函數b

}

void b(void) //函數b的實體

{

...

}

這樣如果點編譯,就會產生error: #159的錯誤,因為當函數a調用函數b時,發現在這之前都沒有函數b的任何聲明.

解決方法:在函數a調用函數b之前,對函數b進行聲明,如:

void b(void); //對函數b進行聲明

void a(void) //函數a的實體

{

b(); //調用函數b

}

void b(void) //函數b的實體

{

...

}

error: #70:

error: #70: incomplete type is not allowed

原來是重復定義了,包含了兩次的psock的定義,所以才會出現這種情況。因為我發現psock和pt是一樣定義的,但是pt是不報錯的,所以我就試圖刪除頭文件中include頭文件的那一行,錯誤消除了,謝謝你了,還是實踐出真知啊,有些時候不能死編,要思考,哈哈。

warning: #550-D:

1.warning: #550-D: variable "d" was set but never used

描述:變量'd'定義但從未使用,或者是,雖然這個變量你使用了,但編譯器認為變量d所在的語句沒有意義,編譯器把它優化了.

解決:仔細衡量所定義的變量d是否有用,若是認定變量d所在語句有意義,那么嘗試用volatile關鍵字修飾變量d,若是真的沒有用,那么刪除掉以釋放可能的內存.

warning: #1-D:

2.warning: #1-D: last line of file ends without a newline

描述:文件最后一行不是新的一行.編譯器要求程序文件的最后一行必須是空行,想了半天沒想通為什么要這樣.

解決:可以不理會.若是覺得出現警告不爽,那么在出現警告的文件的最后一行敲個回車,空出一行.

warning: #111-D:

3. warning: #111-D: statement is unreachable

描述:聲明不可能到達.多出現在這種場合:

int main(void)

{

...

while(1) //無限循環,這在不使用操作系統的程序中最常見

{

...

}

return 0; //這句聲明在正常情況下不可能執行到,編譯器發出警告

}

解決:不理會.

warning: C3017W:

4. warning: C3017W: data may be used before being set

描述:變量'data'在使用前沒有明確的賦值.如:

uint8 i,data; //定義變量i和data,二者都沒有明確賦值

for ( i = 0; i < 8; i++) //變量'i'在語句中被賦值0

{

if ( IO1PIN & SO_CC2420 )

data |= 0x01; //變量'data'在使用前沒有明確賦值,編譯器發出警告

else

data &= ~0x01;

}

解決:應仔細衡量該變量的初始值是否為0,若是,可以不理會這個警告,因為MDK編譯器在程序執行前,會將使用到的數據區初始化為0,但若是該變量的初始值不應該是0,忽略這個警告可能會引起致命錯誤.這個警告應引起足夠重視.應養成變量賦初值的習慣,好在有編譯器給把關.

warning: #177-D:

5. warning: #177-D: variable "temp" was declared but never referenced

描述:變量'temp'進行了聲明但沒有引用.多出現在聲明了一個變量,但卻沒有使用它,它和warning: #550-D: variable "temp" was set but never used不同之處在于temp從沒有使用過.

解決:若是定義的變量確實沒有用,刪除掉;若是有用,則在程序中使用.

與該警告類似的還有 warning: #177-D: function "MACProcessBeacon" was declared but never referenced

warning: #940-D:

6. warning: #940-D: missing return statement at end of non-void function "DealwithInspect2"

描述:返回非空的函數"DealwithInspect2"的最后缺少返回值聲明.如:

int DealwithInspect2(uint32 test)

{

...

...

...

//此處應該是return x;返回一個int型數據,若是沒有返回值,編譯器產生警告

}

.warning: #1295-D:

7..warning: #1295-D: Deprecated declaration lcd_init - give arg types

描述:在定義函數的時候,如果你寫上函數參數,就會有這個警告,比如void timer_init(); 這里就沒有形參,如果這樣的話,編譯器會給出警告.

error: #65:

1. error: #65: expected a ";"

描述:缺少分號.大多是漏忘';'.

解決:雙擊錯誤行,在定位到錯誤點的附近找到沒加';'號的語句,加上分號.并不一定在定位到的錯誤行才卻分號,可能是這行的上一行,也可能是下一行.

error: #65: error: #20

2. error: #65: expected a ";"和 error: #20: identifier "xxxx" is undefined一塊出現,而且后面的error: #20錯誤可能一大堆

描述:這個錯誤對于第一次遇上的人來說絕對是個噩夢,當錯誤出現,滿懷希望的雙擊錯誤提示,來到錯誤行時卻愕然發現,錯誤行絕對沒有錯,于是找找錯誤行的上一行,下一行,沒有錯誤,再找上上行,下下行...讓人無比郁悶的事情出現了:編譯提示的所有錯誤行都不可能有錯誤出現.其實這最可能是你在.h文件聲明外部變量或者函數時,沒有在聲明語句的最后加分號!如果你有很多模塊,如main.c,lcd.c,key.c...有很多頭文件,如lcd.h,key.h,若是在lcd.h文件聲明函數時沒有加分號,那么這種錯誤可能定為到main.c中,所以要檢查所有頭文件.

解決:仔細檢查.h文件,將分號補上.

Error: L6200E:

3. Error: L6200E: Symbol flagu multiply defined (by uart0.o and main.o).

描述:變量(也是一種符號)flagu多處定義(在uart0.c中和main.c都定義了).通常錯在全局變量定義重復.比如:在main.c中定義全局變量flagu:

uint8 flagu=0;

在uart0.c中也用到該變量,于是聲明此變量,我通常都是先復制定義的變量再在變量前面加關鍵字extern修飾:

extern uint8 flagu=0;

然后編譯,就會出現上面的連接錯誤,原因在于,我在uart0.c中是又定義了一個變量,而不是聲明變量,因為我給變量賦了初值"flagu=0",這樣就重復定義了變量flag.正確的聲明方法是去掉賦值部分:

extern uint8 flagu;

解決辦法:找到重復定義的變量,看情況修改一處.

error: #159:

4.error: #159: declaration is incompatible with previous "wr_lcd" (declared at line 40)

描述:在wr_lcd函數還沒有聲明之前就已經使用了.多出現在兩種情況:第一種,wr_lcd函數體還沒有寫,就已經用到了它,這種情況多出現在寫一個程序的大體結構中,只是簡單寫一下框架.第二種情況比較常見,函數a調用函數b,但函數b的函數體在函數a的下面:

void a(void) //函數a的實體

{

b(); //調用函數b

}

void b(void) //函數b的實體

{

...

}

這樣如果點編譯,就會產生error: #159的錯誤,因為當函數a調用函數b時,發現在這之前都沒有函數b的任何聲明.

解決方法:在函數a調用函數b之前,對函數b進行聲明,如:

void b(void); //對函數b進行聲明

void a(void) //函數a的實體

{

b(); //調用函數b

}

void b(void) //函數b的實體

{

...

}

error: #137:

5. error: #137: expression must be a modifiable lvalue

描述:表達式必須是一個可以修改的左值.主要出現在這種現象:

a=NUM;

NUM是一個數值或表達式,a為一個變量,但a被定義為像const這種不可更改的類型,導致NUM不能賦值給變量a.

解決方法:要么放棄賦值,要么修改變量屬性.

error: #1113:

折騰了大半天,才搞明白一個空操作的指令

先在網上查有的說是__asm{NOP;},從intrins.h里調用,可犄角旮旯全找了,也沒看到什么intrint.h的文件。如果直接用,就出現error: #1113: Inline assembler not permitted when generating Thumb code

最后搜索這條錯誤,知道是因為__asm("指令");這種語法是內聯匯編(inline assembly)的語法。而RMDK下,內聯匯編僅支持ARM匯編語言,不支持Thumb或者Thumb-2匯編語言;但內嵌匯編器支持Thumb和Thumb-2。

__asm放到一個單獨的子函數再被調用就沒問題了

如下:

__asm void nop(void)

{

NOP

}

然后在之后的C代碼中調用該函數:

void main()

{

...

nop();

...

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6037

    文章

    44561

    瀏覽量

    635599
  • 函數
    +關注

    關注

    3

    文章

    4332

    瀏覽量

    62656
  • 編譯器
    +關注

    關注

    1

    文章

    1634

    瀏覽量

    49141

原文標題:單片機調試常見問題解決

文章出處:【微信號:wujianying_danpianji,微信公眾號:單片機精講吳鑒鷹】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    電子電路設計之C51單片機常見問題

    筆者在工作中實際使用過AT89C2051、AT89C51、AT89C52等51單片機,本文就51單片機應用中一些常見問題作個總結,這都是我實際碰到過的,因為文章篇幅所限,這些問題遠遠不足以表達
    發表于 11-22 11:28 ?1w次閱讀
    電子電路設計之C51<b class='flag-5'>單片機</b><b class='flag-5'>常見問題</b>

    單片機開發過程中的常見問題

    單片機在組裝與開發過程中總是會出現一些問題,導致過程不是那么順利的完成。今日分享一些單片機常見問題的解決辦法1.單片機EN8F609兼容PIC12F629,僅有一個中斷入口,要避免多個
    發表于 09-11 16:33

    STM32常見問題哪些?怎么解決這些問題?

    STM32常見問題哪些?如何解決STM32單片機常見問題
    發表于 04-19 06:39

    單片機學習中的常見問題(持續更新中) 精選資料分享

    單片機學習常見問題記錄
    發表于 07-16 06:14

    單片機面試常見問題及答案

    單片機面試常見問題及答案,單片機IO口開漏輸出和推挽輸出有什么區別?推挽輸出:既可以輸出低電平,也可以輸出高電平,可以直接驅動功耗不大的數字器件。導通損耗小、效率高、既提高電路的負載能力,又提高開關
    發表于 07-19 06:48

    電池驅動調試常見問題哪些?怎么解決?

    Android電池服務如何啟動?是怎么運行的?電池驅動調試常見問題哪些?怎么解決?
    發表于 09-26 06:07

    使用keil5常見問題哪些?如何解決這些問題?

    使用keil5常見問題哪些?如何解決這些問題?
    發表于 11-30 06:51

    如何調試LCD Mipi?調試LCD Mipi常見問題哪些?

    如何調試LCD Mipi?調試LCD Mipi常見問題哪些?
    發表于 03-10 09:33

    單片機晶振的必要性_單片機晶振的作用_單片機晶振電路原理(51單片機

    本文首先介紹了單片機晶振的必要性,其次介紹了單片機的作用和原理,最后闡述了單片機晶振的常見問題
    的頭像 發表于 04-18 11:49 ?7.4w次閱讀

    開發單片機常見的IDE哪些?

    開發單片機常見的IDE哪些?(點擊鏈接閱讀原文)
    發表于 11-13 12:36 ?12次下載
    開發<b class='flag-5'>單片機</b><b class='flag-5'>常見</b>的IDE<b class='flag-5'>有</b>哪些?

    單片機調試時的那些技術

    單片機調試時的那些技術
    的頭像 發表于 10-18 17:56 ?873次閱讀
    <b class='flag-5'>單片機</b><b class='flag-5'>調試</b>時的<b class='flag-5'>那些</b>技術

    總結:30個單片機常見問題解決辦法!

    總結:30個單片機常見問題解決辦法!
    的頭像 發表于 10-17 17:46 ?3168次閱讀
    總結:30個<b class='flag-5'>單片機</b><b class='flag-5'>常見問題</b>解決辦法!

    單片機常見問題的解決思路和解決辦法

    30個單片機常見問題解決辦法!
    的頭像 發表于 09-18 16:51 ?2444次閱讀
    <b class='flag-5'>單片機</b><b class='flag-5'>常見問題</b>的解決思路和解決辦法

    單片機程序調試常見問題 STM32單片機一般幾種調試方式

    SWD是STM32單片機常用的調試模式之一。它通過單一的調試引腳(SWDIO)和時鐘引腳(SWCLK)來進行調試和編程操作。使用SWD調試
    的頭像 發表于 12-02 17:14 ?3446次閱讀

    單片機調試常見問題與解決方法

    單片機調試是嵌入式系統開發中的一個重要環節,它涉及到對單片機程序的測試和優化,以確保系統能夠正常工作。在調試過程中,開發者可能會遇到各種問題。 1. 程序無法燒錄到
    的頭像 發表于 11-01 14:11 ?848次閱讀
    主站蜘蛛池模板: 麻豆乱码一卡二卡三卡视频| 在线视频av大全色久久| 亚洲免费人成在线视频观看| 女警被黑人20厘米强交| 外女思春台湾三级| 97超碰免费人妻中文| 国产精品久久久久久搜索| 美女全光末满18勿进| 午夜欧洲亚洲AV永久无码精品| 91久久偷偷做嫩草影院免费看| 国产免费久久爱久久啪 | 国产精品亚洲视频在线观看| 能看的黄页最新网站| 亚洲中文字幕无码一去台湾| 国产SUV精品一区二区883| 免费的好黄的漫画| 亚洲三级大片| 国产精品自在在线午夜蜜芽tv在线| 欧美又粗又大AAAA片| 在线亚洲97se| 果冻传媒完整免费网站在线观看| 色爱区综合激情五月综合激情| 97午夜精品| 久久视频在线视频观看精品15| 小草影院免费| 国产成人刺激视频在线观看| 青青草A在在观免费线观看| 4480YY无码午夜私人影院| 第一次玩老妇真实经历| 蜜桃色欲AV久久无码精品| 亚洲欧美日韩国产另类电影| 国产精品7777人妻精品冫| 求个av网站| 99精品影院| 美女视频黄a视频全免费网站色窝| 亚洲性夜色噜噜噜网站2258KK| 国产精品久久久久久久久久影院 | 天堂网久久| 成人天堂资源WWW在线| 欧美另类z0z000高清| 97视频在线免费播放|