Pull to refresh
88
0
Вадим Дерябкин @Vadimatorikda

Инженер-программист

Send message
Не могу понять значение «круче». Когда мы переставляем перемычке в режим 010, то выполнение программы при отладке происходит из ОЗУ. Так как в настройках мы указали адреса Flash, то нажав на Debag, контроллер очищает все ячейки памяти Flash (тоже указали в настройках), прошивает нашей программой, переставляет указатель на начало ОЗУ и начинает «выполнение программы». Так как мы ничего в ОЗУ не писали, то у нас там будут нули. Таким образом, мы получаем программу из кучи нулей и перепрошивку Flash. Отладка Flash, как я понял, в режиме 010, не возможна. Как вариант, изменить значения адреса в настройках. Чтобы программа грузилась не во Flash, а в ОЗУ. Это бы значительно увеличило ресурс контроллера. В нашем контроллере приличное количество ОЗУ. Так что, чисто теоретически, это возможно. Попробую сам сделать это. Напишу в одной из следующих статей.
Спасибо, исправил. Как оказалось, так даже проще.
Тем, кто делает паузы через «нужное количество» nop, честно говоря, хочется руки по отрывать. Тут используются таймеры

В следующей статье рассмотрено именно мигание с использованием SysTick. После будет с использованием таймера. А после и ОС. Потерпите. Не все сразу.
Дергать ногой можно было вообще в обработчике (правда за это, то же некоторые по рукам бьют), либо (что самое правильное) написать менеджер, который бы вызывался с определенной периодичностью, проверял состояние флага и выполнял инверсию (либо другие нужные действия) ноги.

В будущем будет рассмотрена связь с ОС. В которой все это будет.
Однако на сколько я помню в бесплатной версии не работает симулятор

Не правда. Работает. И очень даже хорошо. В статье про тактирование микроконтроллера (сегодня постараюсь дописать и выложить), будет сказано об отладке.
И используйте, пожалуйста, png, а не jpg для скриншотов, то глаза вытекают от такого мыла и шума.

Заменил код. Спасибо. В будущем буду выкладывать в png.
Про RTX спасибо. Буду изучать. Но сначала разберу всю периферию без ОС. Раньше пытался подружиться с FreeRTOS, но после недели безуспешных попыток передать двоичный симафор — сдался. Написал свою мини ОС в десяток другой строк и этого хватило.
SysTick->LOAD |= ...;
выглядит странно, не находите?

Ошибка. Спасибо, исправил.
Строго говоря, SysTick — это часть ядра Cortex M3, поэтому работа с ним в разных контроллерах на этом ядре практически идентична.
Полезнее было бы рассмотреть работу с родной периферией миландра в каком-нибудь более-менее реалистичном сценарии. Чтение ADC через DMA, например.

Я знаю. Он нужен для следующего урока, посвященного системам тактирования МК. Для наглядности.
По-хорошему, вам даже не обязательно было трогать регистры; в файле core_cm3.h уже есть готовая функция для его настройки — SysTick_Config.

Про функцию тоже знаю. Но куда приятнее настроить вручную. Чтобы знать наверняка, что все правильно.
Огромное спасибо за информацию. Обязательно учту это в одной из следующих статей. Но в данном случае речь идет о порте C. Так что можно ничего не бояться. Возможно, вы спасли меня от моря ошибок и многих дней для их поиска.
В последующих статья постараюсь излагать материал менее эмоционально, более сжато и понятно.
1. Вся статья написана в духе «это какое-то шаманство, но делайте так — и всё заработает», особенно вот эта фраза:
Сознательно не удаляю ту часть файлов, которую не использую, потому что некоторые важные файлы, хоть и косвенно, но ссылаются на них. Поэтому лучше скопировать все.

Да, действительно. Звучит не очень хорошо. Исправил.
2. Магические числа, «непонятно откуда», но внезапно и удачно всплывающие имена полей структур… Больше напоминает первое знакомство человека с системой.

Честно сказать, про эту фичу нигде ранее не читал (ни в одном уроке, во время изучения мною STM32, об этом написано не было). Поэтому решил напомнить о ней. Посчитал, что лишним не будет.
3. ИМХО очень плохой подход — копировать из библиотеки отдельные файлы для использования. Надо наоборот учить людей, что лучше подключать целую готовую библиотеку, желательно предварительно слинкованную статически! И не надо будет её каждый раз компилировать вместе со всем проектом. Неиспользуемые файлы исключать из списка компиляции Keil умеет, через свойства по ПКМ на файле.

Исправил. Сообщил, что копируем всю библиотеку. Объяснил, за что отвечает каждый добавленный файл.
желательно предварительно слинкованную статически!

После того, как 1 раз компилируешь проект — библиотеки при последующей компиляции не изменяются.
Tutorial таким быть не должен.

Только начинаю писать. Просто не хочется, чтобы накопленный опыт пропал. Рад любым правкам.
Просто так случается, что со временем забываешь, как работают собственные библиотеки… И когда-то очевидные вещи кажутся ужасно непонятными. Это одна из причин написания этой серии статей.
А вообще, солидарен с мнениями комментаторов, что лучше под open-source IDE изучать разработку. Тем более, более универсальные среды. Сам пишу под все МК в Eclipse, в том числе под 1986ВЕ9х.

Мне очень по душе Keil. Чем-то он пленил меня. С Eclipse так и не смог наладить контакт. Но это уже индивидуальные особенности. Keil не накладывает ограничений на обучение. 32-х киллобайт вполне хватает на то, чтобы беспрепятственно изучить контроллер и начать разрабатывать интересные вещи.
Записывайте, пожалуйста, их где-нибудь. Я с радостью внесу правки и укажу, кем они были сделаны.
Ну и слишком много в проекте GUI-возни и возни с IDE

Ее больше не будет. Мы настроили Keil 5 и проект в нем. Теперь можно начать программировать. Если и будет что по настройке — то это мелочи, которые я мог упустить.
что и то и другое к самой теме «посвящения в работу с микроконтроллером» относится весьма и весьма относительно

Лично для меня это была самая большая проблема. Плата пролежала на столе 2 недели. Каждый день я смотрел на нее и хотел начать, но мысль о том, что пришлось бы потратить несколько часов на настройку — отпугивала до последнего.
На диске море информации по другим продуктам компании. Как мне показалось, по всей их продукции… + демонстрационный видеоролик с предприятия.
image
Примеры (конкретно к этой плате) только под keil. Да и драйвера на официальном сайте лишь под него. Но в папке есть пример настройки под IAR. Если я правильно понял. Не занимался этим. Мне keil ближе. Я перепробовал много различных сред и остановился на нем. Мне очень понравилась возможность напрямую писать в периферию. Так как изначально писал код под STM32 на ассемблере.
Прошу простить… Просто подобные разъемы вижу ОЧЕНЬ не часто. Поэтому для меня это в новинку. Буду осваивать.
Вы можете обратиться к ответственному лицу и поинтересоваться. У меня если и будет потребность в данных МК, то я буду заказывать небольшими партиями. Или в группах ВК. Там есть и самодельные платы под данные МК.
емнип, миландр выпускается отнюдь не у нас, а за бугром.

Чет прочел, и приуныл...
Там одни BNC-разъемы стоят долларов 5, а панелька под TQFP — так и вовсе может на сотню долларов потянуть.

Вот это для меня новость. Когда смотрел на фото платы на сайте и не думал, что эти компоненты стоят так дорого. Вообще считал цену платы завышенной. В одной группе ВК продавалась эта плата. Сейчас тему уже не смог найти.
Кстати, спасибо. Я теперь хоть знаю, как эти разъемы называются… Не приходилось работать ни с чем подобным ранее.
Набор мне был прислан абсолютно бесплатно. После того, как я описал, что школьник и на данный момент уже имею не малые, по своему возрасту, успехи (хотя разработки и не назвать сложными с точки зрения профессионала данной области). Не платил даже за пересылку. Доставили собственной почтой.
12 ...
12

Information

Rating
Does not participate
Location
Красноярск, Красноярский край, Россия
Date of birth
Registered
Activity

Specialization

Software Developer, Embedded Software Engineer
Lead
From 250,000 ₽
C++
STM32
Linux
Circuitry
Python
Assembler
Programming microcontrollers
Embedded system
Software development
Object-oriented design