Come programmare la scheda di sviluppo STM32


17

Sono un principiante assoluto con la programmazione di microcontrollori ARM, ma ho esperienza con i microcontrollori AVR e PIC.

Qualche giorno fa ho acquistato una scheda di sviluppo STM32F103VET6 da eBay. Sto provando a programmare questa scheda ma non so da dove cominciare. Ho anche ricevuto un CD che contiene alcuni fogli dati e alcuni documenti (tutti in cinese).

Qualcuno potrebbe dirmi come iniziare? O qualcuno ha alcuni campioni di origine?

Ho già installato Keil uVision4. Ho anche un debugger J-link.


2
Non sono sicuro del perché sia ​​stato votato verso il basso. Sembra una domanda chiara, ben articolata, e OP ha cercato di aiutare se stesso. Riguarda lo sviluppo / progettazione, quindi sembra in tema. Votato.
— icarus74,

Questo è uno dei lati negativi dell'acquisto di schede di sviluppo su ebay, specialmente quelle di spedizione dall'estremo oriente. Spesso, sono progettati per il mercato locale e ottenere un manuale inglese di alta qualità (una lingua straniera per loro) creato, seminare / sviluppare / mantenere un forum degli utenti è troppo costoso e fastidioso. Anche questo è un mercato già servito da board leggermente più costosi. Detto questo, in passato l'ho imparato nel modo più duro e sono arrivato a tradurre la maggior parte delle parti del manuale in cinese in inglese usando il traduttore di Google. Lungi dall'essere perfetto, ma mi ha fatto muovere.
— icarus74,

Ovviamente, hai bisogno di una copia del manuale, che ha il testo come caratteri discreti, non un'immagine fotografica. Il testo OCR è un no-no rigoroso per questo approccio.
— icarus74,

Oh, e un'altra cosa. La maggior parte di queste schede di sviluppo dell'estremo oriente sono ~ 100% knock-off di alcune schede di sviluppo di aziende rinomate come Olimex, IAR ecc. Quindi un'ispezione visiva dettagliata della tua scheda e di queste può essere abbastanza rivelatrice. Certo, potrebbero esserci dei gotcha. E questo è il prezzo che uno paga per risparmiare denaro, a volte :-)
— icarus74

Risposte:


5

Ho un esempio di lampeggiamento se vuoi vedere

#include "stm32f10x_conf.h"

/* led connected to a gpio pin */
#define LED1_PIN    GPIO_Pin_0
#define LED1_PORT   GPIOB
#define LED2_PIN    GPIO_Pin_3
#define LED2_PORT   GPIOC
#define LED3_PIN    GPIO_Pin_0
#define LED3_PORT   GPIOA
#define LED4_PIN    GPIO_Pin_0
#define LED4_PORT   GPIOE


/* user functions */
void delay(unsigned long count);

int main()
{
    GPIO_InitTypeDef GPIO_InitStructure;



    /* enable clock on GPIOB peripheral */
    //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOA, ENABLE);                          


    /* set pin output mode */
    GPIO_InitStructure.GPIO_Pin = LED1_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(LED1_PORT, &GPIO_InitStructure);
    //LED 2
    GPIO_InitStructure.GPIO_Pin = LED2_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(LED2_PORT, &GPIO_InitStructure);
    //LED 3
    GPIO_InitStructure.GPIO_Pin = LED3_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(LED3_PORT, &GPIO_InitStructure);
    //LED 4
    GPIO_InitStructure.GPIO_Pin = LED4_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(LED4_PORT, &GPIO_InitStructure);
    while(1)
    {
        GPIO_SetBits(LED1_PORT, LED1_PIN);  // set pin high
        delay(2000000);
        GPIO_ResetBits(LED1_PORT, LED1_PIN);    // set pin low
        delay(2000000);

        GPIO_SetBits(LED2_PORT, LED2_PIN);  // set pin high
        delay(2000000);
        GPIO_ResetBits(LED2_PORT, LED2_PIN);    // set pin low
        delay(2000000);

        GPIO_SetBits(LED3_PORT, LED3_PIN);  // set pin high
        delay(2000000);
        GPIO_ResetBits(LED3_PORT, LED3_PIN);    // set pin low
        delay(2000000);

        GPIO_SetBits(LED4_PORT, LED4_PIN);  // set pin high
        delay(2000000);
        GPIO_ResetBits(LED4_PORT, LED4_PIN);    // set pin low
        delay(2000000);
    }
    //return 0;
}



void delay(unsigned long count)
{
    while(count--);
}

3

Guarda anche la scheda Discovery STM32 molto conveniente. Prendi una copia del progetto texane / stlink su Github, che ha un tutorial molto utile insieme a buoni strumenti software per iniziare.

È possibile ottenere la scheda in vari luoghi.

http://www.digikey.com/us/en/ph/ST/STM32_value_line_discovery.html

http://www.mouser.com/stm32discovery

http://www.newark.com/jsp/search/productdetail.jsp?SKU=21T4023

Ecco il progetto stlink su Github.

https://github.com/texane/stlink


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.