Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

KEIL μVision: header & librerie.

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

2
voti

[1] KEIL μVision: header & librerie.

Messaggioda Foto Utentesimo85 » 30 mag 2012, 0:49

Buenas noches a todos, :-)

Oggi finalmente ho cominciato ad avere tempo per sperimentare la STM32F4 Discovery board che ho comprato qualche settimana fa.

Ho dato uno sguardo alle varie documentazioni:
1) STM32F405xx & STM32F407xx
2) advanced ARM-based 32-bit MCUs
3) Cortex-M4 programming manual..

:shock:

4) Qui è possibile scaricare codice di esempio per la STM32F4 Discovery, mentre
5) qui si può scaricare la STM32F4 C Library con relativa documentazione.

Li ho linkati nel caso servissero a qualcuno per facilitarne il download.

Però, ho subito riscontrato un piccolo problema con header e librerie. Espongo subito il mio problema.
Nel codice di un nuovo progetto includo i seguenti headers (codice copiato ed incollato da un esempio)
Codice: Seleziona tutto
#include "stm32f4xx.h"
#include "stm324xg_eval.h"

Ovviamente non li trova perché non sono nella stessa cartella, li ho cercati e sono quà e là all'interno delle cartelle del file zippato del link 5.

Se li copio e li incollo mi riporta il messaggio di errore che non trova gli headers quindi il compilatore non riesce trovare le librerie.
Dovrei copiare tutti gli header inclusi a loro volta nei vari header nella cartella del progetto, con la sfiga che non funzionerebbe chissà.

Ho cercato qua e là nelle opzioni ma non capisco e/o non trovo la opzione o il metodo per linkarle.

Secondo me nella opzioni devo cambiare la stringa di comando del compilatore, che per il momento è questa:

-c --cpu Cortex-M4.fp -D__EVAL -g -O0 --apcs=interwork -I C:\Keil\ARM\RV31\Inc -I C:\Keil\ARM\CMSIS\Include -I C:\Keil\ARM\Inc\ST\STM32F4xx -o "*.o" --omf_browse "*.crf" --depend "*.d"

In grassetto ho marcato le opzioni che immagino siano delle librerie.

Infine, questo è il messaggio di errore:
Codice: Seleziona tutto
Rebuild target 'Target 1'
assembling startup_stm32f4xx.s...
compiling P01.c...
stm324xg_eval.h(39): error:  #5: cannot open source input file "stm32_eval_legacy.h": No such file or directory
compiling stm32f4xx_it.c...
compiling system_stm32f4xx.c...
Target not created


Sono un po' in alto mare.. Sicuramente c'è qualcosa che non ho letto, ma dove? :cry:

Vi ringrazio in anticipo per il vostro aiuto.. [-o< iOi
O_/
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[2] Re: KEIL μVision: header & librerie.

Messaggioda Foto UtenteTardoFreak » 30 mag 2012, 1:02

Alura,
Quello che stai riscontrando è un qualcosa di abbastanza normale. Scrivere un programma "hello world!" per questo tipo di micro non è semplicissimo. La via più veloce è quella di prendere un esempio funzionante (il classico programma blinky), capirne la struttura e l' organizzazione ed usarlo come base di partenza per altri programmi.

Ma ora è tardi e riprenderò il discorso domani a mente fresca. :mrgreen:
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[3] Re: KEIL μVision: header & librerie.

Messaggioda Foto Utentesimo85 » 30 mag 2012, 1:07

Ciao TardoFreak,

Infatti ho preso l'esempio IOToggle per studiarmi anche un po' le strutture usate. :ok:
Nella docu sono spiegate quindi parto con questo approccio, a gattoni esempio per esempio.

Comunque, secondo me é meglio che vada a dormire ed a riposare un po'..
La salud es más importante. -:-

Domani a mente fresca investigherò meglio.
Se risolvo comunico, altrimenti vuol dire che starò soffrendo in silenzio. :mrgreen:

O_/
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

2
voti

[4] Re: KEIL μVision: header & librerie.

Messaggioda Foto UtenteTardoFreak » 30 mag 2012, 18:30

Alura,
Partiamo dalla cartella STM32F4-Discovery_FE_V1.1.0
Qui dentro c'è un po' di tutto e prendo come esempio il progetto IO_Toggle.
Se si apre il progetto, si va sulla finestra dinavigazione del progetto stesso, si clicca con il tasto DX del mouse sopra il nome del progetto, cioè su IO_Toggle e si selezione "Option for target IO_Toggle" viene visualizzata una finestra a schede. La scheda importante è quella "C/C++".
Nella linea "Include Paths" c'è scritto:
Codice: Seleziona tutto
..\;..\..\..\..\Libraries\CMSIS\Include;..\..\..\..\Libraries\CMSIS\ST\STM32F4xx\Include;..\..\..\..\Libraries\STM32F4xx_StdPeriph_Driver\inc;..\..\..\..\Utilities\STM32F4-Discovery

Che indica al compilatore dove andarsi a cercare quello che gli interessa.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[5] Re: KEIL μVision: header & librerie.

Messaggioda Foto Utentesimo85 » 30 mag 2012, 19:05

É da quella sotto-finestra che ho preso la stringa del compilatore riportata al messaggio 1, sotto la voce "Compiler Control String".

OK, includo li le cartelle delle libs in "Include Paths" e ti faccio sapere. :ok:

Grazie ancora.
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[6] Re: KEIL μVision: header & librerie.

Messaggioda Foto UtenteTardoFreak » 30 mag 2012, 19:36

La linea del compilatore non la toccare, è generata in automatico.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[7] Re: KEIL μVision: header & librerie.

Messaggioda Foto Utentesimo85 » 30 mag 2012, 20:00

No quella non l'ho toccata. :ok:

Comunque adesso si è presentato il problema di un messaggio di errore che segnala un mal funzionamento del Just-In-Time-Debugging di Visual Studio 2010. WTF.. ?% :cry:

Giustamente il KEIL crasha all'improvviso di punto in bianco.

||O ||O ||O
°#^ °#^ °#^
"[#]" "[#]" "[#]"

Mi faccio strada tra i rovi e torno.. :mrgreen:
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[8] Re: KEIL μVision: header & librerie.

Messaggioda Foto Utentesimo85 » 30 mag 2012, 20:48

OK, sono proprio un pistola. :mrgreen:

Invece di usare gli esempi del link 4 stavo usando quelli scaricati al link 5 e non andava.
Questo è il loop del firmware:
Codice: Seleziona tutto
  while (1)
  {
    /* PD12 to be toggled */
    GPIO_SetBits(GPIOD, GPIO_Pin_12);
   
    /* Insert delay */
    Delay(0x3FFFFF);
   
    /* PD13 to be toggled */
    GPIO_SetBits(GPIOD, GPIO_Pin_13);
   
    /* Insert delay */
    Delay(0x3FFFFF);
 
    /* PD14 to be toggled */
    GPIO_SetBits(GPIOD, GPIO_Pin_14);
   
    /* Insert delay */
    Delay(0x3FFFFF);
   
    /* PD15 to be toggled */
    GPIO_SetBits(GPIOD, GPIO_Pin_15);
   
    /* Insert delay */
    Delay(0x7FFFFF);
   
    GPIO_ResetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
   
    /* Insert delay */
    Delay(0xFFFFFF);
  }

Non mi resta che prendere l'oscilloscopio e verificare, o farmi una barra di LED.
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[9] Re: KEIL μVision: header & librerie.

Messaggioda Foto UtenteTardoFreak » 30 mag 2012, 22:35

Se hai poi un oscilloscopio abbastanza veloce togli i delay e guarda. :cool:
Sappi che se manipoli gli I/O senza la libreria la velocità è almeno 5 volte superiore. -:-
Sempre se hai un oscilloscopio con banda sufficiente. :mrgreen:
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[10] Re: KEIL μVision: header & librerie.

Messaggioda Foto Utentesimo85 » 30 mag 2012, 23:31

Possiedo questo (ma sul mio c'è scritto 100MHz..).

Comunque prima ho avviato il programma con START DEBUG e non ho visto nessun cambio di stato. ( :?: )
É anche vero che ero un po' di fretta e non mi sono studiato molto il codice.
Insomma una prova ad caxxum..

Grazie ancora.
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

Prossimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti