Плата на микроконтроллере STM32F103C8, познаем Keil uVision5, включаем светодиод.
Кому будет полезна эта статья ?
Тому у кого есть желание начать использовать STM микроконтроллеры в своих любительский схемах, желающих постоянно развиваться и учиться ...
Разнообразие китайского ширпотреба электронных изделий впечатляет своим многообразием и ценовой политикой. И микроконтроллеры не исключение. Конечно, увидев разнообразие схемотехнических решений - рука так и тянется купить, что-то подобное и приспособить для нужных целей. Про эту плату очень много сказано и написано в интернете и как только случай представился (я стараюсь заказывать товары из Китая на определенную сумму и желательно у одного продавца за раз) я добавил эту плату к основному заказу и получив ее через месяц - также успешно положил на полку до лучших времен. Это называется - главное, что она есть .. Пролежав несколько лет на полке (годы ее ни как не испортили) и как только появилось немного свободного времени я ее вытащил на рабочий стол и начал изучать. Открыв интернет в котором очень много чего есть, я исписал несколько страниц текста в тетрадке и понял, что запутался и плату проще положить плату обратно т.к. время потраченное на подобные изучения ужасно велико, а возможности платы очень скромные. Эта плата легко подходит для решения простых задач. Новичкам для понимания как работают интерфейсы этой микросхемы самое то для изучения. И конечно, дело не в плате, а в том микроконтроллере который в ней установлен. Самая простая по возможностям ( смотря конечно с чем сравнивать) микросхема из семейства микроконтроллеров которые выпускает фирма STMicroelectronics и вдобавок ARM 32-bit Cortex™-M3 CPU. Для любительских схем (при изготовлении в домашних условиях печатных плат) она подходит .. но с оговоркой, что есть нормальный микроскоп и паяльная станция и опыт в создании печатных плат в "домашних условиях" не начального уровня. Расстояние между ножками микросхемы - это самое неприятное, но эти ножки выведены на пины со стандартным шагом и соответственно эту плату можно использовать целиком вставляя ее в переходник и соответственно впаивая и разводя переходник уже на нормальной плате. Берем разъем как на фото ниже и реализуем то, что задумали.
Это даже эффективно если нужно поменять прошивку - имеем в запасе (я всегда беру по два экземпляра) две одинаковые платы и меняем их местами когда уверены в модернизированной программе (не пошла программа меняем обратно плату) и не таскаемся с проводами если это у знакомого на даче ... Сильных нагрузок с выходов нет - поэтому все входные и соответственно выходные цепи делаем на плате переходника.
Итак, если еще есть желание экспериментировать продолжим изучать и попробуем зажечь светодиод который установлен на плате..
Внешний вид платы представлен ниже.
Вид сверху
Вид снизу
Документация на микроконтроллер (не плату!!) STM32F103C8 или с сайта www.st.com - ссылка.
Начнем с микросхемы в нашем корпусе из выше представленной документации.
Что видим на плате :
Сама микросхема микроконтроллера
1. Порты ввода вывода микросхемы - РА, PB
На плате выведено (ножки микроконтроллера + ножки питания G - GND, 3.3 - 3.3 V)
2. Порты подключения кварцевых резонаторов
Основной кварцевый резонатор PD0 и PD1 на 8 МГц (8 000 000 Гц) + резонатор на 32 768 Гц - PC14 и PC15
и
4. BOOT - по какому условию запускам выбираем перемычками .
5. Индикация (светодиоды) - PWR - светодиод наличия питания + светодиод подключенный к ножке PC13 (этот светодиод будем включать и выключать)
6. Кнопка сброса микроконтроллера
7. Разъем для программирования микроконтроллера
8. Преобразователь напряжения 5V - > 3.3V (при подключении к USB именно этот преобразователь питает всю плату напряжением 3.3 V)
Пока все .. этого вполне достаточно для того чтобы начать - включить светодиод и убедиться, что схема работает.
Первая программа для платы на STM32F103C8
Чем будем программировать? Это один из ключевых моментов после того как определено, что микроконтроллерам на рабочем столе быть !!
Программные средства ...
Я не буду расписывать преимущества IDE (англ. Integrated Development Environment) - программных средств которые есть на сегодняшний момент в мире для программирования STM контроллеров. На эту тему много, что написано и выбирать придется самостоятельно.
Я остановился на среде известной фирмы Keil – Keil uVision5.
Платная (и достаточно дорогая) программа которая позволяет делать с микроконтроллером все. Просто все. Мне Keil uVision5 (именно 5 не 4 не 3) понравился удобным редактором. И в случае того, что она позволяет делать код до 32 кБ бесплатно - с ней можно работать. По большому принципу главное это понять принцип программирования и последовательность действий, а синтаксис при переходе с одной IDE на другую освоить можно.
Еще одно очень удобное средство для подготовки к разработки в IDE это фирменное программное обеспечение от фирмы ST - STM32CubeMX. Удобный инструмент для подготовки начального кода для IDE среды. Keil uVision5 входит в список тех программ для которых делается этот начальный код. На момент написания статьи версия 5.0.1
Удобная. Больше сказать нечего.
Итак определяются два пути написания программы первой программы
1. Используем только Keil uVision5
2. Используем STM32CubeM для генерации начального кода + Keil uVision5.
Начнем с пути 1.
С программным обеспечением определились - теперь надо определиться как будем записывать программу в память микроконтроллера.
Аппаратные средства ...
Задаем вопрос интернету и получаем ряд ответов на вопрос чем можно запрограммировать (прошить) микроконтроллеры фирмы ST и в том числе такую плату как у нас :
1. Через встроенный USB - требуется загрузчик заранее зашитый в память микроконтроллера (обычно установлен при продаже платы)
2. USART (Universal Synchronous/Asynchronous Receiver/Transmitter) - необходим переходник USB->Usart
3. Разъем на плате - > требуется программатор который при использовании Keil uVision5 запрограммирует и позволит отладить программу в микроконтроллере.
В принципе пункты 1 и 2 удобные, но имеют для меня один ключевой недостаток - отсутствие отладки программы. Для того чтобы поморгать светодиодом этого конечно достаточно.
Я выбрал пункт 3.
Программатор.
1. Оригинальный от фирмы Keil uVision5 не вариант т.к. если брать программатор то надо брать и программу. Для любительских целей это слишком. Поэтому остается несколько путей
1. Китайский клон.
2. Самодельный вариант.
3. Плата со встроенным программатором.
Пункт 2 - много на просторах интернета вариантов, но сильно усложняет задачу т.к. придется делать еще и плату под программатор, корпус, разъем, микросхема, обвязка ... и не вариант, что заработает ..
Пункт 3 - вариант не плохой но тоже но - надо найти и купить (заказать) плату, и желательно ее потом применить где-то.
Пункт 1 - заказать китайский клон - но есть вероятность что новая версия Keil uVision5 откажется с ней работать.
В итоге я конечно выбрал самый дешевый и простой Пункт 1. Нашел продавца на али и заказал вот это "чудо".
Сделал фото по контрастнее чтобы была видна маркировка разъема
Ну и комплект проводов
И так по приходу всего необходимого начинаем.
1. Скачиваем и устанавливаем Keil uVision5 с официального сайта.
После установки Keil uVision5 в Windows 10 необходимо установить необходимые Paсk именно для линейки контроллеров в которую входит чип STM32F103C8T6.
Обновляться будет первый раз долго. В итоге должно быть ONLINE и 100%.
Нажимаем ОК и получаем окно выбора и ищем STMicroelectronics
В правом окне видим необходимые библиотеки для работы не только с чипом STM32F103C8T6 но и всей линейки STM32F103xxx
У меня установлено две линейки 103 и 401 – ниже то что должно быть установлено (Install) и что установлено (Up to date) и если что-то не хватает нажимаем соответственно Install.
Мои pack ниже..
После установки Pack переходим не посредственно к работе в среде Keil uVision5.
Запуск
Начальная страница
Создаем тестовый проект на основе выше приведенной платы.
Project - > Create New Project
Создаем новую папку для проекта
Задаем название
Не задавая название файла входим в созданную папку и вводим название проекта Example_1
Нажимаем сохранить. После сохранения – на этапе загрузки проекта увидим следующее окно в котором необходимо установить параметры контроллера Target 1
Двигаясь по “дереву” выбираем наш тип микроконтроллера.
Нажимаем ОK и переходим в следующее окно.
В этом окне необходимо добавить в наш проект установленные библиотеки (они из Pack). Для нашего примера (работа с портами GPIO) добавим библиотеки :
Нажимаем OK и выходим в основное окно редактора Keil uVision5 где видим :
Что начать программировать дальше предлагаю немного поправить вид нашего проекта.
Переименуем Source Group 1 в User – для этого подсветим название и нажмем мышкой на начало слова Source введем Userи нажмем ENTER
Следующим шагом добавим папки для удобства.
Выберем название Target 1 (подсветим его) нажмем левую клавишу мыши и в открытом окне выберем пункт Add Group.
Добавиться папка New Group. Которую мы тоже переименуем. Выделяем -> Нажимает правую клавишу мыши на первой букве N и меняем название папки на PL.
Получаем структуру.
В полученную структуру добавляем основной файл проекта под названием main.c для этого выделяем папку User жмем левую клавишу и в появившемся окне Выбираем Add New Item Group User
После выбора открывается окно добавления файлов где мы выбираем тип С File (.с) вводим название файла main в строке Name и нажимаем Add.
После нажатия видим в папке User наш созданный main.c.
Файл создан. Теперь необходимо добавить библиотеки в папку Pl.
Для этого идем на страницу компании ST
В эксплорере вводим строку www.ST.com
Выходим на https://www.st.com/content/st_com/en.html
В окне слева видим и соответственно выбираем пункт Microcontrollers & Microprocessors
Попадаем в следующее окно (уменьшил немного для понимания)
В графическом представлении выбираем наш тип STM32F1
Попадаем в окно
Где в таблице выбираем наш микроконтроллер
Выбираем его и попадаем на страницу серии STM32F103
Выбираем наш тип STM32F103C8 и выходим на страницу нашего чипа
На это странице есть много информации как с ним работать.
Но нам необходимо забрать в наш проект стандартные библиотеки поэтому двигаемся по странице к документу
STSW-STM32054 – STMF10F10x standart peripheral library
Выбираем библиотеку и попадаем на страницу загрузки
Где предлагается мигрировать на CUBE и в конце страницы (именно в конце) в таблице видим GET SOFTWARE
Выбираем мышкой Get Software и получаем соглашение
Жмем ACCEPT
В новом окне или если зарегистрирован входим или заполняем три строчки и ставим “галку”.
Email должен быть реальным т.к. на него придет письмо
Заполняем и после заполнения -> Download
После нажатия все вернется в первое окно и дальше ждем письма следующего содержания
В котором присутствует кнопка Download Now жмем ее прямо в письме и получаем загрузку файла и соответствующие библиотеки. Я пользуюсь Яндекс поэтому у меня это выглядит так.
Скачанный файл en-stsw-stm32054.zip желательно переложить в папку с документацией. У меня такая папка находиться в папке с проектами.
Заходим в DOC и распаковываем папку в получаем папку STM32F10x_StdPeriph_Lib_V3.5.0.
Заходим в эту папку и двигаясь по папкам внутри попадаем в
Дальше необходимо снять ограничение файлов на чтение. Для этого входим в папку inc
Нажимаем выделить все и нажимаем правую клавишу мыши. В открывшимся меню выбираем свойства
В появившемся окне
Снимаем галку с атрибута Только чтение.
И жмем OK.
Тоже самое мы делаем с папкой SRC!!!!
После снятия ограничения на чтение с папок INC и SRC идем в папку с проектом и создаем в нем папку Pl.
В созданную папку Pl копируем папки INC и SRC.
Также в эту папку необходимо копировать еще два файла -> stm32f10x.h и stm32f10x_conf.h
Файл stm32f10x.h копируем из скаченной библиотеки и меня он по адресу
….\Proj_keil_2019\Doc\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
Не забываем после копирования из скаченной библиотеки снимать разрешение только на чтение
Файл stm32f10x_conf.h копируем из
……\Proj_keil_2019\Doc\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\ADC\3ADCs_DMA
И не забываем снимать ограничение на чтение
В итоге наша папка Pl имеет вид
Библиотеки скопированы. Осталось их прописать в проект.
Открываем Keil uVision5. Ждем когда проект загрузиться. Выбираем User -> Add Existing Files to Group “User”
В появившемся окне
Добавляем два файла stm32f10x.h и stm32f10x_conf.h, а также содержимое папок INC и SRC
Начнем stm32f10x_conf.h -> Add
stm32f10x.h -> Add
Папка INC -> Add
Папка SRC -> Add
В результате папка User получает вид
ледующим шагом нужно прописать все папки с библиотеками.
Для этого открываем вкладку Project и выбираем Options for Target “Target 1”
В открывшимся окне получаем доступ к параметрам проекта
Начинам править параметры
Меняем частоту Xtal(MHz) с 12.0 -> 8.0
Создаем hex файл
Во вкладке С/CC++ добавляем пути к нашим папкам в которых находятся наши библиотеки
Для этого выбираем
Нажимаем
В окне выбираем New (insert)
И начинаем добавлять папки. Для добавления нового пути каждый раз нажимаем New.
После добавления путей к папкам получаем заполненную таблицу
Жмем OK и после заполнения получаем вид
В итоге выходим и получаем
Выбираем вкладку "Debug"
Изменяем программатор
С
На
Нажимаем
и получаем окно настроек программатор ST-LINK/V2
Тут одно… Но если программатор определился нормально (т.е был установлен драйвер) то тогда окно будет иметь вид
с Serial Number и настройками. Если Окно пустое смотрите ниже.
Пока все нормально видим (клон определился) и главное определилась наша плата в окне SW Device
Далее выбираем вкладку Flash Download
И устанавливаем Это установка необходима для того чтобы после программирования чипа проходил автоматический ресет микроконтроллера .
Получаем вид.
После этого OK для запоминания изменения параметров.
Это пока Все!!
Далее:
Eсли программатор не определился ...
Если Окно программатора пустое.....
Если программатор не установлен (или установлен не правильно) то вид окна следующий
то делаем:
Убеждаемся, что устройство работает.
Если устройство не определяется и не светиться – вероятно всего, что оно не исправно.
Если светодиод светиться
идем в настройки компьютера и открываем Диспетчер устройств и смотрим наличие драйвера
Вот как должно быть вот так
Если устройства с надписью драйвер не установлен и горит желтый треугольник то необходимо поставит драйвера.
Что можно сделать в этом случае.
- Поиск в интернете.
- Поставить программу или драйвера от ST для работы с фирменным программатором. В этом случае драйвер установиться вместе с программой автоматически.
Если есть желание проверить пункт 2 выполняем следующую последовательность
Идем на сайт ST.сом по адресу - ссылка спускаемся вниз страницы
и скачиваем программу для фирменных программаторов фирмы ST…
Или драйвер отдельно
Но рекомендую скачать программу ..
Программа скачивается так же как и выше указанные библиотеки.
Дальше устанавливаем. Сначала установиться программа. После того как установиться программа будет предложено установить драйвер для программатора.
Далее запуск программы
Если все нормально то при попытке обращения будет следующий вид.
Я обновил свой программатор через год после покупки на последнюю версию см. выше.
Если по каким-то причинам это не работает - выход один скорее всего нужно покупать новый.
Перейдем дальше ...
Убедившись, что программатор установился правильно перейдем в Keil uVision5 для написания короткой программы включения светодиода.
Добавляем текст следующего содержания в файл main.c
#include "stm32f10x.h" // Device header
int main(void)
{
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
GPIOC->CRH &= GPIO_CRH_CNF13;
GPIOC->CRH |= GPIO_CRH_MODE13_1;
while(1)
{
GPIOC->BSRR = GPIO_BSRR_BR13; // _BR13 - включает светодиод, // _BS13 - выключает светодиод
}
}
ПРОБЕЛ - после последней кавычки обязателен...
Основной файл main.c будет иметь вид
Далее нам надо поправить stm32f10x.h по наш микроконтроллер.
Делаем это следующим образов - > в окне редактора Keil uVision5 подводим курсор к названию файла жмем правую клавишу мыши и появившимся окне -> выбираем - > Open document “ stm32f10x.h” и в соседней вкладки появляется нужный нам файл
Открывается выбранный нами файл
Двигаясь по файлу необходимо поправить следующие пункты:
Тип микроконтроллера
STM32F103C8T –
Убираем комментарии со строки
Почему этот тип – см. документацию
Идем дальше по открытому файлу
Раскомментируем строки
Меняем частоту
С 25 000 000 Гц
На 8 000 000 Гц (как на плате)
На этом моменте прекращаем редактировать файл и сохраняем его.
Можно попробовать собрать программу. Это происходит при нажатии клавиши F7 или кнопкой как на картинке ниже:
Итак минимум выполнили и можно перейти к программированию микроконтроллера
Плата приходит из Китая зашитая для загрузки программы с порта MICROUSB. Его использовать можно, но не интересно. Я убрал возможность работать с загрузчика USB (см. перемычки на плате) и стер чип. Теперь это пустая железка при включение которой к порту USB ни чего не происходит. Для того чтобы изучить работу чипа я подключил правую сторону с разъемом к программатору.
Питание всей схемы от 3.3v от программатора
Разъем программирования если смотреть на фото сверху вниз:
Готовая сборка будет иметь вид
Подключаем к компьютеру - должен загореться светодиод PWR
Запускаем Keil uVision5 с нашим проектом и стираем микроконтроллер
При прошивке должен загореться порт PC13.
Ура!!! Теперь мы можем (пока правда каждый раз стирая и записывая микроконтроллер) управлять светодиодом установленным на плате.
- Войдите или зарегистрируйтесь, чтобы оставлять комментарии