Основная поддержка STM32 для Arduino

LSMOD
Сб 19 января 2019 г. 15:30
Примечание модератора: перенесено от «генерала» в ядро ​​STM

Сегодня у меня есть время, чтобы продолжить с моими вещами STM32.
Вот почему я не терплю результатов чего -то делать. ;)

Я не мог ответить в последней ветке ViewTopic.PHP?F = 45&T = 4301&начало = 50#p52463 Потому что теперь он заблокирован ! : шок:
Это странный форум! :?
Мой соответствующий столб поток остался без ответа ViewTopic.PHP?F = 45&T = 4301&начало = 50#p52402.
Так что не будет решения проблемы потока ...

В настоящее время я стараюсь следовать советам по будущему использованию Arduino с этим ядром https: // github.com/stm32duino/arduino_core_stm32.
Так что это будет тема этой ветки, и я надеюсь, что она тоже не будет заблокирована!

Все остальные подходы к развитию питаются для меня до много времени.
Например, я не могу понять, почему есть только сложные примеры для LiboPencM3, показывающие дисплеи точечной матрицы, но когда я хочу использовать глупый стандартный ЖК-дисплей 16x2, я должен сначала преобразовать или написать свою собственную библиотеку. :(

Или опубликованный пример https: // Средний.com/coinmonks/juggling-s ... F6820DC808, которые используют усложняют многозадачность для простых показаний датчиков.
На мой взгляд, это действительно особые случаи - я вижу стандартный случай для µC, занимающегося линейными вещами, такими как чтение датчика и подталкивание данных к интерфейсу или среде данных.
Вот почему я хочу легкий доступ к библиотекам для использования ЖК-дисплея или написания с FAT в SD-карту.

Когда я захочу сделать действительно сложные вещи, я буду использовать Orange -Pi, работающий Linux за 15 долларов или за 25 долларов с 64 -битной машиной для четырех ядра - тогда мне больше не нужен настольный компьютер. ;)
Так что мне не нужно думать или освоить многозадачность - это уже идеально с Linux!

Так я думаю об использовании оборудования ...

Это правильное место на форуме, чтобы обсудить это «ядро arduino» https: // github.com/stm32duino/arduino_core_stm32 ?

LSMOD
Сб 19 января 2019 г. 16:11
Установка работает как описано в https: // github.com/stm32duino/wiki/wiki/. :)
(Это установит 896,2 МБ материал.)

Отлично. Попробую снова мои первые шаги с новым ядром:

Скомпилируйте мой ЖК-пример ViewTopic.PHP?F = 28&T = 4500#P52248 работает только после комментирования enableDebugPorts();

LSMOD
Сб 19 января 2019 г., 16:30
Кроме - вручную Прошивка программы Blink с 10576 байтами тоже работает.

Теперь вернемся к вопросу об использовании USB и получении 8 -битного доступа к порту GPIO ...

Сначала посмотрите на 8 -битный GPIO.
Подсказка Mrburnette https: // github.com/rust-embed/discov ... RS/RTRM.доктор медицинских наук не показывает ответа,
Итак, я искал определения Hal GPIO и нашел этот хороший документ https: // simonmartin.CH/ресурсы/STM32/ ... эртос).PDF,
Но, кажется, не описывает правильный HAL. :(

Итак, я попробовал этот пример с большим успехом https: // www.Микроконтроллер-проект.компонент ... Оллер.HTML
Я подключил 4 синих светодиода с PB4 - PB7 с более 470 Ом до +5 В.

Затем я собрал и вспыхнул этот источник Arduino: static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOB_CLK_ENABLE(); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7, GPIO_PIN_RESET); /*Configure GPIO pins : Pin1_Pin Pin2_Pin */ GPIO_InitStruct.Pin = GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); } void setup() { MX_GPIO_Init(); pinMode(LED_BUILTIN, OUTPUT); } void loop() { #define WAIT 250 GPIOB->ODR = ~0x0010; //Write to port-b HAL_Delay(WAIT); GPIOB->ODR = ~0x0020; //Write to port-b HAL_Delay(WAIT); GPIOB->ODR = ~0x0040; //Write to port-b HAL_Delay(WAIT); GPIOB->ODR = ~0x0080; //Write to port-b HAL_Delay(WAIT); GPIOB->ODR = ~0x0000; //Write to port-b HAL_Delay(WAIT); digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); }

LSMOD
Сб 19 января 2019 г. 18:44
В ../arduino15/packages/stm32/hardware/stm32/1.4.0/ядер/arduino/stm32/PINAF_STM32F1.час Я нашел
static inline void pinF1_DisconnectDebug(PinName pin) { /** Enable this flag gives the possibility to use debug pins without any risk * to lose traces */ #ifndef STM32F1_LOCK_DEBUG // Enable AFIO clock __HAL_RCC_AFIO_CLK_ENABLE(); // Disconnect JTAG-DP + SW-DP signals. // Warning: Need to reconnect under reset if ((pin == PA_13) || (pin == PA_14)) { __HAL_AFIO_REMAP_SWJ_DISABLE(); // JTAG-DP Disabled and SW-DP Disabled } if ((pin == PA_15) || (pin == PB_3) || (pin == PB_4)) { __HAL_AFIO_REMAP_SWJ_NOJTAG(); // JTAG-DP Disabled and SW-DP enabled } #else UNUSED(pin); #endif /* STM32F1_FORCE_DEBUG */ }

LSMOD
Сб 19 января 2019 г., 19:14
До сих пор я не вижу возможности использовать интерфейс USB в качестве серийного USB.

Ни один из них не работает :( //#include #include USBCompositeSerial CompositeSerial; uint32_t counter = 0; void setup() { CompositeSerial.registerComponent(); USBComposite.begin(); delay(2000); } void loop() { CompositeSerial.print("Counter: "); CompositeSerial.print(counter); CompositeSerial.println(" - Hello World!"); counter++; delay(500); }

Беннебой
Сб 19 января 2019 г. 11:48
Для CDC вам нужно будет получить версию GitHub Dev, 1.40 релизов не включает его.

Mrburnette
Солнце 20 января 2019 2:45
[Беннебой - Сб 19 января 2019 г. 21:48] - Для CDC вам нужно будет получить версию GitHub Dev, 1.40 релизов не включает его.

Комментарии Рэя:
Как отмечают многие участники, я высказываюсь о том, чтобы сделать переход от Roger's (Leaflab's Bandored Core Core) к официальному ядру STM32. Это мое долгосрочное предложение... Но я понимаю, что это не будет безболезненным для пользователей Blue Pill или Maple Mini, поскольку текущая (19-01-2019) Master Git Branch не хватает серьезного кода серийного USB.

IMO, официальное ядро ​​будет работать лучше всего с официальным оборудованием SBC: Discovery Boards или Nucleo Boards. Официальное ядро ​​также лучше всего работает с инструментом ST-Link. Очевидно, те участники, которые только в синих таблетках за 2 доллара не будут счастливы. Извините, вы некоторое время жили в заимствованном времени... Недавно были сообщения о Синие таблетки с надежным UC (10K SRAM, 32K Flash) ... Поэтому я подозреваю, что избыток (Suplus) STM32F103C8T6 высыхает.

Вернувшись много лет назад в Arduino.Форум CC, я проповедовал о покупке одного (1) Официального совета: Uno, Nano и т. Д. Наличие этого официального совета помогает диагностировать потенциальные вопросы клонов H/W. Возможность самопроверка вашего кода на своем официальном совете имеет решающее значение для продолжения психического здоровья. То же самое относится и к Arduino на ядре STM... Один официальный совет критически важен в качестве тестовой платформы. Развернуть на дешевом аппаратном обеспечении клонов, если хотите, но купите открытие или доску Nucleo - вы будете рады, что сделали... Это инвестиция, как хороший DVM.


Луча

LSMOD
Солнце 20 января 2019 г. 9:16
[Беннебой - Сб 19 января 2019 г. 21:48] - Для CDC вам нужно будет получить версию GitHub Dev, 1.40 релизов не включает его.
Спасибо за совет - но как мне это получить?

У меня есть проблема, которую следует путать с массой различных решений, зависит от разных ядер и MCU / досок.
Конечно, нет проблем с этим познакомиться, когда вы работаете с этими вещами каждый день или после многих лет.
Но когда у вас есть какой -то опыт и меньше времени, действительно трудно понять, что вы пишете или что вы имеете в виду.
Итак, сначала я должен был Google, что такое значение CDC ...
[Mrburnette - Солнце 20 января 2019 г. 2:45] - ... В текущем (19-01-2019) в главной ветви GIT отсутствует какой-то серьезный код серийного USB.

IMO, официальное ядро ​​будет работать лучше всего с официальным оборудованием SBC: Discovery Boards или Nucleo Boards.
Официальное ядро ​​также лучше всего работает с инструментом ST-Link.
Очевидно, те участники, которые только в синих таблетках за 2 доллара не будут счастливы.

Вернувшись много лет назад в Arduino.Форум CC, я проповедовал о покупке одного (1) Официального совета: Uno, Nano и т. Д.
До сих пор неясно, что включено в ядро, для какого типа MCU ?

Доска Nucleo, кажется, продается с разными MCU:

Совет по обнаружению -> STM32F407VG
Правление на немолео -> STM32F030R8 или STM32F103RB https: // www.ул.com/en/ecosystems/stm32- ... tid = sc2003

Таким образом, когда поддерживаются доски Nucleo и STM32F103RB на этих платах, я не понимаю, почему STM32F103C8T6 не поддерживается?

Я владелец ST-Link, но до сих пор не работал с этим, потому что я делаю основные тесты.
Я хочу знать, можно ли использовать UART - так почему я не должен мигать над этим?
Еще одно новое оборудование вызовет новые проблемы - тогда мое терпение будет подчеркнуто. ;)
С другой стороны, вы видели, что я на пути к решению проблемы с серийной загрузкой. 8-)

Да, всегда хорошая идея, чтобы купить вещи в хорошем качеством.
Но есть действительно большая разница в цене, и поэтому приемлемо купить прямой 3 вместо 1 - поэтому, когда оборудование подозревается, я просто меняю его.
Кроме того - доски из ядров большие и не такие удобные.

Беннебой
Солнце 20 января 2019 г. 10:07
https: // github.com/stm32duino/wiki/wiki ... репозиторий

Беннебой
Солнце 20 января 2019 г. 10:44
[Mrburnette - Солнце 20 января 2019 г. 2:45] - Но я понимаю, что это не будет безболезненным для пользователей Blue Pill или Maple Mini, поскольку текущая (19-01-2019) Master Git Branch не хватает серьезного кода серийного USB.
CDC находится в базовой версии GitHub около недели назад. Таким образом, он хорошо движется, Фредерик размышляет о том, как лучше всего включить загрузку DFU, и есть PR, которые делают это возможным - просто случай, когда решает, какой загрузчик будет лучшим... Есть очень широкая гамма досок & Arm Cores для покрытия, так что, возможно, это начнется с уже доступных, то есть BL2 & Скрытый...
[Mrburnette - Солнце 20 января 2019 г. 2:45] - Как отмечают многие участники, я высказываюсь о том, чтобы сделать переход от Roger's (Leaflab's Bandored Core Core) к официальному ядру STM32.
Я думаю, что это хорошая позиция, чем больше людей переходят на это ядро, тем больше становится снежный ком, и чем быстрее темпы развития через участников.

Для F4 это очень приятно сейчас с сильной базой периферийной поддержки - в основном основной поддержкой основного Arduino, но открыта для разработки с других с более экзотическими вариантами использования и желанием выставить более способное оборудование. Было бы здорово получить здесь некоторых завсегдатаев, на поездке, есть невероятный талант, который можно принести, и учитывая, что это LL & Хэл, я думаю, не невозможно дышать жизнью в некоторые великие функциональные возможности.

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

LSMOD
Солнце 20 января 2019 12:20
[Беннебой - Солнце 20 января 2019 г. 10:44] - CDC находится в базовой версии GitHub около недели назад.
Тогда эта функция совершенно новая!
Неудивительно, что он не работает, когда он находится только в пути разработки.

Была глупая ошибка конфигурации для последовательной загрузки. : oops:
Это должно быть /dev/ttyusb0 а нет /dev/ttys0.
Итак, эта функция Работаю правильно с /dev /ttyusb0.
STMFLASH32 может быть более новой версией в репозитории.

UART1 как сериал работает в коде. : D

Но я не мог найти обходной путь для активации PB4 в качестве порта GPIO. :(
Я понятия не имею, какая функция должна быть вызвана для деактивации jtrst ?

Есть ли что -нибудь, чтобы работать с RTClock?
#включать <Rtclock.час> не снимается, и я не нахожу файл с RTClock в подпапке STM32 ...
Есть описание с названием некоторых примеров:
* https: // www.ул.com/content/ccc/resource ... 025071.PDF
* https: // www.ул.com/content/ccc/resource ... 207941.PDF
Есть ли место, где можно загрузить примеры?

Я мог найти ../.arduino15/packages/stm32/ardware/stm32/1.4.0/system/drivers/stm32f1xx_hal_driver/src/STM32F1XX_HAL_RTC.в

Беннебой
Солнце 20 января 2019 г. 13:28
Библиотека RTC

https: // github.com/stm32duino/stm32rtc

Что вы пытаетесь сделать с PB4? Это GPIO по умолчанию на STM Core для Bluepill.

SPI по умолчанию для Bluepill на STM Core - PA7 Mosi, PA6 Miso, PA5 SCLK (написал это, поскольку PB4 - альтернативный PIN -код для мисо)

LSMOD
Солнце 20 января 2019 г. 13:45
[Беннебой - Солнце 20 января 2019 г. 13:28] - https: // github.com/stm32duino/stm32rtc

Что вы пытаетесь сделать с PB4? Это GPIO по умолчанию на STM Core для Bluepill.
Спасибо - я постараюсь сделать пример для использования RTC.

Я упоминаю прямой доступ к порту ViewTopic.PHP?F = 48&T = 4521#P52582
Он работает, кроме PB4.
Но теперь у меня есть обходной путь, когда я делаю явный Pinmode раньше - тогда он работает. void setup() { pinMode(PB4, OUTPUT); MX_GPIO_Init(); pinMode(LED_BUILTIN, OUTPUT); }

Беннебой
Солнце 20 января 2019 г. 13:48
Приятно знать.

Возможно, посмотрите на обработку Pinmode в ядре, чтобы точно увидеть, что он делает - может быть меньше накладных расходов.

LSMOD
Солнце 20 января 2019 г. 13:53
[Беннебой - Солнце 20 января 2019 г. 13:28] - https: // github.com/stm32duino/stm32rtc
Позже я буду познакомиться
RTC_Tests:15:22: error: STM32RTC.h: No such file or directory #include ^ compilation terminated. exit status 1 STM32RTC.h: No such file or directory

Беннебой
Солнце 20 января 2019 г. 14:18
Вам нужно скачать эту библиотеку и поместить ее в папку библиотеки пользователей...

LSMOD
Солнце 20 января 2019 г., 17:27
[Беннебой - Солнце 20 января 2019 г. 14:18] - Вам нужно скачать эту библиотеку и поместить ее в папку библиотеки пользователей...
Да - большое спасибо!
Примеры добавляются в дерево и составлены без проблем.

Zoomx
Пн 21 января 2019 г. 13:56
[Mrburnette - Солнце 20 января 2019 г. 2:45] - Вернувшись много лет назад в Arduino.Форум CC, я проповедовал о покупке одного (1) Официального совета: Uno, Nano и т. Д. Наличие этого официального совета помогает диагностировать потенциальные вопросы клонов H/W.
Иногда наличие клона помогает диагностировать официальную проблему совета директоров.

16U2, установленный как USB-сериал-адаптер, есть проблема, когда вы открываете COM-порт с ПК без сброса UNO: в зависимости от бода на ПК вы получаете персонаж, который не отправляется Atmega328.

Использование 128000 символ - F0
Использование 256000 символ - ноль
Использование 38400 - это FF
Используя 9600, вы не получаете никакого персонажа.

Это связано с небольшим импульсом, который интерпретируется как действительный символ.

CH340x, который используется на клонах, не имеет этой проблемы, поэтому я смог взглянуть на 16U2. С другой стороны, клоны иногда имеют проблемы с электричеством из -за LDO.
Если вы используете загрузчик Hoodloader, проблема не присутствует.

fpistm
Пн 21 января 2019 г., 19:27
[LSMOD - Сб 19 января 2019 г. 16:11] - (Это установит 896,2 МБ материал.)
Право, когда вы устанавливаете инструмент инструментов ARM GCC, а также ARM CMSIS. 395M ARM-None-Eabi-GCC/
262 м CMSIS/
[LSMOD - Сб 19 января 2019 г. 16:11] - Скомпилируйте мой ЖК-пример ViewTopic.PHP?F = 28&T = 4500#P52248 работает только после комментирования enableDebugPorts();

LSMOD
Вторник 22 января 2019 г. 9:31
[fpistm - Пн 21 января 2019 г., 19:27] - Право, когда вы устанавливаете инструмент инструментов ARM GCC, а также ARM CMSIS.
395M ARM-None-Eabi-GCC/
262 м CMSIS/
Не было возможности отличаться в менеджере совета директоров.
Ядро Mapel, кажется, удаляется.

Я попробую версию разработки рядом с проверкой серийной USB -функции ...

[fpistm - Пн 21 января 2019 г., 19:27] - enableDebugPorts();

Беннебой
Вт 22 января 2019 г. 10:18
[LSMOD - Вторник 22 января 2019 г. 9:31] - Проблема решается, но все еще не ясно, как правильное имя функции для этого ядра?
Для этого нет никакой функции, порты отладки включены в качестве стандарта. Ядро Роджера отключает их как стандартное, чтобы люди не могли использовать их в качестве GPIO, это связано с тем, что в основном ядро ​​Роджера используется на Maple Mini, Bluepill или Blackpill, где люди используют загрузчик, а не SWD.

fpistm
Вт 22 января 2019 г. 10:30
Первая цель этого ядра - быть наиболее близким к API ARDUINO.
Я стараюсь расширить/предоставить доступ, чтобы охватить наибольшее количество функций в стиле Arduino, чтобы быть максимально простым.
Теперь, CMSIS, HAL и LL полностью доступны, а продвинутый пользователь может выполнять свою собственную реализацию, чтобы использовать все возможности.

Менеджер советов работает так же для других ядров, вас не предупреждают о том, что установлено. Ридме.MD предоставляет эту информацию. В любом случае, он удаляет другие установленные ядра.
https: // github.com/stm32duino/arduino_c ... тронукция

О именовании функций, не пытайтесь сравнивать оба ядра, цель не одинакова для каждого ядра.
О доступе к 8 битам, у вас есть все подсказки, чтобы сделать это, поскольку вам уже удастся использовать доступ в регистр.
О RTC, да, есть гораздо больше вариантов. Как уже говорилось ранее, цель состоит в том, чтобы обеспечить простой и близкий API, чем Arduino. Еще некоторая необходимая функция для добавления (например: используйте резервное регистр для восстановления времени после сброса). configForLowPower(Source_Clock source)

[STM32Generic] SDIO DMA