2014-12-23 3 views
-4

Я пытаюсь написать эту программу:Зачем мне это предупреждение?

#include "stm32f10x.h" 
#include "ILI9325.h" 


/* Private functions ---------------------------------------------------------*/ 





/******************************************************************************* 
* Function Name : main 
* Description : Main Program 
* Input   : None 
* Output   : None 
* Return   : None 
* Attention  : None 
*******************************************************************************/ 


int main(void) 
{ 
    uint8_t b,c; 

    Lcd_Configuration(); 
    Lcd_Initialize(); 
    Lcd_Clear(0xffff); 
    Lcd_Clear(0x0000); 
    Lcd_Clear(0xff00); 
    for (b = 0 ; b < 200 ; b++) 
    { 
     for (c = 0 ; c < 200 ; c++) 
     { 
      DrawPixel(b , c , 0xffff); 
     }  
    } 

    /* Infinite loop */ 
    while (1) 
    { 

    } 
} 

Но я получаю это предупреждение (желтый название):

неявное объявление функции "DrawPixel"

как в ниже моментального снимка

figure1

Я видел много вопросов об этом предупреждении, и я думаю, что все в порядке, но все же я получаю это предупреждение.

ILI9325.h файл:

#ifndef __ILI9325_H 
#define __ILI9325_H 

// ILI9320 or ILI9325 
#define ILI9325 


#define ID_AM 110 
extern u16 q; 

//#define Delay //Display Delay//Immediately 

#define Set_Cs GPIO_SetBits(GPIOC,GPIO_Pin_8); 
#define Clr_Cs GPIO_ResetBits(GPIOC,GPIO_Pin_8); 

#define Set_Rs GPIO_SetBits(GPIOC,GPIO_Pin_9); 
#define Clr_Rs GPIO_ResetBits(GPIOC,GPIO_Pin_9); 

#define Set_nWr GPIO_SetBits(GPIOC,GPIO_Pin_10); 
#define Clr_nWr GPIO_ResetBits(GPIOC,GPIO_Pin_10); 

#define Set_nRd GPIO_SetBits(GPIOC,GPIO_Pin_11); 
#define Clr_nRd GPIO_ResetBits(GPIOC,GPIO_Pin_11); 

#define Set_Rst GPIO_SetBits(GPIOC,GPIO_Pin_12); 
#define Clr_Rst GPIO_ResetBits(GPIOC,GPIO_Pin_12); 

#define Lcd_Light_ON GPIO_SetBits(GPIOC,GPIO_Pin_13); 
#define Lcd_Light_OFF GPIO_ResetBits(GPIOC,GPIO_Pin_13); 

typedef union 
{ 
    u16 U16; 
    u8 U8[2]; 
}ColorTypeDef; 


void Lcd_Configuration(void); 
void DataToWrite(u16 data); 
void LCD_WR_REG(u16 Index,u16 CongfigTemp); 
void Lcd_Initialize(void); 
void Lcd_WR_Start(void); 
void Lcd_SetCursor(u8 x,u16 y); 
void Lcd_Clear(u16 Color); 
void Lcd_ClearCharBox(u8 x,u16 y,u16 Color); 
void Lcd_SetBox(u8 xStart,u16 yStart,u8 xLong,u16 yLong,u16 x_offset,u16 y_offset); 
void Lcd_ColorBox(u8 x,u16 y,u8 xLong,u16 yLong,u16 Color); 

void Delay_nms(int n); 
//u16 Read9325(void); 


#define logo 0x51000 
#define key24048 0x4a000 
#define key8048 0x48000 
#define key2480 0x77000 
#define key2448 0x78000 
#define BatteryHight 0x79000 
#define BatteryMiddle 0x7a000 
#define BatteryLow 0x7b000 
#define BatteryTooLow 0x7c000 
#define key24032 0x80000 
#define PowOffkey24048 0x84000 

#define ASCII_Offset 0x47000 
#define Chinese_Offset 0x1000 

#endif 

И ILI9325.c файл:

void Lcd_Configuration(void) 
{  
    GPIO_InitTypeDef GPIO_InitStructure; 

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE);  

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; 
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 
    GPIO_Init(GPIOB, &GPIO_InitStructure); 

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; 
    GPIO_Init(GPIOC, &GPIO_InitStructure); 

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12; 
    GPIO_Init(GPIOC, &GPIO_InitStructure); 

    GPIO_InitStructure.GPIO_Pin =GPIO_Pin_13; 
    GPIO_Init(GPIOC, &GPIO_InitStructure); 
} 



void DataToWrite(u16 data)  
{ 
    u16 temp; 
    temp = GPIO_ReadOutputData(GPIOB); 
    GPIO_Write(GPIOB, (data<<8)|(temp&0x00ff)); 
    temp = GPIO_ReadOutputData(GPIOC); 
    GPIO_Write(GPIOC, (data>>8)|(temp&0xff00)); 
} 

void LCD_WR_REG(u16 Index,u16 CongfigTemp) 
{ 
    Clr_Cs; 
    Clr_Rs; 
    Set_nRd; 
    DataToWrite(Index); 
    Clr_nWr; 
    Set_nWr; 
    Set_Rs;   
    DataToWrite(CongfigTemp);   
    Clr_nWr; 
    Set_nWr; 
    Set_Cs; 
} 

u16 CheckController(void) 
{ 
    u16 tmp=0,tmp1=0,tmp2=0;  
    GPIO_InitTypeDef GPIO_InitStructure; 

    DataToWrite(0xffff); 
    Set_Rst; 
    Set_nWr; 
    Set_Cs; 
    Set_Rs; 
    Set_nRd; 
    Set_Rst; 
    Delay_nms(1); 
    Clr_Rst; 
    Delay_nms(1); 
    Set_Rst; 
    Delay_nms(1); 
    LCD_WR_REG(0x0000,0x0001); //start oscillation 
    Delay_nms(1); 

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; 
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; 
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 
    GPIO_Init(GPIOB, &GPIO_InitStructure); 

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; 
    GPIO_Init(GPIOC, &GPIO_InitStructure); 

    GPIO_ResetBits(GPIOC,GPIO_Pin_8); 

    GPIO_SetBits(GPIOC,GPIO_Pin_9); 

    GPIO_ResetBits(GPIOC,GPIO_Pin_11); 

    tmp1 = GPIO_ReadInputData(GPIOB); 
    tmp2 = GPIO_ReadInputData(GPIOC); 

    tmp = (tmp1>>8) | (tmp2<<8); 

    GPIO_SetBits(GPIOC,GPIO_Pin_11); 

    GPIO_SetBits(GPIOC,GPIO_Pin_8); 


    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; 
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 
    GPIO_Init(GPIOB, &GPIO_InitStructure); 

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; 
    GPIO_Init(GPIOC, &GPIO_InitStructure); 

    return tmp; 
} 



void Lcd_Initialize(void) 
{ 
    u16 i; 
    Lcd_Light_ON; 
    DataToWrite(0xffff); 
    Set_Rst; 
    Set_nWr; 
    Set_Cs; 
    Set_Rs; 
    Set_nRd; 
    Set_Rst; 
    Delay_nms(1); 
    Clr_Rst; 
    Delay_nms(1); 
    Set_Rst; 
    Delay_nms(1);  

/*   
#ifdef ILI9325   
    LCD_WR_REG(0x00e3,0x3008); 
    LCD_WR_REG(0x00e7,0x0010); 
    LCD_WR_REG(0x00ef,0x1231); //Set the internal vcore voltage 
    LCD_WR_REG(0x0001,0x0100); //When SS = 0, the shift direction of outputs is from S1 to S720         
#endif       //When SS = 1, the shift direction of outputs is from S720 to S1. 
#ifdef ILI9320 
    LCD_WR_REG(0x00e5,0x8000); 
    LCD_WR_REG(0x0000,0x0001); 
    LCD_WR_REG(0x0001,0x0100);//S 
    Delay_nms(10); 
#endif   
    LCD_WR_REG(0x0002,0x0700);//Line inversion   
#if ID_AM==000   
    LCD_WR_REG(0x0003,0x0000); 
#elif ID_AM==001   
    LCD_WR_REG(0x0003,0x0008);   
#elif ID_AM==010  
    LCD_WR_REG(0x0003,0x0010);   
#elif ID_AM==011 
    LCD_WR_REG(0x0003,0x0018); 
#elif ID_AM==100  
    LCD_WR_REG(0x0003,0x0020);   
#elif ID_AM==101  
    LCD_WR_REG(0x0003,0x0028);   
#elif ID_AM==110  
    LCD_WR_REG(0x0003,0x0030);   
#elif ID_AM==111  
    LCD_WR_REG(0x0003,0x0038); 
#endif   
    LCD_WR_REG(0x0004,0x0000); 
    LCD_WR_REG(0x0008,0x0207); 
    LCD_WR_REG(0x0009,0x0000); 
    LCD_WR_REG(0x000a,0x0000); 
    LCD_WR_REG(0x000c,0x0001); 
    LCD_WR_REG(0x000d,0x0000); 
    LCD_WR_REG(0x000f,0x0000);   

    LCD_WR_REG(0x0010,0x0000); 
    LCD_WR_REG(0x0011,0x0000); 
    LCD_WR_REG(0x0012,0x0000); 
    LCD_WR_REG(0x0013,0x0000); 
    Delay_nms(200); 
    LCD_WR_REG(0x0010,0x17b0); 
    LCD_WR_REG(0x0011,0x0137); 
    Delay_nms(50); 
    LCD_WR_REG(0x0012,0x0139); 
    Delay_nms(50); 
    LCD_WR_REG(0x0013,0x1700); 
    LCD_WR_REG(0x0029,0x0000); 
    LCD_WR_REG(0x002b,0x0000); 
    Delay_nms(50);   
#if ID_AM==000   
    LCD_WR_REG(0x0020,0x00ef); 
    LCD_WR_REG(0x0021,0x013f);   
#elif ID_AM==001 
    LCD_WR_REG(0x0020,0x00ef); 
    LCD_WR_REG(0x0021,0x013f);   
#elif ID_AM==010 
    LCD_WR_REG(0x0020,0x0000); 
    LCD_WR_REG(0x0021,0x013f);   
#elif ID_AM==011 
    LCD_WR_REG(0x0020,0x0000); 
    LCD_WR_REG(0x0021,0x013f);   
#elif ID_AM==100 
    LCD_WR_REG(0x0020,0x00ef); 
    LCD_WR_REG(0x0021,0x0000);   
#elif ID_AM==101  
    LCD_WR_REG(0x0020,0x00ef); 
    LCD_WR_REG(0x0021,0x0000);   
#elif ID_AM==110 
    LCD_WR_REG(0x0020,0x0000); 
    LCD_WR_REG(0x0021,0x0000);   
#elif ID_AM==111 
    LCD_WR_REG(0x0020,0x0000); 
    LCD_WR_REG(0x0021,0x0000);   
#endif   
    LCD_WR_REG(0x0030,0x0000); 
    LCD_WR_REG(0x0031,0x0507); 
    LCD_WR_REG(0x0032,0x0104); 
    LCD_WR_REG(0x0035,0x0105); 
    LCD_WR_REG(0x0036,0x0404); 
    LCD_WR_REG(0x0037,0x0603); 
    LCD_WR_REG(0x0038,0x0004); 
    LCD_WR_REG(0x0039,0x0007); 
    LCD_WR_REG(0x003c,0x0501); 
    LCD_WR_REG(0x003d,0x0404); 
    LCD_WR_REG(0x0050,0x0000); 
    LCD_WR_REG(0x0051,0x00ef); 
    LCD_WR_REG(0x0052,0x0000); 
    LCD_WR_REG(0x0053,0x013f); 
#ifdef ILI9325   
    LCD_WR_REG(0x0060,0xa700);//G 
#endif 
#ifdef ILI9320   
    LCD_WR_REG(0x0060,0x2700);//G  
#endif  
    LCD_WR_REG(0x0061,0x0001);//Enables the grayscale inversion of the image by setting REV=1.?????????????????????????????? 
    LCD_WR_REG(0x006a,0x0000); 
    LCD_WR_REG(0x0080,0x0000); 
    LCD_WR_REG(0x0081,0x0000); 
    LCD_WR_REG(0x0082,0x0000); 
    LCD_WR_REG(0x0083,0x0000); 
    LCD_WR_REG(0x0084,0x0000); 
    LCD_WR_REG(0x0085,0x0000); 
    LCD_WR_REG(0x0090,0x0010); 
    LCD_WR_REG(0x0092,0x0000); 
    LCD_WR_REG(0x0093,0x0003); 
    LCD_WR_REG(0x0095,0x0110); 
    LCD_WR_REG(0x0097,0x0000); 
    LCD_WR_REG(0x0098,0x0000);  

    LCD_WR_REG(0x0007,0x0130); 
#ifdef Immediately 
    LCD_WR_REG(0x0007,0x0173);   
#endif    
     */ 
    i = CheckController(); 
    q=i;   
    if(i==0x9325||i==0x9328) 
    { 
     LCD_WR_REG(0x00e7,0x0010);   
     LCD_WR_REG(0x0000,0x0001);    //start internal osc 
     LCD_WR_REG(0x0001,0x0100);   
     LCD_WR_REG(0x0002,0x0700);    //power on sequence       
     LCD_WR_REG(0x0003,(1<<12)|(1<<5)|(1<<4)); //65K  
     LCD_WR_REG(0x0004,0x0000);          
     LCD_WR_REG(0x0008,0x0207);     
     LCD_WR_REG(0x0009,0x0000);    
     LCD_WR_REG(0x000a,0x0000);    //display setting    
     LCD_WR_REG(0x000c,0x0001);    //display setting    
     LCD_WR_REG(0x000d,0x0000);    //0f3c    
     LCD_WR_REG(0x000f,0x0000); 
     LCD_WR_REG(0x0010,0x0000);  
     LCD_WR_REG(0x0011,0x0007); 
     LCD_WR_REG(0x0012,0x0000);                  
     LCD_WR_REG(0x0013,0x0000);      
     for(i=50000;i>0;i--); 
     LCD_WR_REG(0x0010,0x1590);  
     LCD_WR_REG(0x0011,0x0227); 
     for(i=50000;i>0;i--); 
     LCD_WR_REG(0x0012,0x009c);      
     for(i=50000;i>0;i--); 
     LCD_WR_REG(0x0013,0x1900);  
     LCD_WR_REG(0x0029,0x0023); 
     LCD_WR_REG(0x002b,0x000e); 
     for(i=50000;i>0;i--); 
     LCD_WR_REG(0x0020,0x0000);                
     LCD_WR_REG(0x0021,0x0000);      

     for(i=50000;i>0;i--); 
     LCD_WR_REG(0x0030,0x0007);  
     LCD_WR_REG(0x0031,0x0707);  
     LCD_WR_REG(0x0032,0x0006); 
     LCD_WR_REG(0x0035,0x0704); 
     LCD_WR_REG(0x0036,0x1f04);  
     LCD_WR_REG(0x0037,0x0004); 
     LCD_WR_REG(0x0038,0x0000);   
     LCD_WR_REG(0x0039,0x0706);   
     LCD_WR_REG(0x003c,0x0701); 
     LCD_WR_REG(0x003d,0x000f); 
     for(i=50000;i>0;i--); 
     LCD_WR_REG(0x0050,0x0000);   
     LCD_WR_REG(0x0051,0x00ef);  
     LCD_WR_REG(0x0052,0x0000);   
     LCD_WR_REG(0x0053,0x013f); 
     LCD_WR_REG(0x0060,0xa700);   
     LCD_WR_REG(0x0061,0x0001);  
     LCD_WR_REG(0x006a,0x0000); 
     LCD_WR_REG(0x0080,0x0000); 
     LCD_WR_REG(0x0081,0x0000); 
     LCD_WR_REG(0x0082,0x0000); 
     LCD_WR_REG(0x0083,0x0000); 
     LCD_WR_REG(0x0084,0x0000); 
     LCD_WR_REG(0x0085,0x0000); 

     LCD_WR_REG(0x0090,0x0010);   
     LCD_WR_REG(0x0092,0x0000);  
     LCD_WR_REG(0x0093,0x0003); 
     LCD_WR_REG(0x0095,0x0110); 
     LCD_WR_REG(0x0097,0x0000);   
     LCD_WR_REG(0x0098,0x0000);  
     //display on sequence   
     LCD_WR_REG(0x0007,0x0133); 

     LCD_WR_REG(0x0020,0x0000);                
     LCD_WR_REG(0x0021,0x0000); 
    } 
    else if(i==0x9320) 
    { 
     LCD_WR_REG(0x00,0x0000); 
     LCD_WR_REG(0x01,0x0100); //Driver Output Contral. 
     LCD_WR_REG(0x02,0x0700); //LCD Driver Waveform Contral. 
     LCD_WR_REG(0x03,0x1030); //Entry Mode Set. 

     LCD_WR_REG(0x04,0x0000); //Scalling Contral. 
     LCD_WR_REG(0x08,0x0202); //Display Contral 2.(0x0207) 
     LCD_WR_REG(0x09,0x0000); //Display Contral 3.(0x0000) 
     LCD_WR_REG(0x0a,0x0000); //Frame Cycle Contal.(0x0000) 
     LCD_WR_REG(0x0c,(1<<0)); //Extern Display Interface Contral 1.(0x0000) 
     LCD_WR_REG(0x0d,0x0000); //Frame Maker Position. 
     LCD_WR_REG(0x0f,0x0000); //Extern Display Interface Contral 2. 

     for(i=50000;i>0;i--); 
     LCD_WR_REG(0x07,0x0101); //Display Contral. 
     for(i=50000;i>0;i--); 

     LCD_WR_REG(0x10,(1<<12)|(0<<8)|(1<<7)|(1<<6)|(0<<4)); //Power Control 1.(0x16b0) 
     LCD_WR_REG(0x11,0x0007);        //Power Control 2.(0x0001) 
     LCD_WR_REG(0x12,(1<<8)|(1<<4)|(0<<0));     //Power Control 3.(0x0138) 
     LCD_WR_REG(0x13,0x0b00);        //Power Control 4. 
     LCD_WR_REG(0x29,0x0000);        //Power Control 7. 

     LCD_WR_REG(0x2b,(1<<14)|(1<<4)); 

     LCD_WR_REG(0x50,0);  //Set X Start. 
     LCD_WR_REG(0x51,239); //Set X End. 
     LCD_WR_REG(0x52,0);  //Set Y Start. 
     LCD_WR_REG(0x53,319); //Set Y End. 

     LCD_WR_REG(0x60,0x2700); //Driver Output Control. 
     LCD_WR_REG(0x61,0x0001); //Driver Output Control. 
     LCD_WR_REG(0x6a,0x0000); //Vertical Srcoll Control. 

     LCD_WR_REG(0x80,0x0000); //Display Position? Partial Display 1. 
     LCD_WR_REG(0x81,0x0000); //RAM Address Start? Partial Display 1. 
     LCD_WR_REG(0x82,0x0000); //RAM Address End-Partial Display 1. 
     LCD_WR_REG(0x83,0x0000); //Displsy Position? Partial Display 2. 
     LCD_WR_REG(0x84,0x0000); //RAM Address Start? Partial Display 2. 
     LCD_WR_REG(0x85,0x0000); //RAM Address End? Partial Display 2. 

     LCD_WR_REG(0x90,(0<<7)|(16<<0)); //Frame Cycle Contral.(0x0013) 
     LCD_WR_REG(0x92,0x0000); //Panel Interface Contral 2.(0x0000) 
     LCD_WR_REG(0x93,0x0001); //Panel Interface Contral 3. 
     LCD_WR_REG(0x95,0x0110); //Frame Cycle Contral.(0x0110) 
     LCD_WR_REG(0x97,(0<<8)); // 
     LCD_WR_REG(0x98,0x0000); //Frame Cycle Contral. 


     LCD_WR_REG(0x07,0x0173); //(0x0173) 
    } 
} 



void Lcd_WR_Start(void) 
{ 
    Clr_Cs; 
    Clr_Rs; 
    Set_nRd; 
    DataToWrite(0x0022); 
    Clr_nWr; 
    Set_nWr; 
    Set_Rs; 
} 



void Lcd_SetCursor(u8 x,u16 y) 
{  
    LCD_WR_REG(0x20,x); 
    LCD_WR_REG(0x21,y);  
} 



void Lcd_Clear(u16 Color) 
{ 
    u32 temp; 

    Lcd_SetCursor(0x00, 0x0000); 
    LCD_WR_REG(0x0050,0x00); 
    LCD_WR_REG(0x0051,239); 
    LCD_WR_REG(0x0052,0x00); 
    LCD_WR_REG(0x0053,319);  
    Lcd_WR_Start(); 
    Set_Rs; 

    for (temp = 0; temp < 76800; temp++) 
    { 
     DataToWrite(Color); 
     Clr_nWr; 
     Set_nWr; 
    } 

    Set_Cs; 
} 



void Lcd_SetBox(u8 xStart,u16 yStart,u8 xLong,u16 yLong,u16 x_offset,u16 y_offset) 
{ 

#if ID_AM==000  
    Lcd_SetCursor(xStart+xLong-1+x_offset,yStart+yLong-1+y_offset); 

#elif ID_AM==001 
    Lcd_SetCursor(xStart+xLong-1+x_offset,yStart+yLong-1+y_offset); 

#elif ID_AM==010 
    Lcd_SetCursor(xStart+x_offset,yStart+yLong-1+y_offset); 

#elif ID_AM==011  
    Lcd_SetCursor(xStart+x_offset,yStart+yLong-1+y_offset); 

#elif ID_AM==100 
    Lcd_SetCursor(xStart+xLong-1+x_offset,yStart+y_offset);   

#elif ID_AM==101 
    Lcd_SetCursor(xStart+xLong-1+x_offset,yStart+y_offset);   

#elif ID_AM==110 
    Lcd_SetCursor(xStart+x_offset,yStart+y_offset);  

#elif ID_AM==111 
    Lcd_SetCursor(xStart+x_offset,yStart+y_offset);  

#endif 

    LCD_WR_REG(0x0050,xStart+x_offset); 
    LCD_WR_REG(0x0051,xStart+xLong-1+x_offset); 
    LCD_WR_REG(0x0052,yStart+y_offset); 
    LCD_WR_REG(0x0053,yStart+yLong-1+y_offset); 
} 


void Lcd_ColorBox(u8 xStart,u16 yStart,u8 xLong,u16 yLong,u16 Color) 
{ 
    u32 temp; 

    Lcd_SetBox(xStart,yStart,xLong,yLong,0,0); 
    Lcd_WR_Start(); 
    Set_Rs; 

    for (temp=0; temp<xLong*yLong; temp++) 
    { 
     DataToWrite(Color); 
     Clr_nWr; 
     Set_nWr; 
    } 

    Set_Cs; 
} 


void Lcd_ClearCharBox(u8 x,u16 y,u16 Color) 
{ 
    u32 temp; 

    Lcd_SetBox(x*8,y*16,8,16,0,0);  
    Lcd_WR_Start(); 
    Set_Rs; 

    for (temp=0; temp < 128; temp++) 
    { 
     DataToWrite(Color);  
     Clr_nWr; 
     //Delay_nus(22); 
     Set_nWr;  
    } 

    Set_Cs; 
} 




void Delay_nms(int n) 
{ 

    u32 f=n,k; 
    for (; f!=0; f--) 
    { 
    for(k=0xFFF; k!=0; k--); 
    } 

} 
void DrawPixel(u16 x, u16 y, int Color) 
{ 
    Lcd_SetCursor(x,y); 
    Lcd_WR_Start();  
    Set_Rs; 
    DataToWrite(Color); 
    Clr_nWr; 
    Set_nWr;         
    Set_Cs; 
} 
void DispPic240_320(const unsigned char *str) 
{ 

    u32 temp; 
    ColorTypeDef color; 
    Lcd_SetCursor(0x00, 0x0000); 
    LCD_WR_REG(0x0050,0x00); 
    LCD_WR_REG(0x0051,239); 
    LCD_WR_REG(0x0052,0); 
    LCD_WR_REG(0x0053,319); 
    Lcd_WR_Start(); 
    Set_Rs; 

    for (temp = 0; temp < 240*320; temp++) 
    {  
     color.U8[1] =*(unsigned short *)(&str[ 2 * temp]); 
     color.U8[0]=*(unsigned short *)(&str[ 2 * temp+1]); 
     //DataToWrite(i); 

     DataToWrite(color.U16); 
     Clr_nWr; 
     Set_nWr; 
    } 

//==============================  
} 
void test_color(void){ 
    u8 R_data,G_data,B_data,i,j; 

    Lcd_SetCursor(0x00, 0x0000); 
    LCD_WR_REG(0x0050,0x00); 
    LCD_WR_REG(0x0051,239); 
    LCD_WR_REG(0x0052,0); 
    LCD_WR_REG(0x0053,319); 
    Lcd_WR_Start(); 
    Set_Rs; 
    R_data=0;G_data=0;B_data=0;   
    for(j=0;j<50;j++) 
    { 
     for(i=0;i<240;i++) 
      {R_data=i/8;DataToWrite(R_data<<11|G_data<<5|B_data); 
      Clr_nWr;Set_nWr;} 
    } 
    R_data=0x1f;G_data=0x3f;B_data=0x1f; 
    for(j=0;j<50;j++) 
    { 
     for(i=0;i<240;i++) 
      { 
      G_data=0x3f-(i/4); 
      B_data=0x1f-(i/8); 
      DataToWrite(R_data<<11|G_data<<5|B_data); 
      Clr_nWr; 
      Set_nWr; 
      } 
    } 
//---------------------------------- 
    R_data=0;G_data=0;B_data=0; 
    for(j=0;j<50;j++) 
    { 
     for(i=0;i<240;i++) 
      {G_data=i/4; 
      DataToWrite(R_data<<11|G_data<<5|B_data); 
      Clr_nWr; 
      Set_nWr;} 
    } 

    R_data=0x1f;G_data=0x3f;B_data=0x1f; 
    for(j=0;j<50;j++) 
    { 
     for(i=0;i<240;i++) 
      { 
      R_data=0x1f-(i/8); 
      B_data=0x1f-(i/8); 
      DataToWrite(R_data<<11|G_data<<5|B_data); 
      Clr_nWr; 
      Set_nWr; 
     } 
    } 
//---------------------------------- 

    R_data=0;G_data=0;B_data=0; 
    for(j=0;j<60;j++) 
    { 
     for(i=0;i<240;i++) 
      {B_data=i/8;DataToWrite(R_data<<11|G_data<<5|B_data); 
      Clr_nWr; 
      Set_nWr;} 
    }  

    B_data=0;  
    R_data=0x1f;G_data=0x3f;B_data=0x1f; 

    for(j=0;j<60;j++) 
    { 
     for(i=0;i<240;i++) 
      { 
      G_data=0x3f-(i/4); 
      R_data=0x1f-(i/8); 
      DataToWrite(R_data<<11|G_data<<5|B_data); 
      Clr_nWr; 
      Set_nWr; 
     } 
    }   
    Set_Cs; 
} 

И в конце концов, у меня есть вопрос, который я не уверен, что это отношение к теме, но если вы посмотрите на изображение, вы узнаете, что есть ошибка. ошибка такова:

linking... 
. 
\Obj\Project.axf: Error: L6218E: Undefined symbol q (referred from ili9325.o). 

Not enough information to list image symbols. 

Finished: 1 information, 0 warning and 1 error messages. 

".\Obj\Project.axf" - 1 Error(s), 1 Warning(s). 

Target not created 

В чем проблема?

+3

Функция 'DrawPixel' определена в' ILI9325.c', но не объявлена ​​в 'ILI9325.h'. – Barmar

+1

Чувак ... Минимальный * код snipet, который воспроизводит проблему, является тем, что необходимо. Не весь исходный код. Никто не собирается анализировать все это подробно. – Kjartan

ответ

3

Вы должны добавить прототип DrawPixel к ILI9325.h:

void DrawPixel(u16 x, u16 y, int Color); 

Ошибка во время связывания из-за этого заявления в заголовочном файле:

extern u16 q; 

Это требует соответствующей глобальной переменной декларации в одном из файлов .c, но его нет. Если вам нужна эта переменная, вам нужно определить ее где-нибудь. Если нет, удалите постороннюю декларацию. Я надеюсь, что ответ заключается в том, что вам это не нужно - однобуквенные внешние переменные не являются хорошей идеей.

+0

Спасибо, он решил. и любая идея об ошибке? – Roh

+0

Файл заголовка имеет 'extern u16 q;', но эта внешняя переменная никогда не определена нигде. Единственная переменная 'q' в' ILI9325.c' является локальной переменной в функции 'Lcd_Initialize'. – Barmar

+0

Хорошо, спасибо. проблема полностью решена. Я отвечу на ваш ответ как лучший ответ. – Roh

1

Пункт 1. Для решения неявного объявления:

Пожалуйста, добавьте прототип функции в файле заголовок ILI9325.h так, чтобы функция вперед декларация присутствует в ILI9325.c, когда вы #include "ILI9325.h".

void DrawPixel(u16 x, u16 y, int Color);

Пункт 2: Для устранения неопределенного символа:

Вы добавили в заголовочном файле extern u16 q;, вы использовали q в функции Lcd_Initialize(), но вы не имеете определяется глобальнымq в любом месте вашего кода.

Помните, что extern u16 q является декларации, не определения. Вот почему вы компилятор жалуется на Undefined symbol q во время соединения.