Cómo programar la placa de desarrollo STM32

17

Soy un principiante total con la programación de microcontroladores ARM, pero tengo experiencia con los microcontroladores AVR y PIC.

Hace unos días compré una placa de desarrollo STM32F103VET6 de eBay. Ahora estoy tratando de programar esta placa, pero no sé por dónde empezar. También recibí un CD que contiene algunas hojas de datos y algunos documentos (todos en chino).

¿Alguien podría decirme cómo empezar? ¿O alguien tiene algunas muestras de origen?

Ya he instalado Keil uVision4. También tengo un depurador J-link.

Power-Mosfet
fuente
2
No estoy seguro de por qué esto fue rechazado. Parece una pregunta clara, bien articulada, y OP ha tratado de ayudarse a sí mismo. Se relaciona con el desarrollo / diseño, por lo que parece sobre el tema. Votado
icarus74
Esta es una de las desventajas de comprar paneles de desarrollo en eBay, solo los que se envían desde el Lejano Oriente. A menudo, están diseñados para el mercado local, y obtener un manual en inglés de alta calidad (un idioma extranjero para ellos) creado, sembrar / desarrollar / mantener un foro de usuarios es demasiado costoso y complicado. Además, ese es un mercado ya atendido por juntas un poco más caras. Dicho esto, en el pasado aprendí esto de la manera difícil, y terminé traduciendo la mayoría de las partes del manual en chino al inglés usando el traductor de Google. Lejos de ser perfecto, pero me puso en movimiento.
icarus74
Obviamente, necesita una copia en papel del manual, que tiene texto como caracteres discretos, no una imagen fotográfica. El texto de OCR es un estricto no-no para este enfoque.
icarus74
Ah, y una cosa más. La mayoría de estos paneles de desarrollo del lejano oriente son ~ 100% imitaciones de algunos paneles de desarrollo por empresas de renombre como Olimex, IAR, etc. Por lo tanto, una inspección visual detallada de su tablero y estos otros puede ser bastante revelador. Por supuesto, podría haber gotchas. Y ese es el precio que se paga por ahorrar dinero, a veces :-)
icarus74

Respuestas:

5

Tengo un ejemplo intermitente si quieres 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
fuente
3

También mire la placa STM32 Discovery muy asequible. Obtenga una copia del proyecto texane / stlink en Github, que tiene un tutorial muy útil junto con buenas herramientas de software para comenzar.

Puede obtener el tablero en varios 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

Aquí está el proyecto stlink en Github.

https://github.com/texane/stlink

Will Ware
fuente