STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18780
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Eddy_Em писал(а): мастдайки у меня на домашних и рабочих компьютерах уже не меньше 15 (а то и всех 20) лет нет!
да все заметили вашу профдеформацию :)))
Eddy_Em писал(а):Тупо пишешь "b function" - добавил брейк, "watch var" - добавил трассировку изменения переменной (таким образом, кстати, можно еще, как у убогого сеггера, выводить отладочные сообщения и прочую лабуду), ^C - остановил выполнение, "s" - перешел на шаг, "p /x var" - отобразил переменную в 16-ной форме и т.д., и т.п.
вот только не надо говорить, что процитированное на порядок удобнее наведения мышки на переменную в коде, потому как в нормальной IDE в этот момент "всплывает" её значение. не говоря уже про "тупо тыкаешь мышом на строку - и ставится брейкпоинт" - пишешь только код, а не отладку.
Eddy_Em писал(а):коль времени свободного полно - как раз в кайф будет изучить с нуля. Написать Makefile, сделать стартап, линкер под себя написать…
дело в том, что заставить себя начать погружение в ARM я еще как-то пока могу, но заставить себя изучить язык make, да еще язык линкерскрипта, да еще... короче, не хочу учиться, хочу жениться играться с МК.

Добавлено after 2 minutes 30 seconds:
а нуклео какие-то дорогие... что-то жаба душит тратить деньги на бесполезность... уж лучше Джонни-Пешехода прикупить

Добавлено after 8 minutes 11 seconds:
Dimon456, а где же эта самая CoIDE проживает? на сайте ST написано "obsolete", и все... там еще есть True Studio - оно с ST-Link V1 дружит?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

Если не хочется ничего изучать, то есть абдурины. Фигакс-фигакс - и в продакшн. Вообще не врубаясь, что там происходит и почему оно работает.
А для STM32 ST придумали свою абдурину - калокуб. Любимой мышей натыкал, бдыщ - код сгенерировался. В специально подготовленные места вставил "скетчи" - вуаля. И даже make не надо писать, т.к. калокуб сам все соберет… И отладка в духе мышедрочеров: все в окошках такое, разноцветное…
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Реклама
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

ARV, про True Studio не помню.
К CoIDE-1.7.8 надо еще скачать gcc-arm, на текущий момент версия 10.3-2021.10, скачивать надо архив gcc-arm-none-eabi-10.3-2021.10-win32.zip.
А потом в меню CoIDE Project -> Select Toolchain Patch выбрать, куда распаковали gcc-arm, к примеру: C:\gcc-arm-none-eabi-10.3-2021.10\bin
А как это все выглядит, вот видео

А про IAR, придется у VladislavS спрашивать где-какие галочки поставить, или попросить его собрать минимальный проект и выложить в архиве сюда.
Это не хвост, это антенна
Сообщения: 1337
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Сообщение tonyk »

Eddy_Em писал(а):у меня-то абсолютно все проекты абсолютно одинаково тактируются
Завтра захочешь перенести свой проект на другой МК- и снова трать время на копание с UART. В другом МК может быть две шины с разными частотами, UART не известно на какой шине сидит. Кстати, бегло глянул UART на G0: ты всё равно не правильно рассчитываешь скорость в макросе. У этого UART помимо делителя и оверсэмплинга ещё есть предделитель, который в макросе не учтён.
Реклама
Эиком - электронные компоненты и радиодетали
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Dimon456",url="/forum/viewtopic.php?p=4350027#p4350027"]надо еще скачать gcc-arm, на текущий момент версия 10.3-2021.10[/uquote]
Она уже давно 12.2
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18780
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Eddy_Em писал(а):Любимой мышей натыкал, бдыщ - код сгенерировался. В специально подготовленные места вставил "скетчи" - вуаля. И даже make не надо писать, т.к. калокуб сам все соберет… И отладка в духе мышедрочеров: все в окошках такое, разноцветное…
дайте два! :))) только не работает оно, как бы я хотел, "искаропки"... ща попробую кокос, если и там облом - ну и живите со своими ARMами сами.

Добавлено after 3 minutes 31 second:
кстати, возможно, кому-то из начинающих поможет мой опыт скачивания с сайта ST: заходим под VPN, находим, что надо, начинаем качать - скорее всего скорость будет мизерна и связь оборвется (для бесплатных VPN), поэтому отключаем VPN и повторяем закачку, запуская её в списке закачек браузера. у меня с первой попытки не всегда закачивалось, но три-четыре попытки - и начинается закачка на хорошей скорости (для меня 2 Мб/с - уже хорошо).
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

tonyk, если б я там неправильно выставил частоту, оно бы не работало!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

ARV, создаете проект
Project -> New Project, пишем к примеру test_f100, путь будет X:\CoIDE\workspace\test_f100
Далее выбираем Chip, пишем в поле type filter text stm32f100rb, и выбираем этот МК. Усе Finish.

Далее в меню View -> Repository поставить галочки на CMSIS core и CMSIS boot.
Открыть файл main.c, в меню Project -> Build, проект должен собраться. Усе, ни чего лишнего.
Последний раз редактировалось Dimon456 Сб янв 07, 2023 20:18:14, всего редактировалось 1 раз.
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

X:\CoIDE\workspace\test_f100
Позорище какое! Мастдайка, начиная с четвертой nt, умеет нормально монтировать + разделителем использовать человеческий прямой слеш, а не убогий обратный.
А они тут как будто все в DOS застряли!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Это не хвост, это антенна
Сообщения: 1337
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Сообщение tonyk »

Код: Выделить всё

tonyk, если б я там неправильно выставил частоту, оно бы не работало!
Зашибательский аргумент. Похоже, до описания предделителя ты так и не дочитал, иначе хотя бы сказал чё-нить типа "он по-умолчанию "1".
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

ARV, теперь отладка
пишем код
Спойлер

Код: Выделить всё

#include <stm32f10x.h>

volatile uint32_t temp=0;

int main(void)
{

    while(1)
    {
    	temp++;
    }
}
Project -> Build
в меню View -> Configuration нас интересует вкладка Debugger,
Adapter ST-Link, Port -> SWD, остальное ни чего не трогаем, галочку с Run to main можно снять, он тогда начнет со startup, иначе его пропустит.

Далее лезем в папку G:\CoIDE\bin\
создаем папку test_f100, в нее кидаем из папки G:\CoIDE\bin\ файлики
coflashLastConfig.ini
download.bat
erase.bat
GDBServerParam.ini
programDownload.bat

Содержимое coflashLastConfig.ini
Спойлер

Код: Выделить всё

[Device]
DeviceName=STM32F100RB

[Adapter]
AdapterName=ST-Link
Port=SWD
MaxClock=1000000
ResetMode=2

[Context]
DriverNum=1
ImageFile=
PostRun=1
AutoErase=1
AutoVerify=1
prgFlashOffset=0
DriverFile0=G:/CoIDE/flash\LPC17xx_128.elf
[Sectors0]
SectorNum=8
Sector000=1
Sector001=1
Sector002=1
Sector003=1
Sector004=1
Sector005=1
Sector006=1
Sector007=1
Содержимое download.bat
Спойлер

Код: Выделить всё

"G:/CoIDE/bin\coflash.exe" program STM32F100RB "G:\CoIDE\workspace\test_f100\test_f100\Debug\bin\test_f100.elf" --adapter-name=ST-Link --port=SWD --adapter-clk=1000000 --erase=affected --reset=SYSRESETREQ --driver="G:/CoIDE/flash/STM32F10x_MD_128.elf" 
Содержимое erase.bat
Спойлер

Код: Выделить всё

"G:/CoIDE/bin\coflash.exe" erase STM32F100RB --adapter-name=ST-Link --port=SWD --adapter-clk=1000000 --driver="G:/CoIDE/flash/stm32f10x_md_128.elf" 
Содержимое GDBServerParam.ini
Спойлер

Код: Выделить всё

[Adapter]
AdapterName=ST-Link
MaxClock=1000000
TraceMode=0
[Device]
Device=STM32F100RB
[Debug]
DebugPort=SWD
ResetMode=2
IfCacheRom=1
[GDBServer]
IP=127.0.0.1
Port=2009
Содержимое programDownload.bat
Спойлер

Код: Выделить всё

"G:/CoIDE/bin\coflash.exe" program STM32F100RB "G:\CoIDE\workspace\test_f100\test_f100\Debug\bin\test_f100.elf" --adapter-name=ST-Link --port=SWD --adapter-clk=1000000 --erase=affected --reset=SYSRESETREQ --driver="G:/CoIDE/flash/STM32F10x_MD_128.elf" 
Смотрите внимательно букву диска, у меня это диск G.

Далее копируем эти файлики назад в G:\CoIDE\bin\ , оригиналы можете сохранить, если вам надо.

Далее Debug -> Debug, должно все работать.

Повторяю еще раз, на IARе этого делать не надо, там работает усе из коробки.

Добавлено after 28 minutes 35 seconds:
Eddy_Em писал(а):Позорище какое!
а мне как бы с высокой горки ...

По крайне мере я на ней собрал его digiscript на чипе f030 + WS2811, моргает, правда зависает всего на одно скрипте, скорее всего падает в hard_fault. Но заводской вариант, на площади, еще перед самым новым годом завис на одном месте и висит до сих пор.

А f030 + WS2811 -24 выдерживает, хотя и спаян на коленке, сейчас морозы под -40 придут, посмотрю как работать будет.
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

ARV, вот IDE, может пригодится https://sunduk.radiokot.ru/view/?id=1649269694
В дистрибутиве коме редактора кода есть gcc-arm 9.3 и софт для прошивки и отладки через ST-link v2.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18780
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

да у меня все проблемы как раз из-за того, что ST-Link V1 у меня в демо-плату встроен... не понимаю я опять же логику ST: прошивальщик отдельно у них эту плату опознает, шьёт и т.п., а отладчик в IDE отказывается.

Добавлено after 11 minutes 57 seconds:
сделал blink... прошил через утилитку... блинкает. но IDE не хочет это делать. ну где логика?!

Добавлено after 17 minutes 21 second:
вот такое работает с кубом?
Изображение
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

ARV писал(а):ST-Link V1 у меня в демо-плату встроен
Он устарел и не поддерживается.
Платы с ST-Link V1 много лет не производят. Прошивки для v1 давно не выпускают. Эту версию отладчика почти никто не использует.
ARV писал(а):вот такое работает с кубом?
Должно. Это версия v2. Но должен быть на оригинальном МК.
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

ARV писал(а):вот такое работает с кубом?
Я думал вы умнее меня ...
За чем вам куб? О чем вы? Кнопочки нет.

Куб дает огромный код, как раз время к VladislavS обратится, все стремятся минимум к CMSIS.
Друг Кота
Аватара пользователя
Сообщения: 25498
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="Dimon456",url="/forum/viewtopic.php?p=4350143#p4350143"]Куб дает огромный код.[/uquote]
Куб, о котором идет речь, никакого кода вообще не дает. Отладчик работает со средой, а не с кодогенератором.
Последний раз редактировалось КРАМ Сб янв 07, 2023 23:53:02, всего редактировалось 1 раз.
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

ARV, на ST надо через vpn идти. Сейчас зашел - там 1.11 версия, всё ок
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18780
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

[uquote="Dimon456",url="/forum/viewtopic.php?p=4350143#p4350143"]
ARV писал(а):вот такое работает с кубом?
Я думал вы умнее меня ...
За чем вам куб? О чем вы? Кнопочки нет.

Куб дает огромный код, как раз время к VladislavS обратится, все стремятся минимум к CMSIS.[/uquote]был бы умнее, продолжал бы с AVR ковыряться... все эти CMSIS, HAL и иже с ними мне пока глубоко до лампы, поскольку я полный 0 во всех аспектах. и размер меня пока не волнует. зато блинк вчера я сделал из трех строк, не имея понятия, что и как оно там в аппаратуре делает. да, 5,6К прошивочка...

хотел так же с наскока через прерывания от таймера помигать, но не понял 2 вещи:
- у этого f100 что, тим1 и тим15 имеют общий вектор прерываний? и в обработчике надо разбираться, кто его вызвал?
- как в сгенерированном коде найти место, куда добавить надо свои действия в обработчике прерываний? я наивно полагал, что кодогенератор у меня просто спросит имя функции обработчика и сделает пустышку... ан нет, и тут моя логика не совпадает с "профессиональной"...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25498
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="ARV",url="/forum/viewtopic.php?p=4350255#p4350255"]5,6К прошивочка...[/uquote]
Стартап, инициализация осциллятора, таблица векторов прерываний. Ну и разрядность совсем не 8...
Это общая для любого проекта часть.
[uquote="ARV",url="/forum/viewtopic.php?p=4350255#p4350255"]хотел так же с наскока через прерывания от таймера помигать, но не понял 2 вещи:
- у этого f100 что, тим1 и тим15 имеют общий вектор прерываний? и в обработчике надо разбираться, кто его вызвал?
- как в сгенерированном коде найти место, куда добавить надо свои действия в обработчике прерываний?[/uquote]
Да, контроллер прерываний в любом STM32 имеет сгруппированые вектора прерываний. Флагов прерываний очень много. Поэтому такая организация выглядит вполне обоснованно.
В обработчике разбор "кто?" выглядит примитивно просто (в примере обработчики по одному вектору для 4 и 5 канала ДМА контроллера AT32F421 - в STM32 все почти идентично, только нет битовых структур):

Код: Выделить всё

void DMA1_Channel5_4_IRQHandler(void)
{
	if(DMA1->sts_bit.fdtf4&&DMA1_CHANNEL4->ctrl_bit.fdtien)
	{
		DMA1->clr_bit.fdtfc4=true;
            ----тут тело обработчика 4 канала ДМА или вызов колбэка----
	}
	if(DMA1->sts_bit.fdtf5&&DMA1_CHANNEL5->ctrl_bit.fdtien)
	{
		DMA1->clr_bit.fdtfc5=true;
            ----тут тело обработчика 5 канала ДМА или вызов колбэка----
	}
}
HAL генерирует колбэки, CMSIS представлен в примере и он написан руками.
То есть в обработчике примитивный семафор с проверкой (флаг&&разрешение) по каждому источнику прерываний для данного вектора.

[uquote="ARV",url="/forum/viewtopic.php?p=4350255#p4350255"]тут моя логика не совпадает с "профессиональной"...[/uquote]
Прекратите смешно и наивно ёрничать. Не может быть логики у человека в теме, где он 0.
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

ARV, я вам в личку отправил архивчик, проект от CoIDE, проверил - собирается, весь код умещается в 16 кило, целевой МК stm32f100rb, даже протеус работает, в консоле поставите CNT=16, иначе долгая песня пока он все переберет. Здесь нет последних правок DMA ШИМ таблицы генератора случайности. Могу внести эти правки.
На реальном чипе не проверял, скорее всего должно работать, если хотите могу проверить.
Вот и разбирайтесь.
Ответить

Вернуться в «ARM»