Быстрый старт с отладочной платой Mini STM32.

Не уверен, что это официальное название этой платы, в общем вот она 😉
Отладочная плата Mini STM32
Итак, в этой статье мы создадим небольшой проект, просто для ознакомления с отладочной платой STM32. Пока не будем использовать дисплей, USB и другие возможности этой платы, а поиграемся, как принято, с диодами. Прошивать контроллер я буду при помощи встроенного в STM32 Discovery ST-Link программатора, о чем, если вдруг кому понадобится, написано тут. Кстати, микроконтроллер на моей Mini STM32 – STM32F103VET6. Но нам то все равно, что прошивать, главное как 😉

Ну что ж, можно приступать. На плате прямо-таки манят 4 расположенных рядом синих светодиода. Давайте-ка сделаем что-то типа «бегущего огня» — сначала горит первый диод, потом второй и так далее до бесконечности. Для первого знакомства с платой в самый раз. Создаем новый проект, не забыв указать в настройках контроллер, который мы будем использовать. В файле stm32f10x.h раскомментируем строку

#define STM32F10X_HD // (для контроллера STM32F103VET6)

иначе программа прошьется, но работать не будет. Либо можно прописать #define STM32F10X_HD в настройках проекта, кому как удобнее.

#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL) 
  /* #define STM32F10X_LD */     /* STM32F10X_LD: STM32 Low density devices */
  /* #define STM32F10X_LD_VL */  /* STM32F10X_LD_VL: STM32 Low density Value Line devices */  
  /* #define STM32F10X_MD */     /* STM32F10X_MD: STM32 Medium density devices */
  /* #define STM32F10X_MD_VL */  /* STM32F10X_MD_VL: STM32 Medium density Value Line devices */  
   #define STM32F10X_HD         /* STM32F10X_HD: STM32 High density devices */
  /*#define STM32F10X_XL   */   /* STM32F10X_XL: STM32 XL-density devices */
  /* #define STM32F10X_CL */    /* STM32F10X_CL: STM32 Connectivity line devices */
#endif

Ну все, подготовка завершена, теперь напишем собственно код программы:

/********************************************************************/
#include "stm32f10x.h" 
#include "stm32f10x_rcc.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_conf.h"
 
 
 
/********************************************************************/
GPIO_InitTypeDef port;
 
 
 
/********************************************************************/

Из SPL тащим файлы для работы с портами и тактированием. Дальше инициализация:

/********************************************************************/
void initialization()
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
	port.GPIO_Mode = GPIO_Mode_Out_PP;
	port.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
	port.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOC, &port);
	port.GPIO_Mode = GPIO_Mode_Out_PP;
	port.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_13;
	port.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOD, &port);
}
 
 
 
/********************************************************************/

Четыре диода – четыре пина настроенных на выход. Чтобы понять, какие именно выводы, и какого порта нужны, лезем в доку на плату Mini STM32, а точнее, нам нужна схема. Вместе с платой приплыл диск для нее, на нем-то все и находится. Итак, ищем на схеме светодиоды:
Mini STM32 Leds
Сразу видно, куда и что подключать. Диоды на выводах – PC6, PC7, PD6, PD13. Их и инициализируем.

Нам еще понадобится функция, реализующая задержку. Пусть будет так, просто, но эффективно:

/********************************************************************/
void delay(uint32_t duration)
{
	uint32_t i;
	for(i = 0; i < duration; i++)
	{
		__NOP();
	}
}
 
 
 
/********************************************************************/

Все готово, кроме функции main(). Вот ее полный код:

/********************************************************************/
int main()
{
	initialization();
	while(1)
	{
		GPIO_SetBits(GPIOC, GPIO_Pin_6);
		delay(0xFFFFF);
		GPIO_ResetBits(GPIOC, GPIO_Pin_6);
		GPIO_SetBits(GPIOC, GPIO_Pin_7);
		delay(0xFFFFF);
		GPIO_ResetBits(GPIOC, GPIO_Pin_7);
		GPIO_SetBits(GPIOD, GPIO_Pin_13);
		delay(0xFFFFF);
		GPIO_ResetBits(GPIOD, GPIO_Pin_13);
		GPIO_SetBits(GPIOD, GPIO_Pin_6);		
		delay(0xFFFFF);
		GPIO_ResetBits(GPIOD, GPIO_Pin_6);
		delay(0xFFFFF);
	}
}
 
 
 
/********************************************************************/

Вызываем функцию инициализации, а в вечном цикле играемся со светодиодами. Зажигаем первый, ждем, гасим первый, зажигаем второй, ждем….ну и так далее )

Компилируем программу и прошиваем контроллер. В результате видим, как поочередно загораются диоды. Вот в принципе и все, первые шаги в освоении отладочной платы сделаны, а остальное еще впереди!

Понравилась статья? Поделись с друзьями!

Быстрый старт с отладочной платой Mini STM32.: 18 комментариев
  1. Здравствуйте. А можно где-нибудь содержимое диска глянуть? Мне плата тоже пришла, но без диска. Заранее спасибо.

  2. Спасибо, там пришлось скачать программу загрузки для доступа, ну немного хлопотно, но справился, не давая подсунуть мне НЕНУЖНОЕ!

  3. У меня такая плата — она мне очень нравиться по цене\качеству. Ваши примеры ВЕСЬМА УДАЧНЫЕ и надеюсь ещё задать умный вопрос… :-))

  4. Подскажите, пожалуйста, как точно называется эта плата и название производителя. А в идеале можно даже ссылку, где документацию на нее глянуть.

    • Чаще всего ее называют HY-STM32, поскольку продукция вроде бы китайская, то обрывки документации в принципе проще всего на русских форумах найти

    • Похожа на ту, что в статье…
      А вообще я сам вот сейчас обратил внимание на изображение в статье и оказалось, что последние несколько лет у меня у самого эти платы немного другие — с двумя USB входами. Так что они по сути все одинаковые ) Те, что я использую вроде бы официально называются HY-STM32, хотя для китайских плат понятие «официальное название» не работает )

  5. Здравстуйте у меня такая же платка но без диска можете дать ссылку на его файлы документацию а то ссылка не работает

    • Добрый день!

      У меня, к сожалению, уже не сохранилось этих материалов =( А что именно ищете — схему?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *