Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

progettare LCD touch con STM32

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[51] Re: progettare LCD touch con STM32

Messaggioda Foto Utentepusillus » 16 nov 2018, 12:38

Grazie. Ti posto i 2 files di configurazione:
Codice: Seleziona tutto
/****************************************************************************
* @file     LCDConf.c
*
*/

#include "GUI.h"
#include "LCD_X_SPI.h"
#include "GPIO_STM32F10x.h"

#ifndef _WINDOWS
#include "GUIDRV_FlexColor.h"
#endif

/*********************************************************************
*
*       Layer configuration
*
**********************************************************************
*/
//
// Color depth
//
#define LCD_BITSPERPIXEL 16 /* Currently the values 16 and 18 are supported */
//
// Physical display size
//
#define XSIZE_PHYS 320
#define YSIZE_PHYS 240

//
// Color conversion
//
#define COLOR_CONVERSION GUICC_565

//
// Display driver
//
#define DISPLAY_DRIVER GUIDRV_FLEXCOLOR

//
// Orientation
//
//#define DISPLAY_ORIENTATION (0)
//#define DISPLAY_ORIENTATION (GUI_MIRROR_X)
//#define DISPLAY_ORIENTATION (GUI_MIRROR_Y)
//#define DISPLAY_ORIENTATION (GUI_MIRROR_X | GUI_MIRROR_Y)
#define DISPLAY_ORIENTATION (GUI_SWAP_XY)
//#define DISPLAY_ORIENTATION (GUI_MIRROR_X | GUI_SWAP_XY)
//#define DISPLAY_ORIENTATION (GUI_MIRROR_Y | GUI_SWAP_XY)
//#define DISPLAY_ORIENTATION (GUI_MIRROR_X | GUI_MIRROR_Y | GUI_SWAP_XY)

/*********************************************************************
*
*       Configuration checking
*
**********************************************************************
*/
#ifndef   VXSIZE_PHYS
  #define VXSIZE_PHYS XSIZE_PHYS
#endif
#ifndef   VYSIZE_PHYS
  #define VYSIZE_PHYS YSIZE_PHYS
#endif
#ifndef   XSIZE_PHYS
  #error Physical X size of display is not defined!
#endif
#ifndef   YSIZE_PHYS
  #error Physical Y size of display is not defined!
#endif
#ifndef   COLOR_CONVERSION
  #error Color conversion not defined!
#endif
#ifndef   DISPLAY_DRIVER
  #error No display driver defined!
#endif
#ifndef   DISPLAY_ORIENTATION
  #define DISPLAY_ORIENTATION 0
#endif

/*********************************************************************
*
*       Static code
*
**********************************************************************
*/

#define LcdWriteReg(reg) LCD_X_SPI_Write00(reg);
#define LcdWriteData(data) LCD_X_SPI_Write01(data);

/*********************************************************************
*
*       _InitController
*
* Purpose:
*   Initializes the display controller
*/
static void _InitController(void) {
#ifndef WIN32

  GPIO_PinWrite    (GPIOA, 2,0);
  GUI_X_Delay (10);
  GPIO_PinWrite    (GPIOA, 2,1);
   GUI_X_Delay (120);
  LcdWriteReg(0x11);
  GUI_X_Delay(120);
  LCD_X_SPI_Init();
  GUI_X_Delay(10);

// LcdWriteReg(0x01);//soft reset
// GUI_X_Delay(1000);
  //power control A
  LcdWriteReg(0xCB);
  LcdWriteData(0x39);
  LcdWriteData(0x2C);
  LcdWriteData(0x00);
  LcdWriteData(0x34);
  LcdWriteData(0x02);

  //power control B
  LcdWriteReg(0xCF);
  LcdWriteData(0x00);
  LcdWriteData(0xC1);
  LcdWriteData(0x30);

  //driver timing control A
  LcdWriteReg(0xE8);
  LcdWriteData(0x85);
  LcdWriteData(0x00);
  LcdWriteData(0x78);

  //driver timing control B
  LcdWriteReg(0xEA);
  LcdWriteData(0x00);
  LcdWriteData(0x00);

  //power on sequence control
  LcdWriteReg(0xED);
  LcdWriteData(0x64);
  LcdWriteData(0x03);
  LcdWriteData(0x12);
  LcdWriteData(0x81);

  //pump ratio control
  LcdWriteReg(0xF7);
  LcdWriteData(0x20);

  //power control,VRH[5:0]
  LcdWriteReg(0xC0);
  LcdWriteData(0x23);

  //Power control,SAP[2:0];BT[3:0]
  LcdWriteReg(0xC1);
  LcdWriteData(0x10);

  //vcm control
  LcdWriteReg(0xC5);
  LcdWriteData(0x3E);
  LcdWriteData(0x28);

  //vcm control 2
  LcdWriteReg(0xC7);
  LcdWriteData(0x86);

  //memory access control
  LcdWriteReg(0x36);
  LcdWriteData(0x48);

  //pixel format
  LcdWriteReg(0x3A);
  LcdWriteData(0x55);

  //frameration control,normal mode full colours
  LcdWriteReg(0xB1);
  LcdWriteData(0x00);
  LcdWriteData(0x18);

  //display function control
  LcdWriteReg(0xB6);
  LcdWriteData(0x08);
  LcdWriteData(0x82);
  LcdWriteData(0x27);

  //3gamma function disable
  LcdWriteReg(0xF2);
  LcdWriteData(0x00);

  //gamma curve selected
  LcdWriteReg(0x26);
  LcdWriteData(0x01);

  //set positive gamma correction
  LcdWriteReg(0xE0);
  LcdWriteData(0x0F);
  LcdWriteData(0x31);
  LcdWriteData(0x2B);
  LcdWriteData(0x0C);
  LcdWriteData(0x0E);
  LcdWriteData(0x08);
  LcdWriteData(0x4E);
  LcdWriteData(0xF1);
  LcdWriteData(0x37);
  LcdWriteData(0x07);
  LcdWriteData(0x10);
  LcdWriteData(0x03);
  LcdWriteData(0x0E);
  LcdWriteData(0x09);
  LcdWriteData(0x00);

  //set negative gamma correction
  LcdWriteReg(0xE1);
  LcdWriteData(0x00);
  LcdWriteData(0x0E);
  LcdWriteData(0x14);
  LcdWriteData(0x03);
  LcdWriteData(0x11);
  LcdWriteData(0x07);
  LcdWriteData(0x31);
  LcdWriteData(0xC1);
  LcdWriteData(0x48);
  LcdWriteData(0x08);
  LcdWriteData(0x0F);
  LcdWriteData(0x0C);
  LcdWriteData(0x31);
  LcdWriteData(0x36);
  LcdWriteData(0x0F);

  //exit sleep
  LcdWriteReg(0x11);
  GUI_X_Delay(120);
  //display on
  LcdWriteReg(0x29);


#endif
}

/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       LCD_X_Config
*
* Purpose:
*   Called during the initialization process in order to set up the
*   display driver configuration.
*
*/
void LCD_X_Config(void) {
  GUI_DEVICE * pDevice;
  GUI_PORT_API PortAPI;
  CONFIG_FLEXCOLOR Config = {0};

  //
  // Set display driver and color conversion for 1st layer
  //
  pDevice = GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0);

  //
  // Display driver configuration, required for Lin-driver
  //
  if (DISPLAY_ORIENTATION & GUI_SWAP_XY) {
    LCD_SetSizeEx (0, YSIZE_PHYS,   XSIZE_PHYS);
    LCD_SetVSizeEx(0, VYSIZE_PHYS,  VXSIZE_PHYS);
  } else {
    LCD_SetSizeEx (0, XSIZE_PHYS,   YSIZE_PHYS);
    LCD_SetVSizeEx(0, VXSIZE_PHYS,  VYSIZE_PHYS);
  }

  //
  // Function pointers for 8 bit interface
  //
  PortAPI.pfWrite8_A0  = LCD_X_SPI_Write00;
  PortAPI.pfWrite8_A1  = LCD_X_SPI_Write01;
  PortAPI.pfWriteM8_A1 = LCD_X_SPI_WriteM01;
  PortAPI.pfRead8_A1  = LCD_X_SPI_Read00;
  PortAPI.pfReadM8_A1  = LCD_X_SPI_ReadM01;

  GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66709, GUIDRV_FLEXCOLOR_M16C0B8);

  //
  // Orientation
  //
  Config.Orientation = DISPLAY_ORIENTATION;
// Config.NumDummyReads = 2;      /* 5 dummy bytes are required when reading GRAM by SPI. 1 byte is read in LCD_X_SPI_WriteM01, so 4 bytes are left */
// Config.NumDummyReads = 1; // For ILI9341 4 bytes are required when reading GRAM by SPI.
  GUIDRV_FlexColor_Config(pDevice, &Config);
}

/*********************************************************************
*
*       LCD_X_DisplayDriver
*
* Purpose:
*   This function is called by the display driver for several purposes.
*   To support the according task the routine needs to be adapted to
*   the display controller. Please note that the commands marked with
*   'optional' are not cogently required and should only be adapted if
*   the display controller supports these features.
*
* Parameter:
*   LayerIndex - Index of layer to be configured
*   Cmd        - Please refer to the details in the switch statement below
*   pData      - Pointer to a LCD_X_DATA structure
*/
int LCD_X_DisplayDriver(unsigned LayerIndex, unsigned Cmd, void * pData) {
  int r;

  GUI_USE_PARA(LayerIndex);
  GUI_USE_PARA(pData);
  switch (Cmd) {
  //
  // Required
  //
  case LCD_X_INITCONTROLLER: {
    //
    // Called during the initialization process in order to set up the
    // display controller and put it into operation. If the display
    // controller is not initialized by any external routine this needs
    // to be adapted by the customer...
    //
    _InitController();
    return 0;
  }
  default:
    r = -1;
  }
  return r;
}

/*************************** End of file ****************************/



Codice: Seleziona tutto
/****************************************************************************
* @file     LCD_X_SPI.c

*/

#include "GUI.h"
#include "LCD_X_SPI.h"
#include "GPIO_STM32F10x.h"
#include "Driver_SPI.h"


/*
*     ILI9341S wiring, using STM32F103C8T6 SPI2:
*  VCC          - 3.3V Vcc
*  GND          - GND
*  CS           - PA4
*  RESET        - PA2
*  DC           - PA3
*  MOSI         - PB15 (SPI2 MOSI)   -   PA7 (SPI1 MOSI)
*  MISO         - PB14 (SPI2 MISO)   -   PA6 (SPI1 MISO)
*  SCK (SCL)    - PB13 (SPI2 SCK)    -   PA5 (SPI1 SCK)
*  LED          - via resistor 68 Ohm to 3.3V Vcc
*/

/*  BACKLIGHT Control disabled. Directly connected to Vcc
#define LCD_PORT_BKL  GPIOA
#define GPIO_PIN_BKL GPIO_Pin_1 
*/

extern ARM_DRIVER_SPI Driver_SPI1;
#define ptrSPI      (&Driver_SPI1)

#define LCD_PORT_RST GPIOA
#define GPIO_PIN_RST GPIO_Pin_2
#define LCD_PORT_DC GPIOA
#define GPIO_PIN_DC GPIO_Pin_3
#define LCD_PORT_SCE GPIOA
#define GPIO_PIN_SCE GPIO_Pin_4

#define LCD_C Bit_RESET
#define LCD_D Bit_SET



// Our global SPI instance for the display


void LCD_X_SPI_Init(void)
{
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);
  /* Initialize and configure SPI */
  ptrSPI->Initialize(NULL);
  ptrSPI->PowerControl(ARM_POWER_FULL);
  ptrSPI->Control(ARM_SPI_MODE_MASTER  |
                  ARM_SPI_CPOL1_CPHA1  |
                  ARM_SPI_MSB_LSB      |
                  ARM_SPI_SS_MASTER_UNUSED |
                  ARM_SPI_DATA_BITS(8),
                  18000000);

  /* init control pins) */
  GPIO_PortClock   (GPIOA, true);
  GPIO_PinConfigure(GPIOA,  GPIO_Pin_2 |  GPIO_Pin_3 |  GPIO_Pin_4, GPIO_OUT_PUSH_PULL, GPIO_MODE_OUT50MHZ);
  GPIO_PinWrite    (GPIOA, 2, 1);  // set up RESET PIN

}

/*******************************************************************************
* Write a command the LCD controller                                           *
*   Parameter:    cmd:    command to be written                                *
*   Return:                                                                    *
*******************************************************************************/
void wr_cmd (U8 cmd)
{
   GPIO_WriteBit(LCD_PORT_DC, GPIO_PIN_DC, LCD_C); // dc 1 = data, 0 = control
   GPIO_ResetBits(LCD_PORT_SCE, GPIO_PIN_SCE);
   ptrSPI->Send(&cmd, 1);
   while (ptrSPI->GetStatus().busy);
   GPIO_SetBits(LCD_PORT_SCE, GPIO_PIN_SCE);
}

/*******************************************************************************
* Write data to the LCD controller                                             *
*   Parameter:    dat:    data to be written                                   *
*   Return:                                                                    *
*******************************************************************************/
void wr_dat (U8 dat)
{
  GPIO_WriteBit(LCD_PORT_DC, GPIO_PIN_DC, LCD_D); // dc 1 = data, 0 = control
    GPIO_ResetBits(LCD_PORT_SCE, GPIO_PIN_SCE);
    ptrSPI->Send(&dat, 1);
    while (ptrSPI->GetStatus().busy);
    GPIO_SetBits(LCD_PORT_SCE, GPIO_PIN_SCE);
}


/*******************************************************************************
* Write command                                                                *
*   Parameter:    c: command to write                                          *
*   Return:                                                                    *
*******************************************************************************/
void LCD_X_SPI_Write00(U8 c)
{
  wr_cmd(c);
}

/*******************************************************************************
* Write data byte                                                              *
*   Parameter:    c: word to write                                             *
*   Return:                                                                    *
*******************************************************************************/
void LCD_X_SPI_Write01(U8 c)
{
  wr_dat(c);
}

/*******************************************************************************
* Write multiple data bytes                                                    *
*   Parameter:    pData:    pointer to bytes to write                          *
*                 NumWords: Number of bytes to write                           *
*   Return:                                                                    *
*******************************************************************************/
void LCD_X_SPI_WriteM01(U8 * pData, int NumBytes)
{
   GPIO_WriteBit(LCD_PORT_DC, GPIO_PIN_DC, LCD_D); // dc 1 = data, 0 = control
   GPIO_ResetBits(LCD_PORT_SCE, GPIO_PIN_SCE);
   ptrSPI->Send(pData, NumBytes);
   while (ptrSPI->GetStatus().busy);
   GPIO_SetBits(LCD_PORT_SCE, GPIO_PIN_SCE);
}

/*******************************************************************************
* Read multiple data bytes                                                     *
*   Parameter:    pData:    pointer to bytes to read                           *
*                 NumWords: Number of bytes to read                            *
*   Return:                                                                    *
*******************************************************************************/
void LCD_X_SPI_ReadM01(U8 * pData, int NumBytes)
{
  GPIO_WriteBit(LCD_PORT_DC, GPIO_PIN_DC, LCD_D); // dc 1 = data, 0 = control
  GPIO_ResetBits(LCD_PORT_SCE, GPIO_PIN_SCE);
  ptrSPI->Receive(pData, NumBytes);
  while (ptrSPI->GetStatus().busy);
  GPIO_SetBits(LCD_PORT_SCE, GPIO_PIN_SCE);
}

/*******************************************************************************
* Read single data byte                                                   *
*   Parameter:    pData:    pointer to bytes to read                           *
*                 NumWords: Number of bytes to read                            *
*   Return:                                                                    *
*******************************************************************************/
void LCD_X_SPI_Read00(U8 Data)
{
  GPIO_WriteBit(LCD_PORT_DC, GPIO_PIN_DC, LCD_C); // dc 1 = data, 0 = control
  GPIO_ResetBits(LCD_PORT_SCE, GPIO_PIN_SCE);
  ptrSPI->Receive(&Data, 1);
  while (ptrSPI->GetStatus().busy);
  GPIO_SetBits(LCD_PORT_SCE, GPIO_PIN_SCE);
}
Immagine
Un lungo viaggio di mille miglia comincia con un solo passo
Lao Tzu
Avatar utente
Foto Utentepusillus
1.394 5 11
Sostenitore
Sostenitore
 
Messaggi: 553
Iscritto il: 5 mar 2016, 15:19
Località: Latina

0
voti

[52] Re: progettare LCD touch con STM32

Messaggioda Foto Utenteluxinterior » 16 nov 2018, 15:39

Le funzioni del display mi pare che tu le abbia già provate senza la libreria giusto ? Quindi su quelle ci mettiamo un punto certo.
I passi da fare per me sono:
col debug vedere se effettivamente vengono chiamate (A questo punto l'inizializzazione dovrebbe essere corretta)
Se possibile controllare su spi che quello che tu scrivi dal software sia proprio quello che esce sui pin.
Provare a traccciare i vari passaggi nelle procedure di basso livello.
Potresti creare una string adi debug, ogni procedura di basso livello quando viene chiamata aggiunge un suo carattere. Stampi questa stringa e vedi qual è la sequenza delle chiamate se è corretta se uan procedura viene chiamata più volte o nonviene proprio chiamata e poi affini l'indagine.

Se la sequenza di inizializzazione funziona senza la libreria fai una chiamata esplicita a quella prima dinizializzare la libreria e vedi cosa fa il display, se riesci a scrivere e quindi il problema va cercato enll'inizializzaizone.
Avatar utente
Foto Utenteluxinterior
2.249 2 4 8
Expert EY
Expert EY
 
Messaggi: 1259
Iscritto il: 6 gen 2016, 17:48

0
voti

[53] Re: progettare LCD touch con STM32

Messaggioda Foto Utentepusillus » 16 nov 2018, 19:43

Grazie .
Vedrò di fare come dici. È il tempo che manca... I miei esperimenti durano mesi perché posso dedicare poco tempo.
Ad ogni modo ho gia provato con il debug e dentro le routine di inizializzazione ci va.
Dovrei metterci un logic probe e analizzare quello che esce fuori.
Oppure posso provare anche con un st7735 che come DRIVER è molto simile.
Immagine
Un lungo viaggio di mille miglia comincia con un solo passo
Lao Tzu
Avatar utente
Foto Utentepusillus
1.394 5 11
Sostenitore
Sostenitore
 
Messaggi: 553
Iscritto il: 5 mar 2016, 15:19
Località: Latina

0
voti

[54] Re: progettare LCD touch con STM32

Messaggioda Foto Utenteluxinterior » 16 nov 2018, 23:09

Il display funziona correttamente senza emWin

dentro le routine di inizializzazione ci va.


c'è qualcosa che non torna Se l'hw è lo stesso deve funzionare
Con la libreria puoi fare Nmila cose ma se le procedure d basso livello usate furoi contensto libreria funzionano devono funzionare anche dentro La libreria.
La libreria complessa quanto vuoi ma deve alla fine cadere nel tuo codice e se questo funziona non ci sono santi
Avatar utente
Foto Utenteluxinterior
2.249 2 4 8
Expert EY
Expert EY
 
Messaggi: 1259
Iscritto il: 6 gen 2016, 17:48

0
voti

[55] Re: progettare LCD touch con STM32

Messaggioda Foto Utentelelerelele » 17 nov 2018, 12:37

La guerra non è ancora vinta!

Sono riuscito a compilare tutti i file,
Codice: Seleziona tutto
Building file: ../Src/main.c
Invoking: Cross ARM GNU C Compiler
arm-none-eabi-gcc -mcpu=cortex-m7 -mthumb -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections  -g3 -I"../Inc" -I"../BSP" -I"../Drivers/CMSIS/Include" -I"../Drivers/CMSIS/Device/ST/STM32F7xx/Include" -I"../Drivers/STM32F7xx_HAL_Driver/Inc" -std=gnu11 -MMD -MP -MF"Src/main.d" -MT"Src/main.o" -c -o "Src/main.o" "../Src/main.c"
Finished building: ../Src/main.c

mi crea i corrispettivi file.o,

dopo elabora il comando
Codice: Seleziona tutto
Building target: stm32_GLCD7_3.elf
Invoking: Cross ARM GNU C++ Linker
arm-none-eabi-g++ -mcpu=cortex-m7.....
exit.c:(.text.exit+0x16): undefined reference to `_exit'

il linker mi da un mucchio di errori su librerie gcc.

chi ci capisce qualcosa è bravo.

saluti
Avatar utente
Foto Utentelelerelele
1.998 2 7 8
Expert EY
Expert EY
 
Messaggi: 2225
Iscritto il: 8 giu 2011, 8:57
Località: Reggio Emilia

0
voti

[56] Re: progettare LCD touch con STM32

Messaggioda Foto Utentexyz » 17 nov 2018, 14:43

La funzione "_exit" di solito si trova in qualche libreria statica.

Nelle Binutils esiste il programma "nm":

https://sourceware.org/binutils/docs/bi ... nm.html#nm

per il tuo ARM si chiama "arm-none-eabi-nm" (sotto windows ha anche l'estensione .exe) il quale permette di esaminare i simboli definiti in una libreria statica (e non solo). In pratica devi trovare la libreria che contiene il simbolo "_exit" di tipo "T", la t deve essere maiuscola, sta ad indicare un simbolo definito del segmento TEXT, quello del codice (è un retaggio della vecchia nomenclatura usata in Fortran) adatta alla versione del micro-controllore che usi. Una volta trovata la libreria deve essere aggiunta al sistema di compilazione durante la fase del linker.
Avatar utente
Foto Utentexyz
5.405 2 4 5
Master EY
Master EY
 
Messaggi: 1425
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

0
voti

[57] Re: progettare LCD touch con STM32

Messaggioda Foto Utentelelerelele » 17 nov 2018, 19:31

Come al solito devo ringraziarti Foto Utentexyz per l'aiuto.

Ho cercato entro i file arm-none-eabi qualche _exit, non l'ho trovata, non saprei come fare a trovarla entro una marea di file, inoltre ce ne sono una quantità gia compilati, (non sono in formato testo). :cry:

Alla fine sono due settimane che divento matto per usare il software della board, se mi fossi fatto da me le librerie in queste due settimane magari sarei molto più avanti di ora.

Credo che cambierò strada, oppure rinuncio.

Se trovo la voglia provo ad installare eclipse con GCC su linux, chissà.
Oppure provo con Keil, come fine.

Per ora credo che ho faticato abbastanza, potrei capire se avessi difficoltà a realizzare il software, ma avere problemi infiniti solo per compilare qualche sorgente gia pronto non lo concepisco. Forse posso usare meglio il mio tempo abbandonando il progetto.

Intanto saluto tutti e ringrazio.
Avatar utente
Foto Utentelelerelele
1.998 2 7 8
Expert EY
Expert EY
 
Messaggi: 2225
Iscritto il: 8 giu 2011, 8:57
Località: Reggio Emilia

0
voti

[58] Re: progettare LCD touch con STM32

Messaggioda Foto Utentexyz » 17 nov 2018, 20:03

Questo è uno script per una shell utilizzata sotto Linux (utilizzando Cygwin funziona anche sotto Windows, almeno credo):

Codice: Seleziona tutto
#!/bin/sh

NM=arm-linux-gnueabi-nm

find . -type f -name "*.a" -exec $NM -A {} \; | grep " T "$1


cerca a partire della directory corrente tutti i file "*.a" il simbolo passato da linea di comando come parametro, nel tuo caso "_exit". Se non trova nulla si può sostituire "*.a" con "*.o" per cercare nei file oggetto.

Io sotto linux trovo quel simbolo nella libreria "newlib" compilata per ARM, o meglio viene trovata nelle varie versioni compilati per i differenti ARM presenti:

Codice: Seleziona tutto
....
./newlib/thumb/v7-ar/fpv3/softfp/librdimon_nano.a:rdimon-_exit.o:00000000 T _exit
./newlib/thumb/v7-m/librdpmon.a:_exit.o:00000000 T _exit
./newlib/thumb/v7e-m/fpv4-sp/softfp/librdimon_nano.a:rdimon-_exit.o:00000000 T _exit
...
Avatar utente
Foto Utentexyz
5.405 2 4 5
Master EY
Master EY
 
Messaggi: 1425
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

0
voti

[59] Re: progettare LCD touch con STM32

Messaggioda Foto Utentelelerelele » 18 nov 2018, 11:41

Ho trovato la funzione sotto Win FINDSTR, con la quale ho trovato una marea di file .a che contengono _exit, non saprei proprio quale linkare.

Ti ringrazio ma credo che cambierò strada, questa mi ha stufato.

Ho installato mingw, dopo avere impostato i vari path ecc. ha iniziato a compilare, dopo qualche file è uscito qualche errore
Codice: Seleziona tutto
Assembler messages
Error: number of operands mismatch for `ds'


evidentemente non è il mio mestiere.

e per oggi abbandono l'idea.

saluti a tutti e grazie ancora.
Avatar utente
Foto Utentelelerelele
1.998 2 7 8
Expert EY
Expert EY
 
Messaggi: 2225
Iscritto il: 8 giu 2011, 8:57
Località: Reggio Emilia

0
voti

[60] Re: progettare LCD touch con STM32

Messaggioda Foto Utenteluxinterior » 18 nov 2018, 12:04

e per oggi abbandono l'idea.


Fai bene ..Non so da te ma qui (friuli o furlania che dir si voglia) è una di quelle giornate da urlo limpido e bassa temperatura una goduria

lelerelele la strada che stai percorrendo è corretta: produttività nulla ma è tutto normale
L'errore che fai è saltare da un ambiente all'altro cercando di aggirare gli ostacoli.

Decidi quale strada prendere e vai fino in fondo Chiedi, informati, leggi solo così fai esperienza e progredisci.
Se posso permettermi: l'azienda per cui lavori potrebbe investire qualche migliaio di euro in un ambiente professionale ? Per STM32 c'è di tutto e di più chiaro che sul gratis devi risolvere molte cose da solo Ambienti come Keil o IAR costano ma aiutano non poco. Se l'idea è quella di sviluppare firmware in casa direi che sarebbe il caso di farci un pensierino.
Siccome in Italia sul software non is capisce molto (si combina con il free) E' come se l'officina meccanica che usa tornio manuale decidesse di comprare il tornio a controllo numerico.
Avatar utente
Foto Utenteluxinterior
2.249 2 4 8
Expert EY
Expert EY
 
Messaggi: 1259
Iscritto il: 6 gen 2016, 17:48

PrecedenteProssimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti