Como programar a placa de desenvolvimento STM32

17

Sou iniciante em programação de microcontroladores ARM, mas tenho experiência com microcontroladores AVR e PIC.

Alguns dias atrás, comprei uma placa de desenvolvimento STM32F103VET6 no eBay. Agora estou tentando programar este fórum, mas não sei por onde começar. Também recebi um CD que contém algumas planilhas de dados e alguns documentos (todos em chinês).

Alguém poderia me dizer como começar? Ou alguém tem algumas amostras de origem?

Eu já instalei o Keil uVision4. Eu também tenho um depurador J-link.

Power-Mosfet
fonte
2
Não sei por que isso foi rejeitado. Parece uma pergunta clara, devidamente articulada, e o OP tentou se ajudar. Relaciona-se ao desenvolvimento / design, então parece no tópico. Votado.
precisa saber é o seguinte
Essa é uma das desvantagens de comprar placas de desenvolvimento no ebay, principalmente as que são enviadas do Extremo Oriente. Muitas vezes, eles são projetados para o mercado local e obter um manual de inglês de alta qualidade (uma língua estrangeira para eles), criar, desenvolver / manter / manter um fórum do usuário é muito caro e complicado. Além disso, esse mercado já é servido por pranchas um pouco mais caras. Dito isto, no passado eu aprendi isso da maneira mais difícil e acabei traduzindo a maioria das partes do manual em chinês para inglês usando o google tradutor. Longe de ser perfeito, mas me deixou em movimento.
precisa saber é o seguinte
Obviamente, você precisa de uma cópia eletrônica do manual, que possui texto como caracteres distintos, não uma foto-imagem. O texto do OCR é um estrito não-não para essa abordagem.
precisa saber é o seguinte
Ah, e mais uma coisa. A maioria dessas placas de desenvolvimento do Extremo Oriente é ~ 100% imitação de algumas placas de desenvolvimento de empresas de renome como Olimex, IAR etc. Portanto, uma inspeção visual detalhada da sua placa e dessas outras pode ser bastante reveladora. Claro, poderia haver truques. E esse é o preço que se paga para poupar dinheiro, às vezes :-)
icarus74

Respostas:

5

Eu tenho um exemplo de pisca-pisca, se você quiser ver

#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
fonte
3

Veja também a placa STM32 Discovery, muito acessível. Pegue uma cópia do projeto texane / stlink no Github, que possui um tutorial muito útil, além de boas ferramentas de software para começar.

Você pode obter o conselho em vários lugares.

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

Aqui está o projeto stlink no Github.

https://github.com/texane/stlink

Will Ware
fonte