STM32 программирование из FLProg.
- DrMario
- Лейтенант
- Сообщения: 378
- Зарегистрирован: 07 ноя 2016, 13:11
- Откуда: Камень-на-Оби
- Имя: Евгений
- Контактная информация:
STM32 программирование из FLProg.
Начиная с версии 6.1.0 появилась возможность самостоятельно интегрировать в программу кастомные контроллеры.
https://habr.com/ru/post/467007/
Я воспользовался такой возможностью и добавил STM32F103C8T6, который уже больше года лежал в столе.
Для использования STM32F103C8T6 необходимо предварительно добавить к плате компоненты, необходимые для загрузки программ в микроконтроллер (прошивка FLASH) и добавить библиотеку Arduino_STM32-master в каталог ...\ideV4\hardware\ используемой IDE.
Ссылка на библиотеку (сюда не помещается)
https://github.com/rogerclarkmelbourne/Arduino_STM32
Дополнительная информация по предварительной подготовке:
http://mypractic.ru/urok-2-plata-stm32f ... oader.html
https://www.youtube.com/watch?v=5mThFmpC1U4&t=947s
https://youtu.be/878k4KqF7Xs
После чего нужно загрузить библиотеку STM32F103 (Cortex®-M3 CPU) в пользовательские описания контроллеров FLProg.
Получилось так, что для STM контроллеров своя библиотека шины OneWire, а именно OneWireSTM, которая лежит в папке Arduino_STM32-master.
На данный момент при компиляции IDE сообщает об ошибке. Проблема пока решается путем замены #include <OneWire.h> на #include <OneWireSTM.h>. Возможно эту проблему можно решить как то иначе, в редакторе есть секции для специального кода.
Если у кого получится, поделитесь знанием.
В наличии у меня есть STM32F042 Nucleo, позже добавлю этот контроллер.
19.12.2019. Отредактировал описание контроллера STM32F103C8T6. Названия выводов теперь соответствуют названию на плате по кличке "Голубая таблетка". Добавлено описание альтернативных функций для выводов.
=========
04.05.2020 Добавил кастомный STM32F407Vxx DevEBox
Подробная справка в описании платы.
Для программирования этой платы через Arduino IDE нужно добавить платы STM32 Cores. В поисковике менеджера плат нужно набрать stm32 и установить их.
Возможно придется дополнительно установить STM32CubeProg, чтобы обновить прошивку в ST-Link
https://www.st.com/en/development-tools ... eprog.html
Пока программирую через SWD ST-Link ом, через DFU пока не получается. Есть возможность добавить виртуальный USART для отладки, см. описание. 01.09.2020
Архив с последней редакцией кастомных контроллеров STM32 (Cortex®-M3 CPU) и STM32 (Cortex®-M4 CPU).
В состав STM32 (Cortex®-M3 CPU) контроллер STM32F103C8T6 Blue Pill в двух вариантах выбора из менеджера плат.
В состав STM32 (Cortex®-M4 CPU) контроллеры STM32F401CCU6 Black Pill, STM32F411CEU6 Black Pill, STM32F407VGT6 DevEBox.
Подробное описание внутри.
https://habr.com/ru/post/467007/
Я воспользовался такой возможностью и добавил STM32F103C8T6, который уже больше года лежал в столе.
Для использования STM32F103C8T6 необходимо предварительно добавить к плате компоненты, необходимые для загрузки программ в микроконтроллер (прошивка FLASH) и добавить библиотеку Arduino_STM32-master в каталог ...\ideV4\hardware\ используемой IDE.
Ссылка на библиотеку (сюда не помещается)
https://github.com/rogerclarkmelbourne/Arduino_STM32
Дополнительная информация по предварительной подготовке:
http://mypractic.ru/urok-2-plata-stm32f ... oader.html
https://www.youtube.com/watch?v=5mThFmpC1U4&t=947s
https://youtu.be/878k4KqF7Xs
После чего нужно загрузить библиотеку STM32F103 (Cortex®-M3 CPU) в пользовательские описания контроллеров FLProg.
Получилось так, что для STM контроллеров своя библиотека шины OneWire, а именно OneWireSTM, которая лежит в папке Arduino_STM32-master.
На данный момент при компиляции IDE сообщает об ошибке. Проблема пока решается путем замены #include <OneWire.h> на #include <OneWireSTM.h>. Возможно эту проблему можно решить как то иначе, в редакторе есть секции для специального кода.
Если у кого получится, поделитесь знанием.
В наличии у меня есть STM32F042 Nucleo, позже добавлю этот контроллер.
19.12.2019. Отредактировал описание контроллера STM32F103C8T6. Названия выводов теперь соответствуют названию на плате по кличке "Голубая таблетка". Добавлено описание альтернативных функций для выводов.
=========
04.05.2020 Добавил кастомный STM32F407Vxx DevEBox
Подробная справка в описании платы.
Для программирования этой платы через Arduino IDE нужно добавить платы STM32 Cores. В поисковике менеджера плат нужно набрать stm32 и установить их.
Возможно придется дополнительно установить STM32CubeProg, чтобы обновить прошивку в ST-Link
https://www.st.com/en/development-tools ... eprog.html
Пока программирую через SWD ST-Link ом, через DFU пока не получается. Есть возможность добавить виртуальный USART для отладки, см. описание. 01.09.2020
Архив с последней редакцией кастомных контроллеров STM32 (Cortex®-M3 CPU) и STM32 (Cortex®-M4 CPU).
В состав STM32 (Cortex®-M3 CPU) контроллер STM32F103C8T6 Blue Pill в двух вариантах выбора из менеджера плат.
В состав STM32 (Cortex®-M4 CPU) контроллеры STM32F401CCU6 Black Pill, STM32F411CEU6 Black Pill, STM32F407VGT6 DevEBox.
Подробное описание внутри.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось DrMario 01 сен 2020, 17:53, всего редактировалось 6 раз.
-
- Капитан
- Сообщения: 859
- Зарегистрирован: 17 ноя 2015, 20:36
- Имя: Сергей
- Благодарил (а): 40 раз
- Поблагодарили: 7 раз
STM32 программирование из FLProg.
[ref]DrMario[/ref], Спасибо огромное, у меня возникло несколько вопросов, может кто подскажет.
1 Правильно ли указаны аналоговые входы для портов PB0, PB1?,Если я не ошибаюсь должно быть для PB0 аналоговый вход 8, PB1 аналоговый вход 9. Правильно ли обозначены PA11, PA12 как UART-0, ведь в стм всего 3 UART порта.
2. Что у нас на PC13 при использованного RTC, кварц на 32768 надо цеплять к PC14, PC15.
3. PA13, PA14 выведены на отдельный разъем для подключения STLINK, если шить через USB их можно использовать?
4. Можно ли использовать порты PA11, PA12 которые применяются для USB?
Отправлено спустя 1 час 27 минут 43 секунды:
5. Можно ли слать инфу в порт USB при выполнении программы, на подо бе того как это делается отправкой данных в сериал порт? Может очень пригодиться при отладке.
1 Правильно ли указаны аналоговые входы для портов PB0, PB1?,Если я не ошибаюсь должно быть для PB0 аналоговый вход 8, PB1 аналоговый вход 9. Правильно ли обозначены PA11, PA12 как UART-0, ведь в стм всего 3 UART порта.
2. Что у нас на PC13 при использованного RTC, кварц на 32768 надо цеплять к PC14, PC15.
3. PA13, PA14 выведены на отдельный разъем для подключения STLINK, если шить через USB их можно использовать?
4. Можно ли использовать порты PA11, PA12 которые применяются для USB?
Отправлено спустя 1 час 27 минут 43 секунды:
5. Можно ли слать инфу в порт USB при выполнении программы, на подо бе того как это делается отправкой данных в сериал порт? Может очень пригодиться при отладке.
-
- Полковник
- Сообщения: 3358
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 13 раз
- Поблагодарили: 100 раз
- Контактная информация:
STM32 программирование из FLProg.
Отвечу на вопрос 2
У вас на плате стоит [spoiler] [/spoiler]
У вас на плате стоит [spoiler] [/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Капитан
- Сообщения: 859
- Зарегистрирован: 17 ноя 2015, 20:36
- Имя: Сергей
- Благодарил (а): 40 раз
- Поблагодарили: 7 раз
STM32 программирование из FLProg.
я если честно не в курсе, платы ещё в пути, судя по данным отслеживания приедут через дней 5..
- DrMario
- Лейтенант
- Сообщения: 378
- Зарегистрирован: 07 ноя 2016, 13:11
- Откуда: Камень-на-Оби
- Имя: Евгений
- Контактная информация:
STM32 программирование из FLProg.
Я буду рад, если кто нибудь перепроверит и сделает исправления. На данный момент пока не до этого контроллера, вплотную занят своим проектом на ESP32. Но помню, что каждый вывод проверялfsergei70 писал(а): 11 дек 2019, 15:02 DrMario, Спасибо огромное, у меня возникло несколько вопросов, может кто подскажет.
1 Правильно ли указаны аналоговые входы для портов PB0, PB1?,Если я не ошибаюсь должно быть для PB0 аналоговый вход 8, PB1 аналоговый вход 9. Правильно ли обозначены PA11, PA12 как UART-0, ведь в стм всего 3 UART порта.
2. Что у нас на PC13 при использованного RTC, кварц на 32768 надо цеплять к PC14, PC15.
3. PA13, PA14 выведены на отдельный разъем для подключения STLINK, если шить через USB их можно использовать?
4. Можно ли использовать порты PA11, PA12 которые применяются для USB?

-
- Рядовой
- Сообщения: 18
- Зарегистрирован: 08 ноя 2019, 22:48
- Откуда: Ярославль
- Имя: ALEXEY
STM32 программирование из FLProg.
Начал тоже этим вопросом заниматься и вот, что нашел.
1) Нельзя использовать выводы : PA11, PA12, PA15, PB3, PB4, PB5. Два первых это USB (это не UART0), 3 других - для отладки через JTAG.
2) Выводы PA4 и PA5 - два независимых аппаратных ЦАП, т.е. аналоговые выхода с разрешением 8 (12) bit (не путать с ШИМ).
3) SoftSerial, как многие пишут, на этих платах пока не работает.
Попробовал поиграться с ШИМ, правда для этой цели пришлось сделать пользовательский блок. Работает на входе величина 4095 (1023 Arduino), выход (16bit) 65535 против (255 Arduino)
1) Нельзя использовать выводы : PA11, PA12, PA15, PB3, PB4, PB5. Два первых это USB (это не UART0), 3 других - для отладки через JTAG.
2) Выводы PA4 и PA5 - два независимых аппаратных ЦАП, т.е. аналоговые выхода с разрешением 8 (12) bit (не путать с ШИМ).
3) SoftSerial, как многие пишут, на этих платах пока не работает.
Попробовал поиграться с ШИМ, правда для этой цели пришлось сделать пользовательский блок. Работает на входе величина 4095 (1023 Arduino), выход (16bit) 65535 против (255 Arduino)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- DrMario
- Лейтенант
- Сообщения: 378
- Зарегистрирован: 07 ноя 2016, 13:11
- Откуда: Камень-на-Оби
- Имя: Евгений
- Контактная информация:
STM32 программирование из FLProg.
Дайте ссылкуmarkirovka76 писал(а): 18 дек 2019, 18:19 2) Выводы PA4 и PA5 - два независимых аппаратных ЦАП, т.е. аналоговые выхода с разрешением 8 (12) bit (не путать с ШИМ).
-
- Рядовой
- Сообщения: 18
- Зарегистрирован: 08 ноя 2019, 22:48
- Откуда: Ярославль
- Имя: ALEXEY
STM32 программирование из FLProg.
http://easystm32.ru/for-beginners/37-dac-stm32/
Отправлено спустя 1 час 46 минут 4 секунды:
Отправлено спустя 1 час 46 минут 4 секунды:
Нашел еще одну неточность в Вашем кастомном проекте на контроллер - у STM32F103 память EEPROM - равна 0, т.е. ее нетDrMario писал(а): 12 дек 2019, 10:36Я буду рад, если кто нибудь перепроверит и сделает исправления. На данный момент пока не до этого контроллера, вплотную занят своим проектом на ESP32. Но помню, что каждый вывод проверялfsergei70 писал(а): 11 дек 2019, 15:02 DrMario, Спасибо огромное, у меня возникло несколько вопросов, может кто подскажет.
1 Правильно ли указаны аналоговые входы для портов PB0, PB1?,Если я не ошибаюсь должно быть для PB0 аналоговый вход 8, PB1 аналоговый вход 9. Правильно ли обозначены PA11, PA12 как UART-0, ведь в стм всего 3 UART порта.
2. Что у нас на PC13 при использованного RTC, кварц на 32768 надо цеплять к PC14, PC15.
3. PA13, PA14 выведены на отдельный разъем для подключения STLINK, если шить через USB их можно использовать?
4. Можно ли использовать порты PA11, PA12 которые применяются для USB?. Возможно что нибудь и упустил из виду.
STM32 программирование из FLProg.
Вы про какой МК пишите про DAC? У STM32F103C8T6 его нет.
https://www.rlocman.ru/datasheet/pdf.ht ... 66711&p=12
https://www.rlocman.ru/datasheet/pdf.ht ... 66711&p=12
-
- Рядовой
- Сообщения: 18
- Зарегистрирован: 08 ноя 2019, 22:48
- Откуда: Ярославль
- Имя: ALEXEY
STM32 программирование из FLProg.
Да оплошность, не на туда посмотрел.dsfbuy писал(а): 18 дек 2019, 20:47 Вы про какой МК пишите про DAC? У STM32F103C8T6 его нет.
https://www.rlocman.ru/datasheet/pdf.ht ... 66711&p=12
-
- Сержант
- Сообщения: 159
- Зарегистрирован: 05 фев 2017, 12:02
- Благодарил (а): 4 раза
- Поблагодарили: 16 раз
STM32 программирование из FLProg.
большое спасибо автору за проект контролёра STM32F103...!!!

А то валяется штук пять STM32F103... можно будет гне нибуть применить

-
- Рядовой
- Сообщения: 18
- Зарегистрирован: 08 ноя 2019, 22:48
- Откуда: Ярославль
- Имя: ALEXEY
STM32 программирование из FLProg.
Я тоже купил 10-к 2 года назад и только сейчас довольный, как "мамонт".
В данный момент залил маленький проект в stm - счетчик с выводом в uart смотрю и "любуюсь" 
Отправлено спустя 1 минуту 9 секунд:
Если Вы про этот МК изучали еще что-то, кроме приведенной ссылки, то может знаете какие ноги поддерживают прерывания. Дабы "допилить" описание контроллера в flprog?
Отправлено спустя 43 минуты 29 секунд:
При описании собственного контроллера столкнулся с одной проблемой, может кому пригодится - прерывания. Нашел такую вещь, что всего их 19, 16 из которых от внешних устройств и распределяются они так PA0, PB0..... EXTI0; PA15, PB15...EXTI15, т.е. они распределяются по регистрам. Однако в описании 0, 1 и т.д. номер прерывания можно использовать только один раз, что немного будет накладывать ограничения по выводам. При этом еще указано, что меньший номер прерывания всегда имеет приоритет перед большим.


Отправлено спустя 1 минуту 9 секунд:
dsfbuy писал(а): 18 дек 2019, 20:47 Вы про какой МК пишите про DAC? У STM32F103C8T6 его нет.
https://www.rlocman.ru/datasheet/pdf.ht ... 66711&p=12
Если Вы про этот МК изучали еще что-то, кроме приведенной ссылки, то может знаете какие ноги поддерживают прерывания. Дабы "допилить" описание контроллера в flprog?
Отправлено спустя 43 минуты 29 секунд:
При описании собственного контроллера столкнулся с одной проблемой, может кому пригодится - прерывания. Нашел такую вещь, что всего их 19, 16 из которых от внешних устройств и распределяются они так PA0, PB0..... EXTI0; PA15, PB15...EXTI15, т.е. они распределяются по регистрам. Однако в описании 0, 1 и т.д. номер прерывания можно использовать только один раз, что немного будет накладывать ограничения по выводам. При этом еще указано, что меньший номер прерывания всегда имеет приоритет перед большим.
- DrMario
- Лейтенант
- Сообщения: 378
- Зарегистрирован: 07 ноя 2016, 13:11
- Откуда: Камень-на-Оби
- Имя: Евгений
- Контактная информация:
STM32 программирование из FLProg.
В первом посте обновил описание контроллера и добавил даташит. С прерываниями еще не занимался, пока нет времени.
Если у кого есть желание, проверьте описание по даташиту.
Если у кого есть желание, проверьте описание по даташиту.
-
- Рядовой
- Сообщения: 18
- Зарегистрирован: 08 ноя 2019, 22:48
- Откуда: Ярославль
- Имя: ALEXEY
STM32 программирование из FLProg.
Я написал про ноги которые нельзя использовать - возникнут проблемы. Вот ссылка от куда это взял. https://ht-deko.com/arduino/stm32f103c8 ... 0170729_01
-
- Подполковник
- Сообщения: 1202
- Зарегистрирован: 14 фев 2016, 14:16
- Откуда: kazahstan
- Благодарил (а): 32 раза
- Поблагодарили: 6 раз
STM32 программирование из FLProg.
А как обстоят дела с энкодерами ? Кто -нибудь пробовал?markirovka76 писал(а): 18 дек 2019, 18:19 правда для этой цели пришлось сделать пользовательский блок.
-
- Рядовой
- Сообщения: 18
- Зарегистрирован: 08 ноя 2019, 22:48
- Откуда: Ярославль
- Имя: ALEXEY
STM32 программирование из FLProg.
Нормально! Работают. Сегодня сам пробовал. Правда только с библиотекой отсюда https://github.com/enjoyneering/RotaryEncodervovka1973 писал(а): 02 янв 2020, 16:16А как обстоят дела с энкодерами ? Кто -нибудь пробовал?markirovka76 писал(а): 18 дек 2019, 18:19 правда для этой цели пришлось сделать пользовательский блок.
-
- Подполковник
- Сообщения: 1202
- Зарегистрирован: 14 фев 2016, 14:16
- Откуда: kazahstan
- Благодарил (а): 32 раза
- Поблагодарили: 6 раз
STM32 программирование из FLProg.
Отправлено спустя 30 минут 55 секунд:
[spoiler]void encoderISR()
{
encoder.readAB();
}
void encoderButtonISR()
{
encoder.readPushButton();
}[/spoiler]
Да и встроенный пример через сериал выдает только кнопку
Видел я эту библиотеку ,пробовал блок создать , нельзя в DeclareSection прописатьmarkirovka76 писал(а): 08 янв 2020, 23:11 Нормально! Работают. Сегодня сам пробовал. Правда только с библиотекой отсюда https://github.com/enjoyneering/RotaryEncoder
[spoiler]void encoderISR()
{
encoder.readAB();
}
void encoderButtonISR()
{
encoder.readPushButton();
}[/spoiler]
Да и встроенный пример через сериал выдает только кнопку
-
- Рядовой
- Сообщения: 18
- Зарегистрирован: 08 ноя 2019, 22:48
- Откуда: Ярославль
- Имя: ALEXEY
STM32 программирование из FLProg.
Я сегодня попробую сделать пользовательский блок. По результату отпишусь, и если получится прикреплю его сюда.vovka1973 писал(а): 09 янв 2020, 07:04 Отправлено спустя 30 минут 55 секунд:Видел я эту библиотеку ,пробовал блок создать , нельзя в DeclareSection прописатьmarkirovka76 писал(а): 08 янв 2020, 23:11 Нормально! Работают. Сегодня сам пробовал. Правда только с библиотекой отсюда https://github.com/enjoyneering/RotaryEncoder
[spoiler]void encoderISR()
{
encoder.readAB();
}
void encoderButtonISR()
{
encoder.readPushButton();
}[/spoiler]
Да и встроенный пример через сериал выдает только кнопку
-
- Рядовой
- Сообщения: 18
- Зарегистрирован: 08 ноя 2019, 22:48
- Откуда: Ярославль
- Имя: ALEXEY
STM32 программирование из FLProg.
Выкладываю поправленную библиотеку Encoder для STM32F1, которая работает с одноименным пользовательским блоком без каких либо дополнений и пример. Сам все проверил.
Есть только одно ограничение - нельзя использовать одновременно пины с одинаковыми номерами разных портов, т.е. PA0 и PB0, PA12 и PB12 (это только пример - номера с "потолка") и так далее. Специфика работы прерываний контроллера.

Есть только одно ограничение - нельзя использовать одновременно пины с одинаковыми номерами разных портов, т.е. PA0 и PB0, PA12 и PB12 (это только пример - номера с "потолка") и так далее. Специфика работы прерываний контроллера.

У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось markirovka76 09 янв 2020, 18:02, всего редактировалось 2 раза.
-
- Подполковник
- Сообщения: 1202
- Зарегистрирован: 14 фев 2016, 14:16
- Откуда: kazahstan
- Благодарил (а): 32 раза
- Поблагодарили: 6 раз
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя