Jak zaprogramować płytę rozwojową STM32

17

Jestem początkującym programistą mikrokontrolerów ARM, ale mam doświadczenie z mikrokontrolerami AVR i PIC.

Kilka dni temu kupiłem płytę programistyczną STM32F103VET6 w serwisie eBay. Próbuję teraz zaprogramować tę tablicę, ale nie wiem od czego zacząć. Otrzymałem również płytę CD zawierającą niektóre arkusze danych i niektóre dokumenty (wszystkie w języku chińskim).

Czy ktoś mógłby mi powiedzieć, jak zacząć? A może ktoś ma jakieś próbki źródeł?

Zainstalowałem już Keil uVision4. Mam również debuger J-link.

Power-Mosfet
źródło
2
Nie jestem pewien, dlaczego zostało to odrzucone. Wygląda na jasne pytanie, właściwie wyartykułowane, a OP próbował sobie pomóc. Odnosi się do rozwoju / projektowania, więc wydaje się na temat. Zagłosowano.
icarus74
Jest to jedna z wad kupowania desek deweloperskich w serwisie eBay, szczególnie tych wysyłanych z dalekiego wschodu. Często są one przeznaczone na rynek lokalny, a tworzenie wysokiej jakości angielskiego (dla nich języka obcego) ręczne tworzenie, tworzenie / rozwijanie / utrzymywanie forum użytkownika jest zbyt kosztowne i kłopotliwe. Jest to także rynek obsługiwany przez nieco droższe płyty. Powiedziawszy to, w przeszłości nauczyłem się tego na własnej skórze i zacząłem tłumaczyć większość instrukcji z chińskiego na angielski za pomocą tłumacza google. Dalekie od ideału, ale mnie poruszyło.
icarus74
Oczywiście potrzebujesz kopii podręcznika, który zawiera tekst jako odrębne znaki, a nie zdjęcie. Tekst OCR jest surowym „nie” dla tego podejścia.
icarus74
Aha i jeszcze jedno. Większość tych tablic deweloperskich na Dalekim Wschodzie stanowi ~ 100% podróbek niektórych tablic deweloperskich renomowanych firm, takich jak Olimex, IAR itp. Tak więc szczegółowa wizualna kontrola twojej tablicy i innych może być dość odkrywcza. Oczywiście mogą istnieć luki. I to jest cena, którą płaci się czasami za oszczędzanie pieniędzy :-)
icarus74

Odpowiedzi:

5

Mam przykład migacza, jeśli chcesz zobaczyć

#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--);
}
Rick Ant
źródło
3

Zobacz także bardzo przystępną płytę STM32 Discovery. Pobierz kopię projektu texane / stlink na Github, który zawiera bardzo pomocny samouczek wraz z dobrymi narzędziami programowymi na początek.

Tablicę możesz zdobyć w różnych miejscach.

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

Oto projekt stlink na Github.

https://github.com/texane/stlink

Will Ware
źródło