Как программировать STM32 Development Board


17

Я новичок в программировании микроконтроллеров ARM, но у меня есть опыт работы с микроконтроллерами AVR и PIC.

Несколько дней назад я купил плату разработки STM32F103VET6 у eBay. Сейчас я пытаюсь запрограммировать эту доску, но я не знаю, с чего начать. Я также получил компакт-диск, который содержит некоторые таблицы данных и некоторые документы (все на китайском языке).

Может кто-нибудь сказать мне, как начать? Или у кого-то есть исходники?

Я уже установил Keil uVision4. У меня также есть отладчик J-Link.


2
Не уверен, почему это было отклонено. Похоже, ясный вопрос, правильно сформулированный, и ОП попытался помочь себе сам. Относится к разработке / дизайну, поэтому кажется по теме. Проголосовал.
icarus74

Это один из недостатков покупки плат для разработчиков на eBay, особенно на Дальнем Востоке. Зачастую они предназначены для местного рынка, и получение высококачественного английского (для них иностранного языка) руководства, посев / разработка / поддержка пользовательского форума - это слишком дорого и хлопотно. Также это рынок, который уже обслуживается чуть более дорогими досками. Сказав это, в прошлом я усвоил этот трудный путь и начал переводить большинство частей руководства с китайского на английский с помощью переводчика Google. Далеко не идеально, но заставил меня двигаться.
icarus74

Очевидно, вам нужна мягкая копия руководства, в которой текст представляет собой отдельные символы, а не фотоизображение. Текст для распознавания текста строго запрещен для этого подхода.
icarus74

Да, и еще одна вещь. Большинство этих дальневосточных девайсов - это ~ 100% подделки некоторых девайсов от известных компаний, таких как Olimex, IAR и т. Д. Так что подробный визуальный осмотр вашей платы и других может быть весьма показателен. Конечно, могут быть ошибки. И это цена, которую иногда платят за экономию денег :-)
icarus74

Ответы:


5

У меня есть пример блинкера, если вы хотите увидеть

#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

Также посмотрите на очень доступную плату STM32 Discovery. Получите копию проекта texane / stlink на Github, в котором есть очень полезное руководство, а также хорошие программные инструменты для начала работы.

Вы можете получить доску в разных местах.

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

Вот проект stlink на Github.

https://github.com/texane/stlink


2

Вы найдете много информации о программировании STM32F103 здесь:

http://www.st.com/internet/mcu/product/164486.jsp

с множеством примеров.

С одной из плат ST, такой как эта, вам будет намного проще:

http://www.st.com/internet/evalboard/product/250863.jsp

Они очень недороги и имеют множество документации и примеров.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.