Не уверен, что это официальное название этой платы, в общем вот она на фото )
Итак, в этой статье мы создадим небольшой проект, просто для ознакомления с Mini STM32. Пока не будем использовать дисплей, USB и другие возможности этой платы, а поиграемся, как принято, с диодами. Прошивать контроллер я буду при помощи встроенного в STM32 Discovery ST-Link программатора, о чем, если вдруг кому понадобится, написано тут. Кстати, микроконтроллер на моей Mini STM32 – STM32F103VET6. Но нам то все равно, что прошивать, главное как и чем.
Время традиционной вставки: поскольку компания STMicroelectronics прекратила поддержку библиотеки SPL, которая использовалась в этом курсе, я создал новый, посвященный работе уже с новыми инструментами, так что буду рад видеть вас там - STM32CubeMx. Кроме того, вот глобальная рубрика по STM32.
Ну что же, можно приступать. На плате прямо-таки манят 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, а точнее, нам нужна схема. Вместе с платой прислали диск для нее, на нем-то все и находится. Итак, ищем на схеме светодиоды:
Сразу видно, куда и что подключать. Диоды на выводах – 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); } } /***************************************************************************************/
Вызываем функцию инициализации, а в вечном цикле играемся со светодиодами. Зажигаем первый, ждем, гасим первый, зажигаем второй, ждем... И так далее.
Компилируем программу и прошиваем контроллер. В результате видим, как поочередно загораются диоды. Вот в принципе и все, первые шаги в освоении отладочной платы сделаны, а остальное впереди.
Здравствуйте. А можно где-нибудь содержимое диска глянуть? Мне плата тоже пришла, но без диска. Заранее спасибо.
Сейчас залью куда-нибудь
Готово - http://rusfolder.com/38636364
Огромное спасибо!
А можно ещё раз загрузить!
Извините, удалось скачать!
Если что могу перезалить )
Спасибо, там пришлось скачать программу загрузки для доступа, ну немного хлопотно, но справился, не давая подсунуть мне НЕНУЖНОЕ!
Да, rusfolder в этом плане испортился (
У меня такая плата - она мне очень нравиться по цене\качеству. Ваши примеры ВЕСЬМА УДАЧНЫЕ и надеюсь ещё задать умный вопрос... :-))
Подскажите, пожалуйста, как точно называется эта плата и название производителя. А в идеале можно даже ссылку, где документацию на нее глянуть.
Чаще всего ее называют HY-STM32, поскольку продукция вроде бы китайская, то обрывки документации в принципе проще всего на русских форумах найти
Это она?
http://m.ebay.com/itm/Mini-STM32-Development-Board-ARM-Cortex-M3-STM32F103RBT6-New-/282068703034?nav=SEARCH
Нет, но по функционалу я думаю они похожи.
А вот эта довольно похоже:
http://s.aliexpress.com/BZFj2MvE
Это она?
Похожа на ту, что в статье...
А вообще я сам вот сейчас обратил внимание на изображение в статье и оказалось, что последние несколько лет у меня у самого эти платы немного другие - с двумя USB входами. Так что они по сути все одинаковые ) Те, что я использую вроде бы официально называются HY-STM32, хотя для китайских плат понятие "официальное название" не работает )
Здравстуйте у меня такая же платка но без диска можете дать ссылку на его файлы документацию а то ссылка не работает
Добрый день!
У меня, к сожалению, уже не сохранилось этих материалов =( А что именно ищете - схему?