Stm32 trusted package creaTor что это за программа

Программирование ARM-контроллеров STM32 на ядре Cortex-M3. Часть 1. Установка MDK, создание проекта, основы Keil uVision

Сегодня мы начнём учиться программировать ARM-контроллеры STM32 на ядре Cortex-M3. Эти камни уже гораздо серьёзнее, чем восьмибитные пики и атмелы, поэтому для полного использования всех их возможностей без языка высокого уровня нам при программировании не обойтись (если мы конечно не мазохисты), но для лучшего понимания происходящего, начнём мы всё же с ассемблера, а потом уже подмешаем Си (тем более, что до полного использования возможностей этих камней нам пока как до Луны пешком).

Сред разработки под ARM-ы в настоящее время существует достаточно много, мы будем пользоваться одной из таких сред (кстати, одной из самых популярных), которая называется Keil uVision.

Первое, что нужно сделать — это скачать с официального сайта Keil и установить себе на компьютер пакет MDK-ARM. В настоящее время в его состав входит Keil uVision версии 5.11. Бесплатная версия, естественно, урезана и позволяет скомпилить максимум 32 Кбайта кода, но нам, простым радиохламерам, для любительских нужд этого более чем достаточно (ну, а если недостаточно, то, я думаю, все знают что делать).

10分でわかるSTM32 Nucleo FreeRTOS 基本編

Помимо пакета MDK-ARM нужно скачать и установить пакет для работы с контроллерами STM32, который называется Keil.STM32F1xx_DFP.1.0.5.pack. После установки этого пакета в среде uVision появится база данных контроллеров STM.

Всё, после выполнения этих двух действий можно приступать к разработке программ.

Итак, запускаем Keil uVision и выбираем пункт меню «New uVision Project…»

В появившемся окне проводника выбираем папку, в которой проект будет расположен, придумываем ему какое-нибудь имя и жмём кнопку «Сохранить».

После этого появится база различных контроллеров STM32, в которой нужно будет выбрать свой камень (в моём случае это stm32F103C8) и нажать «Ok».

Дальше нам предложат подключить к нашему проекту различные готовые куски кода и библиотеки драйверов. Достаточно поставить напротив соответствующего компонента галочку и он будет включен в наш проект. Это очень сильно облегчает жизнь программиста, но мы пока не будем этим пользоваться. Пока мы ставим перед собой цель разобраться как это всё работает и нас интересует проект на асме с чистого листа, поэтому не ставим никакие галочки, а просто жмём кнопку «OK».

Проект создан и окно uVision теперь выглядит вот так:

Слева расположен многофункциональный менеджер проекта, в котором в зависимости от выбранной внизу вкладки открывается либо структура проекта (вкладка Project), либо библиотека документации (вкладка Books), либо список используемых в проекте функций (вкладка Functions), либо шаблоны для часто используемых структур (вкладка Templates). Пользоваться менеджером просто и удобно, — когда мы выбираем камень, в библиотеку документации автоматически добавляются нужные книжки, список используемых в проекте функций также составляется автоматически. В области справа показывается содержимое открытых файлов проекта.

Добавим в наш проект asm-файл, в котором мы будем писать код. Щёлкаем по Source Group 1 правой кнопкой мыши и выбираем пункт Add New Item to Group ‘Source Group 1’…

После этого появится окошко, в котором нам предложат выбрать тип добавляемого файла и попросят этот файл как-нибудь назвать. Выбираем тип файла Asm File, назовём его, скажем, Proga1 и жмём кнопку Add. В менеджере проекта появляется наш файл. Если по нему два раза щёлкнуть мышкой — он откроется в окошке справа.

Пока этот файл пустой, но прежде чем писать в него какой-либо код, давайте вернёмся ещё раз к менеджеру проекта. Если щёлкнуть правой кнопкой мыши на Target1 и выбрать пункт меню Options for Target ‘Target1’, то откроется окошко с настройками нашего проекта. Кое-какие из этих настроек нам придётся подправить, а кое-какие просто интересно посмотреть.

На вкладке Device можно поменять модель контроллера.

На вкладке Target указаны начальные адреса и размеры используемых областей памяти. В случае с нашим STM32F103C8 мы имеем внутри кристалла 64 кБ (0x10000) flash-памяти (IROM1 — internal ROM), которая расположена по адресам, начиная с 0x08000000, а также 20 кБ (0x5000) ОЗУ (IRAM — internal RAM), которая расположена по адресам, начиная с 0x20000000. Эти данные устанавливаются автоматически при выборе контроллера, но если вдруг они случайно испортились, то их всегда можно подглядеть в доке на камень, открыв карту памяти (memory map).

На вкладке Output нужно не забыть поставить галочку напротив пункта Create HEX File. Здесь же можно выбрать отдельную папку для сохранения всяких вспомогательных файлов, создающихся при компиляции проекта. (кнопка Select Folder for Objects…)

На вкладке Listing настраиваются параметры создаваемых файлов листинга, которые также можно направить в отдельную папку, чтобы не засорять папку проекта.

На вкладке User можно настроить запуск различных пользовательских программ и скриптов в процессе построения проекта

Вкладки С/С++ и Asm предназначены для настройки процедур препроцессинга и ассемблирования и пока нам не интересны.

На вкладке Linker настраивается линковщик. Здесь возможны три варианта:

1) Ничего не менять. В этом случае стартовые адреса областей памяти (flash и RAM) будут взяты те, что прописаны на вкладке Linker напротив пунктов R/O Base, R/W Base. Кроме того, линковщик захочет чтобы точка входа была обозначена меткой Reset_Handler, а начало таблицы прерываний — меткой __Vectors. Это можно увидеть в командной строке линковщика (Linker Control String).

Запись —entry Reset_Handler говорит о том, что метку Reset_Handler нужно считать точкой входа, а запись —first __Vectors — о том, что секцию с именем __Vectors нужно расположить в памяти первой. Соответственно, если наши названия не будут совпадать с теми, которые ожидает линковщик, — мы при компиляции получим ошибки и ворнинги. Кроме того, мы должны экспортировать эти метки, директивой EXPORT.

2) Поставить галочку напротив Use Memory Layout from Target Dialog. Если посмотреть в командную строку линковщика, то можно увидеть, что теперь набор команд выглядит по другому. В таком варианте линковщик будет использовать адреса областей памяти, указанные на вкладке Target.

Причём он сначала на основе этих данных автоматически создаёт так-называемый scatter-файл (файл с расширением .sct), а потом компилит проект на основе scatter-файла. Если мы откроем scatter-файл в блокноте, то увидим, что теперь компилер хочет, чтобы секция, помещаемая в самое начало flash-памяти (там должна размещаться таблица векторов прерываний, но об этом позже) называлась RESET.

Читайте также:
Масло что это за программа

Но в этом случае линковщику уже не нужно чтобы мы что-то куда-то экспортировали и не обязательно, чтобы метка, обозначающая точку входа, называлась именно Reset_Handle. Зато теперь нам нужно либо в программе обозначить точку входа директивой ENTRY, либо на вкладке Linker в окошке Misc controls добавить директиву —first, указав после неё имя нашей метки, отмечающей точку входа. Кроме того, теперь линковщик выдаёт при компиляции ворнинг из-за того, что хочет найти секции, обозначенные как InRoot$$Sections. Но у нас таких секций и нет, поэтому на этот ворнинг можно смело забить (а чтоб не надоедал — можно выключить его, добавив в строку Disable Warnings на вкладке Linker).

3) Ну и наконец, последний вариант — можно самому создать этот самый scatter-файл, который расскажет линковщику где какие области располагать. Для этого галочка Use Memory Layout from Target Dialog должна быть снята, а в папке с проектом нужно создать файл с раширением sct. Подробно о том, чем этот файл заполнять и как использовать описано в пятой главе мануала RealView Compilation Tools, а нам для простейшей программы хватит и вот такого:

Здесь ROM_Start_Address — адрес начала flash-памяти (в нашем случае 0x08000000), ROM_Size — размер flash-памяти (в нашем случае 0x10000), RAM_Start_Address — адрес начала оперативы нашего камня (в нашем случае 0x20000000), RAM_Size — размер оперативы (в нашем случае 0x10000).

Директива *.o (First_Section_Name, +First) в секции ER_IROM1 означает, что надо во всех объектных файлах поискать область с именем First_Section_Name и разместить её самой первой в секции ER_IROM1. Для контроллеров STM32 первой во flash-памяти должна быть область с адресом вершины стека и таблицей адресов прерываний.

Директива .ANY (+RO) означает, что далее в этой секции будут размещены все остальные области, помеченные в исходнике как READONLY, причём без разницы в каком порядке.

Директива .ANY (+RW +ZI) в секции RW_IRAM1 означает, что в этой секции будут размещены все области, помеченные в исходнике как READWRITE, причём без разницы в каком порядке.

После того, как файл создан и заполнен нужно на вкладке Linker, в строке Scatter File указать путь к этому файлу. Для удобства, справа есть кнопочка «…» при нажатии на которую откроется проводник и вам останется только выбрать этот файл в проводнике.

Обратите внимание, что после выбора scatter-файла набор команд в строке Linker control string изменится. Оттуда пропадут команды, размечающие области памяти и распределяющие различные секции по этим областям, поскольку теперь предполагается, что это сделано в scatter-файле.

На вкладке Debug нужно выбрать как вы будете отлаживать свой проект. Если у вас есть отладочная плата, то нужно поставить флажок, напротив пункта Use: и далее выбрать из выпадающего списка свою отладочную плату. Если отладочной платы у вас нет, то нужно поставить флажок напротив пункта Use Simulator. Это даст возможность пользоваться для отладки встроенным в IDE симулятором.

Последняя вкладка, Utilites, предназначена для настройки программирования чипа из IDE, и, соответственно, при отсутствии одного из поддерживаемых этой IDE программаторов также не сильно нам интересна.

Полную информацию по настройкам компилятора, ассемблера и прочим можно узнать, почитав литературу из раздела Tools Users Guide на вкладке Books в менеджере проекта, а с минимальными настройками мы только что разобрались. На этом пока всё, а в следующий раз давайте попробуем написать в созданном ранее asm-файле какую-нибудь маленькую программулинку.

  1. Часть 1. Установка MDK, создание проекта, основы Keil uVision
  2. Часть 2. Основы ассемблера, структура и синтаксис программы. Простейшая программа
  3. Часть 3. Карта памяти контроллеров STM32, доступ к отдельным битам памяти
  4. Часть 4. Регистры, старт и режимы работы контроллеров STM32
  5. Часть 5. Как залить прошивку в контроллер
  6. Часть 6. Настройка системы тактирования
  7. Часть 7. Работа с портами ввода-вывода
  8. Часть 8. Процедуры на ассемблере для STM32
  9. Часть 9. Система прерываний
  10. Часть 10. CMSIS, использование стандартных библиотек и функций
  11. Часть 11. Подключение и использование драйверов из пакета StdPeriph
  12. Часть 12. Работа с модулями USART и UART.
  13. Часть 13. Работа с модулями ADC
  14. Часть 14. Использование DMA
  15. Часть 15. Таймеры. Глава 1 — Введение. Простейшие таймеры
  16. Часть 15. Таймеры. Глава 2 — Таймеры общего назначения TIM9 — TIM14
  17. Часть 15. Таймеры. Глава 3 — Таймеры общего назначения TIM2 — TIM5
  18. Часть 15. Таймеры. Глава 4 — Продвинутые таймеры TIM1, TIM8
  19. Часть 16. Создание устройства USB HID в Keil uVision при помощи библиотечного компонента USB
  20. Приложение 1. Набор инструкций THUMB-2 и особенности их использования
  21. Приложение 2. Таблица векторов прерываний для семейств STM32F101, STM32F102, STM32F103
  22. Приложение 3. Драйвера и функции библиотеки StdPeriph

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

Источник: radiohlam.ru

Как и чем прошить STM32 STM32F103C8T6 на примере blue pill.

Данное руководство по прошивке микроконтроллеров STM32. В частности и на примере blue pill, на которой установлен контроллер STM32F103C8T6. Если вы знакомы с ардуино, то понимаете, что контроллер можно прошить программатором, либо через встроенный загрузчик. Но в отличии от AVR, и arduino в семействе STM32 загрузчик уже зашит в микроконтроллер. Да, не нужно прошивать загрузчик в пустой кристалл!

Он уже зашит с завода, и зашит так, что он не может слететь. Что бы вы не вытворяли с STM32 загрузчик не слетит.

Кто сидит на arduino знакомы с этой проблемой, чуть косяк с прошивкой, чуть она длиннее положеного или указали не тот камень и прошивка затирает загрузчик arduino. При этом, что бы его восстановить нужен программатор. Есть в STM32 еще одна прекрасная вешь, это отсутствие фьюз! то есть конфигурирование микроконтроллера происходит из программы! Не нужно указывать откуда тактироваться, какие режимы включать и т.д. Тиким образом STM32 может по ходу выполнения кода сам себя разгонять — когда нужна производительность, вжарить на максимальной частоте, а потом снизить тактовую частоту и экономить батарейку.

И при этом его в отличии от AVR не окирпичить неправильно зашитыми фьюзами! Неграмотными действиями при прошивке вы не убьете STM32, не переживайте! Да AVR можно восстановить высоковольтным программатором, но у всех ли он есть? Я собирал AVR FUSE BIT DOCTOR для этого. Был грешок, косячил с тактированием.

Теперь о 2х самых распространенных. Это через этот самый загрузчик и через отладочный разьем. В первом случае потребуется USB то UART переходник. Кто пользуется ардуино у них эти переходники или есть, или распаяны на плате с ардуино.

Читайте также:
Программа монарх что это

Если нету, то лучше купить внешний, например такой

Прошивка STM32 (STM32F103C8T6 )через UART, через выстроенный загрузчик.

Для прошивки через встроенный загрузчик потребуется программа Flash Loader Demonstrator.

Во первых переходник нужно переключить на напряжение 3,3 вольта.

Заем подключить этот переходник к компьютеру и к самой голубой таблетке, а на таблетке переставить перемычку. Эта перемычка говорит контролеру, с чего загружаться. В данном случае будет загружена не прошивка, а загрузчик. Подключать стоит TX к RX а RX к TX. Если перепутаете, то ничего страшного не произойдет.

Просто программа не увидит контроллер, и потом провода можно поменять местами. Нельзя путать только + и — питания.

Запустить программу Flash Loader Demonstrator и выбрать в ней COM порт, к которому подключена плата (если в компьютере у вас нет ком порта, то в списке будет всего 1 порт, не ошибетесь).

Дальше, если все верно подключено, то программа выведет вот такое вот окно.

Тут выбирать больше не чего, и нужно нажать кнопку NEXT. На следующей вкладке программы, на которой тоже ничего интересного, просто служебная информация, которая мало кому интересна, трогать тут ничего не нужно, и смело можно жать NEXT.

А вот на следующей вкладке нужно выбрать файл который нужно прошить.

Больше тут ничего трогать не надо, жмем порядком надоевший NEXT, и запускаем тем самым процесс прошивки.

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

Поздравляю! Прошивка в плате, что бы она запустилось, нужно вернуть перемычку на плате на место.

Прошивка через отладчик.

Быстрее и удобнее все же прошивать СТМ32 программатором через SWD разьем. Если соберетесь программировать под STM32 то вам понадобится отладчик! Это очень удобная вешь. При отладке можно построчно выполнять код в микроконтроллере, и при этом видеть в каком состоянии какая переыерия, и в каком регистре какое значение! даже на компе нет таких возможностей, как в STM32. В общем рекомендую брать STLINK — на вырост так сказать, при этом стоит он столько же, сколько и голубая таблетка.

Плата Stlink ST-Link V2

Соответственно это все китайские клоны, но они прекрасно работают и даже в них самих можно обновить прошивку через программу STM32 ST-LINK Utility.

Прошить контроллер так же просто как и с помощью загрузчика, даже еще проще. Для начала нужно подключить STLINK к bluepill. В голубой таблетке для этого выведены отдельные 4 линии, для питания и отладки. На платах есть вся необходимая маркировка, схема не нужна.

Дальше необходимо запустить программу STM32 ST-LINK Utility

Для открытия файла с прошивкой необходимо выбрать File->OpenFile и выбрать файл для прошивки

Что бы подключиться к контроллеру необходимо нажать эту кнопку. Контроллер уже должен был быть подключен к программатору, а программатор (отладчик, STLINK, называйте как хотите), к USB порту. Драйвера на ST-Link искать не нужно, они автоматически ставятся с утилитой.

Для запуска процесса прошивки необходимо выбрать пункт Target->Program или Target->Program https://r13-project.ru/2021/01/08/%D0%BA%D0%B0%D0%BA-%D0%B8-%D1%87%D0%B5%D0%BC-%D0%BF%D1%80%D0%BE%D1%88%D0%B8%D1%82%D1%8C-stm32-stm32f103c8t6/» target=»_blank»]r13-project.ru[/mask_link]

Программирование и прошивка STM32 на примере STM32F103C8T6

Я приобрел на Aliexpress плату с микроконтроллером STM32F103C8T6 — ту самую «Blue Pill»:

Расшифруем обозначение этого микроконтроллера:

STM32 — семейство 32-битных ARM-микроконтроллеров на ядре Cortex;
F — микроконтроллер общего назначения;
103 — линейка Performance Line;
C — 48/49 выводов;
8 — объем флэш-памяти 64 килобайта;
T — корпус LQFP;
6 — диапазон температур -40. +85 °C

Микроконтроллер STM32F103C8T6 основан на ядре Cortex-M3.
Особенности этого ядра:

  • однотактное умножение данных;
  • аппаратное деление данных;
  • поддержка набора инструкций Thumb-2.

Распиновка платы микроконтроллера:

Программирование микроконтроллера STM32F103C8T6

В качестве среды программирования я выбрал легковесную EmBitz — инсталлятор версии 1.11 для Windows доступен (был доступен для жителей и ) для скачивания на www.embitz.org.

Для поддержки современных микроконтроллеров необходимо загрузить обновление (доступно (было доступно для жителей и ) для скачивания на Update for EmBitz 1.11) и распаковать его в папку с установленной средой EmBitz.

. Использование более свежих версий EmBitz жителями и проблематично из-за встроенных ограничений (предложения программы о скачивании новой версии 2.41 следует игнорировать).

В качестве примера создания программы разберем традиционный для микроконтроллеров Hello, World! — мигание светодиодом.

Выбираем в меню команду File ► New ► Project. для создания проекта:

Задаем требуемую категорию проекта — STmicro-ARM — и нажимаем кнопку Go:

Указываем имя проекта (Project title) и папку (Folder . ), в которой будет создана папка с проектом:

(остальные поля заполнятся автоматически, файл проекта имеет расширение ebp). Нажимаем кнопку Next >.

В открывшемся окне будет указан используемый компилятор — ARM GCC Compiler . . Нажимаем кнопку Next >.

Выбираем семейство микроконтроллеров — Cortex_M3 (. ) — и нажимаем кнопку Next >:

Выбираем серию микроконтроллеров — STM32F10x — и нажимаем кнопку Next >:

Выбираем процессор микроконтроллера — STM32F103C8 — и нажимаем кнопку Finish:

«Галочки» указывают на использование библиотеки SPL и создание hex-файла с прошивкой для цели Release.

Затем в двух открывшихся окнах, связанных с отладкой, нажимаем кнопки OK.

В левой части среды появляется дерево файлов проекта:

  • Sources
  • Headers
  • ASM Sources
  • Others

Редактируем файл stm32f10.h в , раскомментируя строку :

Код программы для мигания светодиодом, подключенным на плате , вводим в файле main.c:

#include «stm32f10x_conf.h» #include «stm32f10x.h» volatile uint64_t msecs; //current msecs storage uint64_t get_msecs(void) < volatile uint64_t now; __disable_irq(); now=msecs; __enable_irq(); return now; >void SysTick_Handler(void) < msecs++; //current msecs increment >void delay_ms(uint64_t delay) < uint64_t start; //variable to store the time start=get_msecs(); while(1) < if((get_msecs()-start)>delay) //if current time is elapsed, execute the if condition < break; >> > int main(void) < const uint64_t DELAY_MS = 500; __disable_irq(); SystemInit(); //init //systick init SysTick->LOAD=(SystemCoreClock / 1000)-1; SysTick->VAL=0; SysTick->CTRL=7; //0b00000111; //LED init GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //enable GPIOC clock GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //set LED pin as PC13 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //output push-pull GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //medium speed GPIO_Init(GPIOC, __enable_irq(); GPIO_ResetBits(GPIOC, GPIO_Pin_13); //LED on while(1) < GPIO_SetBits(GPIOC, GPIO_Pin_13); //LED off delay_ms(DELAY_MS); GPIO_ResetBits(GPIOC, GPIO_Pin_13); //LED on delay_ms(DELAY_MS); >>

Считывание dummy=GPIOC->ODR вставлено в код задержки для предотвращения удаления цикла задержки при оптимизации.

Переключаем цель проекта на Release:

Для компиляции и генерации hex-файла, который мы и будем использовать для прошивки, выбираем команду меню Build target:

Читайте также:
Программа протеже для чего

После успешного завершения в журнале событий отображается отладочное сообщение — пример сообщения:

Прошивка микроконтроллера STM32F103C8T6

Я использую тот же программатор ST-LINK V2 , который я применяю для прошивки STM8-микроконтроллеров:

Для соединения программатора с микроконтроллером STM32 требуются четыре провода (интерфейс SWD):

С помощью утилиты, доступной для загрузки на сайте ST — STSW-LINK007, я обновил прошивку программатора до версии 2.J37.S7.

Загрузка прошивки в микроконтроллер

Для прошивки я использую утилиту STM32CubeProgrammer, доступную для загрузки на сайте ST.

Присоединяем плату микроконтроллера к программатору и подключаем программатор к USB-порту компьютера:

Запускаем приложение и нажимаем кнопку для установления соединения приложения с программатором (если соединение не устанавливается, нужно повторить попытку!). После успешного установления соединения отображается надпись и отображается информация о программаторе и микроконтроллере:

Выбираем и загружаем hex-файл (hello.hex в папке src/hello/bin/Release) с прошивкой, нажимая на Open file или нажимая на + и выбирая команду Open file:

Нажимаем кнопку для загрузки прошивки в микроконтроллер:

После успешного завершения процесса прошивки выдается сообщение (если выдается сообщение об ошибке, нужно повторить попытку!):

Нажимаем кнопку для разрыва соединения приложения с программатором.

Перезагружаем микроконтроллер, нажимая кнопку сброса на плате:

Вуаля — светодиод мигает (частота мигания составляет 1 Гц (период равен 1 с = 500 мс (горит) + 500 мс (погашен)), загруженная прошивка работает!

Подключение дисплея от Nokia 5110

Подключим к МК дисплей от Nokia 5110 (такие дисплеи доступны на Aliexpress, я использовал такой дисплей в своем импульсном металлодетекторе на Arduino):

дисплей МК
RST A3
CE A4
DC A2
DIN A1
CLK A0
VCC 3.3
LIGHT x
GND G

Исходный код (main.c):

#include «stm32f10x_conf.h» #include «stm32f10x.h» #include «f10x-pcd8544.h» #include /* LCD pins: RST -> A3 CE (SCE) -> A4 DC -> A2 DIN (MOSI) -> A1 CLK (SCLK) -> A0 VCC -> 3.3V LIGHT -> x GND -> GND */ volatile uint64_t msecs; //current msecs storage uint64_t get_msecs(void) < volatile uint64_t now; __disable_irq(); now=msecs; __enable_irq(); return now; >void SysTick_Handler(void) < msecs++; //current msecs increment >void delay_ms(uint64_t delay) < uint64_t start; //variable to store the time start=get_msecs(); while(1) < if((get_msecs()-start)>delay) //if current time is elapsed, execute the if condition < break; >> > int main(void) < const uint64_t DELAY_MS = 500; __disable_irq(); SystemInit(); //init //systick init SysTick->LOAD=(SystemCoreClock / 1000)-1; SysTick->VAL=0; SysTick->CTRL=7; //0b00000111; lcd8544_init(); //LCD init //LED init GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //enable GPIOC clock GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //set LED pin as PC13 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //output push-pull GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //medium speed GPIO_Init(GPIOC, __enable_irq(); lcd8544_clear(); lcd8544_putstr(0,0,»HELLO, WORLD!»,0); lcd8544_refresh(); //LCD out GPIO_ResetBits(GPIOC, GPIO_Pin_13); //LED on while(1) < GPIO_SetBits(GPIOC, GPIO_Pin_13); //LED off delay_ms(DELAY_MS); GPIO_ResetBits(GPIOC, GPIO_Pin_13); //LED on delay_ms(DELAY_MS); >>

Использование АЦП

Продолжение следует

  • Войдите, чтобы оставлять комментарии

Источник: acdc.foxylab.com

Прошивка платы STM32F103C8T6 с помощью usb/ttl и st-link v2. Подготовка программы arduino IDE для работы с платой.

Итак. Не будем здесь описывать для чего нужна данная плата. Думаю те кто ей заинтересовался знают о ее возможностях.

Но распиновку устройства все-же покажу для наглядности:

Я лишь покажу здесь как подключить usb/ttl или st-link для прошивки устройства. И как подготовить программу arduino ide для прошивки stm32.

Чтоб начать работу данной платы с arduino ide. Нам необходимо подключить usb/ttl конвертер к плате следующим образом:

ВАЖНО! Микроконтроллер stm32 имеет 3.3 вольтовую логику. Следовательно и usb/ttl должен быть таковым. Я же прошивал на видео обычным, который имеет 5 вольтовую логику. Но это не правильно.

Всегда есть риск спалить устройство.

Также нужно поставить джампер как показано на картинке.

Итак, после того как подключили конвертер к плате и поставили перемычку правильно. Нам нужно скачать несколько приложений:

  1. Программа STM32 Flash loader demonstrator. Она нужна для первой прошивки микроконтроллера, чтоб он смог в дальнейшем прошиваться через arduino ide. Скачать программу можно с официального сайта перейдя по ссылке: https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/flasher-stm32.html#
  2. STM32duino-bootloader. Тут находится прошивка необходимая для первой прошивки устройства. Качаем сразу целиком архив со страницы проекта на github: https://github.com/rogerclarkmelbourne/STM32duino-bootloader
  3. Arduino_STM32. Это платы stm32 которые необходимо добавить в arduino ide для того чтоб выбрать нужную плату во время заливки скетча. Скачиваем архив со страницы github: https://github.com/rogerclarkmelbourne/Arduino_STM32. Кладем содержимое архива по пути: Документы/arduino/hardware/

После того как все скачали, разархивируем архивы. Устанавливаем программу STM32 Flash loader demonstrator. Она не устанавливается на рабочий стол. Ее можно найти по слову deminstrator gui. После того как установили приложение.

Откроем его.

И откроется первое окно, в котором выбираем COM порт которым определился usb/ttl конвертер. И нажимаем кнопку далее.

В этом окне если у Вас в первом блоке есть красные надписи, то нажимаем кнопку “Remove protection” и нажимаем Next. Ну и если у Вас все также как у меня на скрине, то ничего не делаем а сразу нажимаем “Next”.

Тут выбираем какая у нас плата. Возможно выбрать из двух вариантов. на 64К и на 128К. В моем случае это на 64К. Как определить? Если у Вас микроконтроллер STM32F103C8 то это 64К.

А если STM32F103CB то это 128К.

После того как выбрали контроллер, нажимаем “Next”

В этом окне выбираем “Download from file” и переходим в распакованный архив STM32duino-bootloader. Там в папку binaries и выбираем файл gd32f1_pc13.bin .

Ну и тоже нажимаем далее. После этого начнется загрузка .bin файла.

После загрузки закрываем программу.

И открываем Arduino ide.

Если Вы ахив Arduino_stm32 положили корректно по пути Документы/arduino/hardware/ То при открытии программы Arduino ide в Инструменты в выборе платы должна появиться возможность выбора платы:

И для того чтоб плату заливался скетч необходимо выбрать “Generic STM32F103C series”

Теперь что касается прошивки. У меня работает 2 метода. Первый это прошивка через usb/ttl. Для этого нужно выбрать в “Upload method” нужно выбрать ” serial:

И все у Вас замечательно загрузится в микроконтроллер.

Но платы STM32F103C8T6 часто предлагают на Aliexpress сразу с программатором st-link v2. С ним скетч в плату загружается гораздо быстрее. У него сразу 3.3 вольтовая логика, какраз которую хочет наш контроллер. По этому правильнее будет грузить программы в контроллер через st-link. Для этого подключим его к плате следующим образом:

После подключения, в “Upload method” нужно выбрать “STLink” и все. Теперь будет загружаться все через данынй свисток.

На этом все. Спасибо за внимание. Надеюсь статья помогла Вам.

Источник: psenyukov.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru