Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

ARM - From PIC

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[131] Re: ARM - From PIC

Messaggioda Foto UtenteTardoFreak » 12 mar 2012, 19:06

Mi sta arrivando la discovery. Ho deciso di prenderla insieme ad altre schede di sviluppo perché costa una pacca sulla spalla. Vedrò di farci un progettino di base che poi inserirò.
Abbi solo pazienza, dovrebbe arrivarmi fra qualche giorno.
"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,6k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15763
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[132] Re: ARM - From PIC

Messaggioda Foto Utentepierinter » 12 mar 2012, 19:14

Si costa poco ed è comoda..

Posso chiederti se mi mandi qualche tuo progettino ? anche di esempio..
perché il problema che ho è nella gestione dei file da parte di keil..non nel codice in se
Avatar utente
Foto Utentepierinter
620 2 7 10
Expert EY
Expert EY
 
Messaggi: 1395
Iscritto il: 23 mar 2009, 0:05

0
voti

[133] Re: ARM - From PIC

Messaggioda Foto UtenteTardoFreak » 12 mar 2012, 19:19

Progettini non ne ho, ne devo fare un a posta e lo farò in un momento di relax, magari la sera dopo cena (se non devo lavorare). :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,6k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15763
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[134] Re: ARM - From PIC

Messaggioda Foto Utentepierinter » 12 mar 2012, 21:58

Non riesco a capire come inserire nei progetti i vari file della libreria della ST :
- stm32f10x_gpio.c
- stm32f10x_exti.c
- stm32f10x_rcc.c
- misc.c
ecc ecc..

Mi da sempre degli errori di variabili non definite, quindi mancano dei file!

Se riesci a darmi un aiutino su questo...:)

Altrimenti non uso nessuna delle funzioni lì dichiarate e vedo di farmi tutto io!
È chiaro però che utilizzare quelle funzioni è da una più facile e più leggibile...
Avatar utente
Foto Utentepierinter
620 2 7 10
Expert EY
Expert EY
 
Messaggi: 1395
Iscritto il: 23 mar 2009, 0:05

0
voti

[135] Re: ARM - From PIC

Messaggioda Foto UtenteTardoFreak » 12 mar 2012, 23:55

Pier, abbi pazienza!
Mi arriva lo schedino, ci gioco un po' e poi ti dico.
Non sono affatto capace ad insegnare, tanto meno a risolvere problemi a distanza. Fossi qui vicino a me risolveremmo la situazione in pochi minuti ma siamo lontani.
E non sai quanto soffro di questa lontananza, visto che ti tratto come un figlio. -:- :mrgreen:
A parte gli scherzi, pazienta e le risposte arriveranno. :ok:
"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,6k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15763
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[136] Re: ARM - From PIC

Messaggioda Foto Utentepierinter » 13 mar 2012, 0:32

si si paziento (anche se io faccio molta fatica :D )

Ho trovato questo codice all'interno di Keil che mi funziona.

A questo punto, almeno per ora, utilizzo questi simboli e non le funzioni previste dalle librerie, così almeno imparo a scrivere un codice che sia più portabile rispetto all'utilizzo delle librerie standard della ST.

Te lo posto

Codice: Seleziona tutto
//LED BLINKY

#include "stm32f10x.h"


#define LED_BLINK_RATE    20             /* rate = LED_BLINK_RATE * systick   */
#define LED_NUM            2             /* Number of user LEDs               */
const unsigned long led_mask[] = { 1UL<<8, 1UL<<9 };

#define USER1              0x0001        /* PA0 : USER1                       */
#define UNBOUNCE_CNT       10            /* unbounce the Push Button          */


uint32_t ledVal   = 1;
uint32_t ledOn    = 0;
uint32_t ledBlink = 0;

/*----------------------------------------------------------------------------
  configer LED pins
*----------------------------------------------------------------------------*/
__INLINE static void LED_Config(void) {

  RCC->APB2ENR |=  1 <<  4;                    /* Enable GPIOC clock          */
  GPIOC->CRH   &= 0xFFFFFF00;                  /* Configure the GPIO for LEDs */
  GPIOC->CRH   |= 0x00000033;                  /* Configure the GPIO for LEDs */
}

/*----------------------------------------------------------------------------
  Switch on LEDs
*----------------------------------------------------------------------------*/
__INLINE static void LED_On (uint32_t num) {

  GPIOC->BSRR = led_mask[num];                 /* Turn On  LED                */
}


/*----------------------------------------------------------------------------
  Switch off LEDs
*----------------------------------------------------------------------------*/
__INLINE static void LED_Off (uint32_t num) {

  GPIOC->BRR  = led_mask[num];                 /* Turn Off LED                */
}

/*----------------------------------------------------------------------------
  Function that outputs value to LEDs
*----------------------------------------------------------------------------*/
void LED_Out(uint32_t value) {
  int i;

  for (i = 0; i < LED_NUM; i++) {
    if (value & (1<<i)) {
      LED_On (i);
    } else {
      LED_Off(i);
    }
  }
}

/*----------------------------------------------------------------------------
  configer Button pins
*----------------------------------------------------------------------------*/
__INLINE static void BTN_Config(void) {

  RCC->APB2ENR |=  1 <<  2;                    /* Enable GPIOA clock          */
  GPIOA->CRL   &= 0xFFFFFFF0;                  /* Configure the GPIO for BTNs */
  GPIOA->CRL   |= 0x00000008;                  /* Configure the GPIO for BTNs */
}

/*----------------------------------------------------------------------------
  Read Button pins
*----------------------------------------------------------------------------*/
__INLINE static uint32_t BTN_Get(void) {

return (GPIOA->IDR & 0x0001);

}


/*----------------------------------------------------------------------------
  USER1Pressed
  check if USER1 is pressed (unbounced).
*----------------------------------------------------------------------------*/
uint32_t BTN_Pressed (void) {
  static uint32_t USER1KeyCount = 0, USER1KeyPressed = 0;

  if (USER1KeyPressed) {
    if ((BTN_Get() == 0 )) {                   /* Check if USER1 not pressed  */
      if (USER1KeyCount < UNBOUNCE_CNT) USER1KeyCount++;
      else {
        USER1KeyPressed = 0;
        USER1KeyCount = 0;   
      }
    }
  }
  else {
    if (!(BTN_Get() == 0 ))  {                 /* Check if USER1 pressed      */
      if (USER1KeyCount < UNBOUNCE_CNT) USER1KeyCount++;
      else {
        USER1KeyPressed = 1;
        USER1KeyCount = 0;
      return (1);
      }
    }
  }
  return (0);
}
/*----------------------------------------------------------------------------
  SysTick_Handler
*----------------------------------------------------------------------------*/
void SysTick_Handler (void) {
  static uint32_t ticks;

  if (ticks++ >= LED_BLINK_RATE) {
    ticks    = 0;
    ledBlink = 1;
  }

}


/*----------------------------------------------------------------------------
  MAIN function
*----------------------------------------------------------------------------*/
int main (void) {

  LED_Config();
  BTN_Config();                             

  SysTick_Config(SystemCoreClock / 100);       /* Setup SysTick Timer  (10ms) */
 
  while(1) {
    if (BTN_Pressed()) {
      ledVal += 1;
      if (ledVal > 3) ledVal = 1;
    }

    if (ledBlink == 1) {
      ledBlink  = 0;
     ledOn    ^= 1;
     if (ledOn == 1)
        LED_Out (ledVal);                      /* switch the LEDs on          */
      else
        LED_Out (0);                           /* switch the LEDs off         */   
   }
  }


La struttura non è difficile da capire, la sintassi neanche.

Il problema ora è capire cosa sono quei CRL, CRH ecc...
Ed anche capire che cavolo di espressioni sono quelle del tipo ''RCC->APB2ENR |= 1 << 4;''
è un or bit a bit con un shift a sinistra... boh , a cosa serve ?
E così tutto il resto.

Cercando nella documentazione risulta che sono tutti elementi di strutture..ad esempio di GPIO_InitStruct.
E ok... però ora devo capire cosa fanno, e soprattutto che valore dare ad ognuno di questi, visto che le operazioni che vedo nel codice sono assurde e tutt'altro che intuitive (almeno per me ).
Avatar utente
Foto Utentepierinter
620 2 7 10
Expert EY
Expert EY
 
Messaggi: 1395
Iscritto il: 23 mar 2009, 0:05

0
voti

[137] Re: ARM - From PIC

Messaggioda Foto Utentecrestus » 13 mar 2012, 13:25

pierinter ha scritto:Il problema ora è capire cosa sono quei CRL, CRH ecc...
Ed anche capire che cavolo di espressioni sono quelle del tipo ''RCC->APB2ENR |= 1 << 4;''
è un or bit a bit con un shift a sinistra... boh , a cosa serve ?


Che sia una maniera differente di scrivere le assegnazioni?

APB2ENR sicurametne è un registro....
Comunque hai 2 metodi secondo me...
  • debuggare e usare la funzione watch su quei registri/variabili e vedere come variano....
  • fare un bel ctrl-F sul pdf del datasheet e cercare queste sigle.. e vedere che ne esce...
...:::Pivello allo sbaraglio:::...

MY WEBSITE! come and see... ;) <-- Di nuovo online... spiacente per i problemi tecnici!
Avatar utente
Foto Utentecrestus
1.295 2 7 13
Expert EY
Expert EY
 
Messaggi: 478
Iscritto il: 3 ott 2008, 10:28
Località: studente al politecnico di torino

0
voti

[138] Re: ARM - From PIC

Messaggioda Foto Utentepierinter » 13 mar 2012, 19:03

Penso di capire che problemi ci siano..
Ci sono dei problemi nelle librerie perché mi dice che alcune cosa vengono dichiarate due volte..

Posso chiederti se riesci a postarmi le librerie della ST che usi che si trovano in C://Keil/ecc... ?
Avatar utente
Foto Utentepierinter
620 2 7 10
Expert EY
Expert EY
 
Messaggi: 1395
Iscritto il: 23 mar 2009, 0:05

0
voti

[139] Re: ARM - From PIC

Messaggioda Foto UtenteTardoFreak » 13 mar 2012, 19:27

Mah, io semplicemente includo il file fra virgolette.
Comunque il path è : C:\programmi\Keil\ARM\Inc\ST\STM32F10x
"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,6k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15763
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[140] Re: ARM - From PIC

Messaggioda Foto Utentepierinter » 14 mar 2012, 1:00

Ho seguito questo link :
http://bertrand.granado.free.fr/iWeb/mi ... 102009.pdf

che spiega come installare la libreria della ST.

Però mi da errori di RIDEFINIZIONI di molte cose
Avatar utente
Foto Utentepierinter
620 2 7 10
Expert EY
Expert EY
 
Messaggi: 1395
Iscritto il: 23 mar 2009, 0:05

PrecedenteProssimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti