Custom DATA PORT TFT STM32F103VE-Help

General discussion on mikroPascal.
Post Reply
Author
Message
gaby_boy
Posts: 8
Joined: 26 Jun 2014 09:58

Custom DATA PORT TFT STM32F103VE-Help

#1 Post by gaby_boy » 27 Jun 2014 02:43

I have a board STM32F103VET6. I'm trying to use MikroC coding TFT. I want to use custom Data Port. But it does not run. Looking forward to your help.
Now,This is main.c in my project:

Code: Select all

//Config TFT
sfr int CUSTOM_TFT_DATAPORT;
sbit TFT_Data_D0 at GPIOD_ODR.B14;
sbit TFT_Data_D1 at GPIOD_ODR.B15;
sbit TFT_Data_D2 at GPIOD_ODR.B0;
sbit TFT_Data_D3 at GPIOD_ODR.B1;
sbit TFT_Data_D4 at GPIOE_ODR.B7;
sbit TFT_Data_D5 at GPIOE_ODR.B8;
sbit TFT_Data_D6 at GPIOE_ODR.B9;
sbit TFT_Data_D7 at GPIOE_ODR.B10;
sbit TFT_Data_D8 at GPIOE_ODR.B11;
sbit TFT_Data_D9 at GPIOE_ODR.B12;
sbit TFT_Data_D10 at GPIOE_ODR.B13;
sbit TFT_Data_D11 at GPIOE_ODR.B14;
sbit TFT_Data_D12 at GPIOE_ODR.B15;
sbit TFT_Data_D13 at GPIOD_ODR.B8;
sbit TFT_Data_D14 at GPIOD_ODR.B9;
sbit TFT_Data_D15 at GPIOD_ODR.B10;
int TFT_DATAPORT at CUSTOM_TFT_DATAPORT;
///
sbit TFT_RST at GPIOD_ODR.B6;
sbit TFT_RS at GPIOD_ODR.B11;
sbit TFT_CS at GPIOD_ODR.B7;
sbit TFT_RD at GPIOD_ODR.B4;
sbit TFT_WR at GPIOD_ODR.B5;
sbit TFT_BLED at GPIOD_ODR.B13;
/////End Config TFT
/*static void Read_to_PortX(unsigned int port)
{
port=TFT_Data_D15 << 15 | TFT_Data_D14 << 14 | TFT_Data_D13 << 13 |TFT_Data_D12<< 12 | TFT_Data_D11<< 11 | TFT_Data_D10 << 10 | TFT_Data_D9 << 9 | TFT_Data_D8<< 8 | TFT_Data_D7<< 7 | TFT_Data_D6<< 6 | TFT_Data_D5<< 5 | TFT_Data_D4<< 4 | TFT_Data_D3<< 3 | TFT_Data_D2<< 2 | TFT_Data_D1<<1| TFT_Data_D0;
 return port;
}*/

void Write_to_PortX(char values) //TFT_DataPort = _data;
{
 unsigned int temp;
 char value;
 TFT_DataPort = TFT_Data_D15 << 15 | TFT_Data_D14 << 14 | TFT_Data_D13 << 13 |TFT_Data_D12<< 12 | TFT_Data_D11<< 11 | TFT_Data_D10 << 10 | TFT_Data_D9 << 9 | TFT_Data_D8<< 8 | TFT_Data_D7<< 7 | TFT_Data_D6<< 6 | TFT_Data_D5<< 5 | TFT_Data_D4<< 4 | TFT_Data_D3<< 3 | TFT_Data_D2<< 2 | TFT_Data_D1<<1| TFT_Data_D0;
 temp = TFT_Data_D15 << 15 | TFT_Data_D14 << 14 | TFT_Data_D13 << 13 |TFT_Data_D12<< 12 | TFT_Data_D11<< 11 | TFT_Data_D10 << 10 | TFT_Data_D9 << 9 | TFT_Data_D8<< 8 | TFT_Data_D7<< 7 | TFT_Data_D6<< 6 | TFT_Data_D5<< 5 | TFT_Data_D4<< 4 | TFT_Data_D3<< 3 | TFT_Data_D2<< 2 | TFT_Data_D1<<1| TFT_Data_D0;
 temp &= 0xFF00;
 value = values | temp;
 GPIOD_ODR.B14 = (value&0x01)?1:0;
 GPIOD_ODR.B15 = (((value) >> 1)&0x01)?1:0;
 GPIOD_ODR.B0= (((value) >> 2)&0x01)?1:0;
 GPIOD_ODR.B1  = (((value) >> 3)&0x01)?1:0;
 GPIOE_ODR.B7 = (((value) >> 4)&0x01)?1:0;
 GPIOE_ODR.B8 = (((value) >> 5)&0x01)?1:0;
 GPIOE_ODR.B9 = (((value) >> 6)&0x01)?1:0;
 GPIOE_ODR.B10 = (((value) >> 7)&0x01)?1:0;
 GPIOE_ODR.B11 = (((value) >> 8)&0x01)?1:0;
 GPIOE_ODR.B12 = (((value) >> 9)&0x01)?1:0;
 GPIOE_ODR.B13 = (((value) >> 10)&0x01)?1:0;
 GPIOE_ODR.B14  = (((value) >> 11)&0x01)?1:0;
 GPIOE_ODR.B15 = (((value) >> 12)&0x01)?1:0;
 GPIOD_ODR.B8 = (((value) >> 13)&0x01)?1:0;
 GPIOD_ODR.B9 = (((value) >> 14)&0x01)?1:0;
 GPIOD_ODR.B10 = (((value) >> 15)&0x01)?1:0;
}

void TFT_Write_Strobe()
   {
  TFT_WR = 0 ;
  asm nop;  ;
  TFT_WR = 1   ;
   }

/////
void TFT_Set_Index_CustomX(unsigned short index)
{
  TFT_RS = 0;
  Write_to_PortX(index);
  TFT_Write_Strobe();
}
void TFT_Write_Command_CustomX(unsigned short cmd) {
TFT_RS = 1;
  Write_to_PortX(cmd);
  TFT_Write_Strobe();
 }

 void TFT_Write_Data_16bit_CustomX(unsigned int _data)
 {
   TFT_RS = 1; // Write to 16-bit port
   Write_to_PortX( _data); // Strobe
   TFT_Write_Strobe() ;
 }


    //////////////////
    void main() 
    {
    GPIO_Config(&GPIOD_BASE, _GPIO_PINMASK_0|_GPIO_PINMASK_1|_GPIO_PINMASK_8|_GPIO_PINMASK_9|_GPIO_PINMASK_10|_GPIO_PINMASK_14|_GPIO_PINMASK_15, _GPIO_CFG_DIGITAL_OUTPUT);
    GPIO_Config(&GPIOE_BASE, _GPIO_PINMASK_7|_GPIO_PINMASK_8|_GPIO_PINMASK_9|_GPIO_PINMASK_10|_GPIO_PINMASK_11|_GPIO_PINMASK_12|_GPIO_PINMASK_13|_GPIO_PINMASK_14|_GPIO_PINMASK_15, _GPIO_CFG_DIGITAL_OUTPUT);
    TFT_Set_Active(&TFT_Set_Index_CustomX, &TFT_Write_Command_CustomX, &TFT_Write_Data_16bit_CustomX);
    TFT_Init_Custom(320, 240);
    TFT_Fill_Screen(CL_RED);
     TFT_Write_Text("MENU MACHINE SETUP", 110, 100); 
     delay_ms(1000) ; 
     while(1) { } 
     }

Post Reply

Return to “mikroPascal General”