1. keil編譯問題,如下圖
多數情況是,不用關心警告,一般不影響跑程序
1、也許你寫了一段程序,沒用上
2、也許你放了個標號,不必要
3、也許有個變數多餘了
4、創建項目時的STARTUP.A51是不需要的,在C語言也許有用(都不要)
2. 在Keil編譯過程中出現問題
你這段代碼錯誤太多了.
何止上面一個錯誤啊...........
給你指出幾個吧
#include <reg52.h>
#include<stdio.h>
//首先--------加入------------------
#include <INTRINS.H>
//----------------------------------
#define uchar unsigned char
#define uint unsigned int
//全局運算變數
uint Speed = 40;
uint width = 12;
uint Factflux = 80;
uint Wantflux = 80;
bit Setwidth = 0;
bit Setflux = 0;
uchar Numcount = 0;
uchar Keynum;
sbit E=P3^0;
sbit RST=P0^3;
sbit RW=P0^4;
sbit RS=P0^5;
sbit L=P0^6;
sbit R=P0^7;
sbit Busy=P2^7;
//字模
uchar code Shi[]={/*實 CCAB5 */
0x00,0x10,0x0C,0x04,0x4C,0xB4,0x94,0x05,
0xF6,0x04,0x04,0x04,0x14,0x0C,0x04,0x00,
0x00,0x82,0x82,0x42,0x42,0x23,0x12,0x0A,
0x07,0x0A,0x12,0xE2,0x42,0x02,0x02,0x00};//這里少一個分號------
//函數聲明
void Delay(uint m);
void Checkbusy(void);
void Sdata(uchar ddata);
void Scmd(uchar command);
void Init(void);
void Displayword(uchar page,row,uchar code *word,uint lengh);
void Displaynum (uchar page,row,uchar code *num,uint lengh);
//函數編程
void Delay(uint m)
{ uint i,j;
for(i=0;i<m;i++)
for(j=0;j<109;j++)
_nop_();
}
void Checkbusy(void)
{
E=1;
RS=0;
RW=1;
P2=0xff;
//這里的busy ,大小寫錯誤
// while(!busy);
while(!Busy);
}
//這里也有問題..你括弧是中文的
//void Sdata(uchar ddata )
void Sdata (uchar ddata)
{
Checkbusy();
RS=1;
RW=0;
P2=ddata;
E=1;
E=0;
}
void Scmd(uchar command)
{
//這里的不是分號是;號
// Checkbusy():
Checkbusy();
RS=0;
RW=0;
P2=command;
E=1;
E=1;
}
void Init(void)
{
RST=0;
Delay(150);
RST=1;
Delay(100);
L=1;
R=1;
Scmd(0x3f);
Scmd(0xc0);
Scmd(0x80);
Scmd(0x40);
}
//這種函數有問題uchar是define的,
//void Displayword(uchar page,row,*word,uint length)
void Displayword(uchar page,uchar row,uchar *word,uint length)
{
uchar i,j;
L=1;
R=0;
Wcmd(page);
Wcmd(row);
for(i=0;i<length/2;i++)
Sdata(word[i]);
Scmd(page+1);
Wcmd(row);
for(j=length/2;j<length;j++)
Sdata(word[j]);
}
main()
{
Init(void);
while(1)
{
void DisplayWantflux(void);
void DisplayFactflux(void);
void DisplayWidth(void);
void DisplaySpeed(void);
void Display80(void);
void Display12(void);
void DisplayDanwei(void);
}
//////////////////////////////////
中間還有很多,,,懶得給你弄了
3. KEIL 編譯 程序沒問題就是編譯出錯
程序是沒問題,關於樓上說的死循環是正常的。我編譯不會出錯。你出錯提示是什麼?你這樣很難猜啊。如果你只想解決問題,可以新建一個項目,可能是項目配置錯誤。當然你也可以將所以項目設置恢復為默認值試試。右擊項目,選擇option for target,在彈出的對話框最下方的default按鈕,注意這樣要每個選項頁都要點一次。 建議還是新建項目。
4. keil c編譯問題
把新問件保存,把原文件移除,然後打開新文件,添加到工程里,再編譯。選中「生成HEX文件」。
5. keil編譯過程中的問題
圖片是KEIL的HLEP文件截圖,I/OERRORONINPUTFILE一般是板型選錯了導致找不到對應的IO口,或者是頭文件中沒有做相應定義。
重入問題,看一下的代碼編輯工具中除了KEIL還使用了什麼其他代碼編輯工具。
如果是在KEIL中打開了.LIST或者.M51文件,每一次修改.C文件後.LIST和.M51文件都會重新生成,所以也會提示重新裝入,但是這個沒影響。
6. keil編譯中出現錯誤怎麼辦
1、打開軟體project-new project創建一個工程,並為其選擇一個存放目錄。
2、對工程進行一些配置(project-options for target 『target 1』)在output選項下的「create HEX file」前打上對號,工程編譯之後能夠輸出一個可以下載的「HEX」文件。
3、為工程添加.C,.h文件,右鍵單擊「source group 1」,應該就可以了。
7. keil編譯過程中出現問題,不知道為什麼
問題我已經遠程幫你解決了,你之所以不能生成HEx,是你程序有個語法錯誤,在程序上面有點小數點字元,而不是因為這個警告,這類的警告不影響程序的Hex文件的生成。另外,你的C語言有點弱,你那個叫函數的定義,而非調用,把C語言復習一下,做一個優秀的單片機工程師,C語言必須做到精通。
8. keil4編譯問題
你是說整個工程在E盤下無法正常build,但是移到C盤就可以嗎?
9. Keil編譯問題
連接錯誤,只聲明了這幾個函數,但是沒有真正的實現。
如 void EXTI_Init(); 是聲明
// 下面這個才是函數實現,你的工程中沒有該函數的實現
void EXTI_Init()
{
// todo something
}
10. keil編譯問題
從stm32f10x.h所在的位置,無法打開core_cm3.h這個文件,也就無法繼續進行編譯。
這種情況一般是工程的選項設置不完整,沒有把對應的 include path 添加進去。