Вопрос к автору.
Вопрос к автору.
Скажите пожалуйста.
Почему в редакторе пользовательских контроллеров, при назначении пинов, нельзя использовать имина портов.
Например для PC13 нужно использовать номер вывода 32.
Испытываю жуткие неудобства, если с STM32f103С информация о мапирование еще есть то с чипом R, я не знаю...
Ведь IDE понимает формат с буквами, и код потом легче читается.
Спасибо.
Почему в редакторе пользовательских контроллеров, при назначении пинов, нельзя использовать имина портов.
Например для PC13 нужно использовать номер вывода 32.
Испытываю жуткие неудобства, если с STM32f103С информация о мапирование еще есть то с чипом R, я не знаю...
Ведь IDE понимает формат с буквами, и код потом легче читается.
Спасибо.
-
- Полковник
- Сообщения: 4007
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 153 раза
Вопрос к автору.
Не вдаваясь в подробности - это действительно не просто.Shurkan1 писал(а): 28 авг 2020, 17:52 Скажите пожалуйста.
Почему в редакторе пользовательских контроллеров, при назначении пинов, нельзя использовать имина портов.
Например для PC13 нужно использовать номер вывода 32.
Испытываю жуткие неудобства, если с STM32f103С информация о мапирование еще есть то с чипом R, я не знаю...
Ведь IDE понимает формат с буквами, и код потом легче читается.
Спасибо.
ecoins решает проблему в определении пинов устройств в первой плате, которая по выставленному условию выполняется 1 раз.
Далее через контакт можно установить любое имя, например "РС13-светодиод".
- support
- Супермодератор
- Сообщения: 1917
- Зарегистрирован: 03 янв 2018, 11:45
- Откуда: Астрахань
- Имя: Сергей
- Поблагодарили: 23 раза
- Контактная информация:
Вопрос к автору.
Честно говоря я ещё не занимался плотно СТМ-ками. Так что ничего не понял. Что значит " имена портов". Я так понимаю у каждого пина есть номер как цифрового, и например PC13 - это 33 номер. И например в функцию digitalWrite(33, 1); вставляется 33. Или я не правильно понимаю и должно вставляться digitalWrite(PC13, 1);. В принципе это можно сделать.
В результате получится вот так
и этот код всегда будет вставляться в скетчь при работе с этим контроллером
Что такое мапинг я чесно только подозреваю, и Вы можете обратить внимание на такую возможность редактора описаний как "Специальный код"ecoins писал(а): 28 авг 2020, 23:48 Не вдаваясь в подробности - это действительно не просто.
ecoins решает проблему в определении пинов устройств в первой плате, которая по выставленному условию выполняется 1 раз.
Далее через контакт можно установить любое имя, например "РС13-светодиод".
В результате получится вот так
и этот код всегда будет вставляться в скетчь при работе с этим контроллером
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Автор программы FLProg.
Вопрос к автору.
[quote=support post_id=92986 time=1598659265 user_id=3]
Честно говоря я ещё не занимался плотно СТМ-ками. Так что ничего не понял. Что значит " имена портов". Я так понимаю у каждого пина есть номер как цифрового, и например PC13 - это 33 номер. И например в функцию digitalWrite(33, 1); вставляется 33. Или я не правильно понимаю и должно вставляться digitalWrite(PC13, 1);. В принципе это можно сделать.
[quote=ecoins post_id=92985 time=1598647691 user_id=923]
Можно и digitalWrite(32, 1); и digitalWrite(PC13, 1);
но с цифрами есть какая-то путаница.
Почему то PC13 это 32, и что тогда PC0? хотя с портами A и B все логично. И при программировании STM32 все используют наименование с буквами, и Arduino IDE коректно с этим работает и на всех платках маркировка с буквами .
Было бы бесконечно удобно вставлять сюда
(PC13).
Спасибо.
Честно говоря я ещё не занимался плотно СТМ-ками. Так что ничего не понял. Что значит " имена портов". Я так понимаю у каждого пина есть номер как цифрового, и например PC13 - это 33 номер. И например в функцию digitalWrite(33, 1); вставляется 33. Или я не правильно понимаю и должно вставляться digitalWrite(PC13, 1);. В принципе это можно сделать.
[quote=ecoins post_id=92985 time=1598647691 user_id=923]
Можно и digitalWrite(32, 1); и digitalWrite(PC13, 1);
но с цифрами есть какая-то путаница.
Почему то PC13 это 32, и что тогда PC0? хотя с портами A и B все логично. И при программировании STM32 все используют наименование с буквами, и Arduino IDE коректно с этим работает и на всех платках маркировка с буквами .
Было бы бесконечно удобно вставлять сюда

(PC13).
Спасибо.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Рядовой
- Сообщения: 77
- Зарегистрирован: 27 июн 2020, 04:22
- Откуда: World
- Имя: Agat
- Контактная информация:
Вопрос к автору.
В CubeMX можно назначить имя ноге и если нужно переназначить ногу на другой пин, то удобно использовать обращение по имени пина.
В коде это работает так.
т.е. переназначив define на другую ногу не нужно искать/править все упоминания в коде об этом пине.
Думаю, что ТС хотел спросить имеено это.
В коде это работает так.
Код: Выделить всё
#define MYNOGA 32
#define MYOTHERNOGA PC13
digitalWrite(MYNOGA, 1);
digitalWrite(MYOTHERNOGA, 1);
Думаю, что ТС хотел спросить имеено это.
Вопрос к автору.
Все просто, речь идет :RootShell писал(а): 29 авг 2020, 15:03 т.е. переназначив define на другую ногу не нужно искать/править все упоминания в коде об этом пине.
Думаю, что ТС хотел спросить имеено это.
О снятии ограничений (изменений) на формат ячейки - "номер цифрового входа" (flprog_пользовательские описания контролеров_выводы контроллера). С возможностью вводить не только цифры но и буквы.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Вопрос к автору.
Это мапинг. Т.е. кем-то как-то написанное соответствие.support писал(а): 29 авг 2020, 03:01 Что значит " имена портов". Я так понимаю у каждого пина есть номер как цифрового, и например PC13 - это 33 номер.
Например, человек сделал себе плату, и пытается начинать взрослеть - обращается к пинам ввода/вывода по их именам. Не по маппингу!Shurkan1 писал(а): 29 авг 2020, 15:17 О снятии ограничений (изменений) на формат ячейки - "номер цифрового входа" (flprog_пользовательские описания контролеров_выводы контроллера). С возможностью вводить не только цифры но и буквы.
Поддерживаю, уже проходил это через костыли в виде ПБ.
[spoiler] [/spoiler]
Даже глядя на плату, самую распространённую с али, думай, какой нужно включить номер, чтобы получить результат...
[spoiler] [/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Полковник
- Сообщения: 4007
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 153 раза
Вопрос к автору.
Для каждого контроллера STM32 есть файл с описанием пином.
Для STM32F103C с таким содержанием:
[spoiler]
#ifndef _VARIANT_ARDUINO_STM32_
#define _VARIANT_ARDUINO_STM32_
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
// * = F103C8-CB | DIGITAL | ANALOG | USART | TWI | SPI | SPECIAL |
// |---------|--------|------------|-----------|------------|-----------|
#define PA0 A0 // | 0 | A0 | | | | |
#define PA1 A1 // | 1 | A1 | | | | |
#define PA2 A2 // | 2 | A2 | USART2_TX | | | |
#define PA3 A3 // | 2 | A2 | USART2_RX | | | |
#define PA4 A4 // | 4 | A4 | | | SPI1_SS | |
#define PA5 A5 // | 5 | A5 | | | SPI1_SCK | |
#define PA6 A6 // | 6 | A6 | | | SPI1_MISO | |
#define PA7 A7 // | 7 | A7 | | | SPI1_MOSI | |
#define PA8 8 // | 8 | | | | | |
#define PA9 9 // | 9 | | USART1_TX | | | |
#define PA10 10 // | 10 | | USART1_RX | | | |
#define PA11 11 // | 11 | | | | | USB_DN |
#define PA12 12 // | 12 | | | | | USB_DP |
#define PA13 13 // | 13 | | | | | SWD_SWDIO |
#define PA14 14 // | 14 | | | | | SWD_SWCLK |
#define PA15 15 // | 15 | | | | SPI1_SS | |
// |---------|--------|------------|-----------|------------|-----------|
#define PB0 A8 // | 16 | A8 | | | | |
#define PB1 A9 // | 17 | A9 | | | | |
#define PB2 18 // | 18 | | | | | BOOT1 |
#define PB3 19 // | 19 | | | | SPI1_SCK | |
#define PB4 20 // | 20 | | | | SPI1_MISO | |
#define PB5 21 // | 21 | | | | SPI1_MOSI | |
#define PB6 22 // | 22 | | USART1_TX | TWI1_SCL | | |
#define PB7 23 // | 23 | | USART1_RX | TWI1_SDA | | |
#define PB8 24 // | 24 | | | TWI1_SCL | | |
#define PB9 25 // | 25 | | | TWI1_SDA | | |
#define PB10 26 // | 26 | | USART3_TX* | TWI2_SCL* | | |
#define PB11 27 // | 27 | | USART3_RX* | TWI2_SDA* | | |
#define PB12 28 // | 28 | | | | SPI2_SS* | |
#define PB13 29 // | 29 | | | | SPI2_SCK* | |
#define PB14 30 // | 30 | | | | SPI2_MISO* | |
#define PB15 31 // | 31 | | | | SPI2_MOSI* | |
// |---------|--------|------------|-----------|------------|-----------|
#define PC13 32 // | 32 | | | | | |
#define PC14 33 // | 33 | | | | | OSC32_IN |
#define PC15 34 // | 34 | | | | | OSC32_OUT |
// |---------|--------|------------|-----------|------------|-----------|
#define PD0 35 // | 35 | | | | | OSC_IN |
#define PD1 36 // | 36 | | | | | OSC_OUT |
// |---------|--------|------------|-----------|------------|-----------|
[/spoiler]
Не рекомендовал бы вводить новые
#define PC13 32
и подобные для избежания конфликтов с библиотеками STM32.
Для STM32F103C с таким содержанием:
[spoiler]
#ifndef _VARIANT_ARDUINO_STM32_
#define _VARIANT_ARDUINO_STM32_
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
// * = F103C8-CB | DIGITAL | ANALOG | USART | TWI | SPI | SPECIAL |
// |---------|--------|------------|-----------|------------|-----------|
#define PA0 A0 // | 0 | A0 | | | | |
#define PA1 A1 // | 1 | A1 | | | | |
#define PA2 A2 // | 2 | A2 | USART2_TX | | | |
#define PA3 A3 // | 2 | A2 | USART2_RX | | | |
#define PA4 A4 // | 4 | A4 | | | SPI1_SS | |
#define PA5 A5 // | 5 | A5 | | | SPI1_SCK | |
#define PA6 A6 // | 6 | A6 | | | SPI1_MISO | |
#define PA7 A7 // | 7 | A7 | | | SPI1_MOSI | |
#define PA8 8 // | 8 | | | | | |
#define PA9 9 // | 9 | | USART1_TX | | | |
#define PA10 10 // | 10 | | USART1_RX | | | |
#define PA11 11 // | 11 | | | | | USB_DN |
#define PA12 12 // | 12 | | | | | USB_DP |
#define PA13 13 // | 13 | | | | | SWD_SWDIO |
#define PA14 14 // | 14 | | | | | SWD_SWCLK |
#define PA15 15 // | 15 | | | | SPI1_SS | |
// |---------|--------|------------|-----------|------------|-----------|
#define PB0 A8 // | 16 | A8 | | | | |
#define PB1 A9 // | 17 | A9 | | | | |
#define PB2 18 // | 18 | | | | | BOOT1 |
#define PB3 19 // | 19 | | | | SPI1_SCK | |
#define PB4 20 // | 20 | | | | SPI1_MISO | |
#define PB5 21 // | 21 | | | | SPI1_MOSI | |
#define PB6 22 // | 22 | | USART1_TX | TWI1_SCL | | |
#define PB7 23 // | 23 | | USART1_RX | TWI1_SDA | | |
#define PB8 24 // | 24 | | | TWI1_SCL | | |
#define PB9 25 // | 25 | | | TWI1_SDA | | |
#define PB10 26 // | 26 | | USART3_TX* | TWI2_SCL* | | |
#define PB11 27 // | 27 | | USART3_RX* | TWI2_SDA* | | |
#define PB12 28 // | 28 | | | | SPI2_SS* | |
#define PB13 29 // | 29 | | | | SPI2_SCK* | |
#define PB14 30 // | 30 | | | | SPI2_MISO* | |
#define PB15 31 // | 31 | | | | SPI2_MOSI* | |
// |---------|--------|------------|-----------|------------|-----------|
#define PC13 32 // | 32 | | | | | |
#define PC14 33 // | 33 | | | | | OSC32_IN |
#define PC15 34 // | 34 | | | | | OSC32_OUT |
// |---------|--------|------------|-----------|------------|-----------|
#define PD0 35 // | 35 | | | | | OSC_IN |
#define PD1 36 // | 36 | | | | | OSC_OUT |
// |---------|--------|------------|-----------|------------|-----------|
[/spoiler]
Не рекомендовал бы вводить новые
#define PC13 32
и подобные для избежания конфликтов с библиотеками STM32.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Вопрос к автору.
А это здесь причём?
Речь идёт о возможности создать и пользоваться просто обозначениями пинов Pcxx, PBxx..., как сейчас :
[spoiler] [/spoiler]
только вместо 1, 2, 3... было-бы Pcxx, PBxx...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Вопрос к автору.
У меня поддержка СТМ лежит немного в другом месте -Fuksas писал(а): 29 авг 2020, 18:14 flprog\ideV5\portable\packages\STM32\hardware\stm32\1.9.0\variants
C:\Program Files (x86)\FLProg\ideV5\hardware\Arduino_STM32-master\STM32F1\variants
дальше там папки с девайсами, в них какой файл конкретно?

Подскажите пожалуйста.
- support
- Супермодератор
- Сообщения: 1917
- Зарегистрирован: 03 янв 2018, 11:45
- Откуда: Астрахань
- Имя: Сергей
- Поблагодарили: 23 раза
- Контактная информация:
Вопрос к автору.
Всё равно не понимаю, а что мешает сделать вот так
но в коде будет писаться нужный номер
и ненужен никакой маппинг.
Или я всё таки что то не понимаю. Просто можно конечно снять ограничение с типа поля, но это это будет связанно со значительными доработками и компилятора, и вообще всей программы. Ведь программа ожидает что там число, а там окажется строка. ТО есть надо будет какой то врапер лепить, и как то химичить, что бы строку заставить себя вести как число.
Вообще где чисто в коде скетча есть необходимость использовать PB2 наример вместо 18. Ведь как я понял PB2 это просто задефайненное символьное обозначение числа 18. И компилятор в процессе компиляции подставляет вместо PB2 число 18 (я имею в видк компилятор Arduino IDE).
тогда в программе будет он видится такно в коде будет писаться нужный номер
и ненужен никакой маппинг.
Или я всё таки что то не понимаю. Просто можно конечно снять ограничение с типа поля, но это это будет связанно со значительными доработками и компилятора, и вообще всей программы. Ведь программа ожидает что там число, а там окажется строка. ТО есть надо будет какой то врапер лепить, и как то химичить, что бы строку заставить себя вести как число.
Вообще где чисто в коде скетча есть необходимость использовать PB2 наример вместо 18. Ведь как я понял PB2 это просто задефайненное символьное обозначение числа 18. И компилятор в процессе компиляции подставляет вместо PB2 число 18 (я имею в видк компилятор Arduino IDE).
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Автор программы FLProg.
Вопрос к автору.
Потому что вот Я не понимаю какой номер у PC2 на черненькой плате. Зато компилятор прекрасно понимает PC2.support писал(а): 29 авг 2020, 19:01 Вообще где чисто в коде скетча есть необходимость использовать PB2 наример вместо 18. Ведь как я понял PB2 это просто задефайненное символьное обозначение числа 18. И компилятор в процессе компиляции подставляет вместо PB2 число 18 (я имею в видк компилятор Arduino IDE).
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- support
- Супермодератор
- Сообщения: 1917
- Зарегистрирован: 03 янв 2018, 11:45
- Откуда: Астрахань
- Имя: Сергей
- Поблагодарили: 23 раза
- Контактная информация:
Вопрос к автору.
Для чёрненькой платы можно сделать своё описание контроллера, (например на базе описания от синенькой), и там переименовать либо имена пинов, либо алиасы. Естественно тот кто будет делать описание должен заглянуть в даташит и определить какие пины как обзываются на чёрненькой. Ну а пользователь уже просто выберет нужную плату, и уже будет видеть в выборе вполне понятные 2А1 или 5С1
Автор программы FLProg.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Вопрос к автору.
Сергей, это просто такая у них печатьsupport писал(а): 29 авг 2020, 19:51 Ну а пользователь уже просто выберет нужную плату, и уже будет видеть в выборе вполне понятные 2А1 или 5С1


мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Вопрос к автору.
Полностью с вами согласен. Но, в какой даташит мне смотреть? На черную плату, так его не существует. На чип, так там GPIO называются :support писал(а): 29 авг 2020, 19:51 Естественно тот кто будет делать описание должен заглянуть в даташит и определить какие пины как обзываются на чёрненькой
PA0-PA15;PB,PC,PD. итд.
Вопрос к автору.
variant.hShurkan1 писал(а): 29 авг 2020, 18:38 дальше там папки с девайсами, в них какой файл конкретно?Вроде все посмотрел с таким содержимым не увидел.
Подскажите пожалуйста.
- support
- Супермодератор
- Сообщения: 1917
- Зарегистрирован: 03 янв 2018, 11:45
- Откуда: Астрахань
- Имя: Сергей
- Поблагодарили: 23 раза
- Контактная информация:
Вопрос к автору.
Извините, не хотел Вас обидеть. Я просто реально ещё не работал с СТМ. Я если честно - не совсем программис. Я всё таки инженер Асушник, который освоил смолтолк (более - менее)))) ). Я пока немного разобрался в программировании AVR в среде Wiring. Ну и думаю пока только в этом объёме. Как я понял, для Arduino IDE есть файлики где чётко описанно какому PB соответствует какой цифровой номер (в это ветке есть выше пример). Можно дёрнуть эту информацию оттуда. Наверное..... Я точно не знаю.Shurkan1 писал(а): 29 авг 2020, 20:11Полностью с вами согласен. Но, в какой даташит мне смотреть? На черную плату, так его не существует. На чип, так там GPIO называются :support писал(а): 29 авг 2020, 19:51 Естественно тот кто будет делать описание должен заглянуть в даташит и определить какие пины как обзываются на чёрненькой
PA0-PA15;PB,PC,PD. итд.
В принципе у меня есть планы перейти на работу с пинами напрямую записью в регистр. для этого в редакторе для цифровой функции будут добавлены поля "Номер регистра" или ""Имя регистра", пока не определился, и "Номер бита". Если они будут заполнены, обращение к биту регистра будут производится напрямую. Но это пока в будущем. Мне просто не хватает на всё это времени. У меня есть достаточно определённая "дорожная карта" развития проекта, и я стараюсь с неё не сходить. Сейчас я допиливаю пользовательские блоки, затем на восьмую версию запланирована СКАДА, и наверное только потом,полноценный переход на СТМ и поддержка других редакторов кроме Arduino IDE. например кубика. Соответственно сначала мне надо будет с этими редакторами самому разобраться.
Автор программы FLProg.
Вопрос к автору.
C:\Program Files (x86)\FLProg\ideV5\hardware\Arduino_STM32-master\STM32F1\variants\generic_stm32f103c\variant.h
[spoiler]#ifndef _VARIANT_ARDUINO_STM32_
#define _VARIANT_ARDUINO_STM32_
#define digitalPinToPort(P) ( PIN_MAP[P].gpio_device )
#define digitalPinToBitMask(P) ( BIT(PIN_MAP[P].gpio_bit) )
#define portOutputRegister(port) ( &(port->regs->ODR) )
#define portInputRegister(port) ( &(port->regs->IDR) )
#define portSetRegister(pin) ( &(PIN_MAP[pin].gpio_device->regs->BSRR) )
#define portClearRegister(pin) ( &(PIN_MAP[pin].gpio_device->regs->BRR) )
#define portConfigRegister(pin) ( &(PIN_MAP[pin].gpio_device->regs->CRL) )
static const uint8_t SS = BOARD_SPI1_NSS_PIN;
static const uint8_t SS1 = BOARD_SPI2_NSS_PIN;
static const uint8_t MOSI = BOARD_SPI1_MOSI_PIN;
static const uint8_t MISO = BOARD_SPI1_MISO_PIN;
static const uint8_t SCK = BOARD_SPI1_SCK_PIN;
#define LED_BUILTIN PC13
#endif /* _VARIANT_ARDUINO_STM32_ */
[/spoiler]
У меня там только это.
Отправлено спустя 15 минут 23 секунды:
Не сколько Вы меня не обидели, я сам не программист ). Я только хотел сказать что для STM32 имена с буквами роднее.support писал(а): 29 авг 2020, 20:23 Извините, не хотел Вас обидеть. Я просто реально ещё не работал с СТМ. Я если честно - не совсем программис. Я всё таки инженер Асушник, который освоил смолтолк (более - менее)))) ). Я пока немного разобрался в программировании AVR в среде Wiring. Ну и думаю пока только в этом объёме. Как я понял, для Arduino IDE есть файлики где чётко описанно какому PB соответствует какой цифровой номер (в это ветке есть выше пример). Можно дёрнуть эту информацию оттуда. Наверное..... Я точно не знаю.
Так же понимаю сложность изменения переменной.
Но сопоставлять родные названия портов с непонятными номерами, тоже не очень.
Я , например, не могу найти этот драгоценный файл. Тут еще зависит от того какую поддержку для STM используешь.
У меня от Роджер Кларка https://github.com/rogerclarkmelbourne/Arduino_STM32 возможно она устарела, но я к ней привык)
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость