Любой проект с ядром STM32F072?

Ekawahyu
Ср 13 апреля 2016 г. 6:31
Рад найти этот сайт! Я подумываю использовать STM32F072 для моего проекта и хотел бы получить порт arduino. Любой указатель или существующий проект, который я должен изучить вместо этого для написания с нуля? Любые советы о том, с чего начать и чего избежать? Спасибо.

Rogerclark
Ср 13 апреля 2016 г., 7:34
Несколько человек (@sheepdoll и @vassilis) работали над альтернативным «ядро», используя программное обеспечение STM «куб» для создания необходимых файлов для поддержки любого процессора, который поддерживает «куб»

Видеть ViewTopic.PHP?F = 46&t = 990


На данный момент F072 не является тем, который был экспортирован из куба, а файлы из куба нуждаются в некоторой модификации (исправление), прежде чем их можно будет использовать в качестве ардуно «ядро», но это теоретически облегчает добавление добавления добавления новые процессоры.


Одно большое предостережение на данный момент, это на стадии до Альфа, и работают только такие вещи, как GPIO. Хотя сегодня я вижу, что у Vasasilis теперь работает SPI и протестировал на F103

Если у вас есть устройство F072, возможно, вы можете добровольно помочь в разработке и тестировании нового ядра на этом процессоре.

Ekawahyu
Ср 13 апреля 2016 г. 11:17
Спасибо за указатель. Я только что посмотрел на код на GitHub. Есть ли причина, по которой мы не используем загрузчик для STM32? Я обязательно построю код для этого ядра 072 и могу помочь им с F0 Core в целом. Какое ядро ​​пока не стабильно и какую доску вы используете? Просто чтобы быстро доставить руки на какую -то рабочую платформу, а затем перейти к порту 072.

Rogerclark
Ср 13 апреля 2016 г. 11:31
Я не пробовал загрузчик ни на чем, кроме F103, я не уверен, что это будет работать вообще на F072, но вы можете попробовать.

Я подозреваю, что будет некоторая разница в настройке PLL, различных других часов и т. Д., Которые могут предотвратить загрузчик F103, работающий на F072

Re: Hal Mx не использует загрузчик

Я думаю, вы спрашиваете, почему ядро ​​HAL MX не использует загрузчик

Мы не смогли изменить ядро ​​HAL MX, чтобы оно запустилось по другому адресу начала

Теоретически нам просто нужно изменить начальный вектор на адрес, который загружается, перепрыгивает до 0x8002000, а ядро ​​HAL MX может работать с загрузчиком.

Однако вектор начала жестко закодируется в один из заголовков HAL, поэтому нам нужно исправить этот заголовок каждый раз, когда мы делаем реэкспорт файлов HAL из куба.

Нам уже нужно исправить основную.C, поэтому я подозреваю, что во время полноты времени нам нужно будет написать набор пятен как часть процесса создания / регенерации ядра

Тем не менее, ни у кого не было времени, чтобы поработать над ядром HAL MX, и только недавно @Vassilis смог немного двигаться вперед (следуя оригинальной работе @Sheepdoll)

Ekawahyu
Чт 14 апреля 2016 г., 2:11
Понятно! Я просматриваю форум и постараюсь следовать тому, что они сделали в первую очередь.

Ekawahyu
Ср 20 апреля 2016 г. 3:32 утра
У меня есть 20 то же самое, что STM32F072C8 Poards. Я управляю им со встроенным внутренним генератором. Когда я настраиваю STM32Cube, чтобы включить USB CDC, большинство из этих плат попадают в жесткий обработчик разломов. Но когда я удаляю конфигурацию USB CDC, все они работают просто хорошо. Я подумал, связано ли это с нестабильностью в стеке USB CDC или что -то пропустил при настройке часов для режима USB CDC? У кого -нибудь, у кого есть STM32Cube (любые ядра STM32 и стек CDC), работая и стабильно?

Rogerclark
Ср 20 апреля 2016 г. 3:36 утра
Смотрите эту ветку

http: // www.STM32duino.com/viewtopic.PHP?F = 46&t = 990

Несколько человек работают над «ядром» Arduino, используя куб STM. Однако только Vassilis удалось сделать USB -серийный CDC.

@sheepdoll имеет проблемы с CDC на OSX.

Мне не удалось получить куб для экспорта действительного кода после включения USB :-(

Ekawahyu
Ср 27 апреля 2016 г. 22:10
Наконец, я получил USB CDC для работы и стабильно на STM32F072. На этом этапе очень полезно вытащить printf () из CDC ACM. Как вы сказали, я не справлялся так же, чтобы генерировать стек USB с помощью STM32Cubemx. Что -то просто не хотело работать, и все время впадало в хардзоло. Вы знаете, как отладить стек вызовов с помощью openocd? Или просмотр или мониторинг (потенциально) переполнение стека?

Я взял пример USB CDC из FW1.5.0, который использовался STM32Cubemx для генерации кода. Я просто не могу понять, почему это не сработать с кубом, если он будет отлично подойдет в примерах, предоставленных ST.

Следующий шаг - очистить эту вещь USB CDC и добавление загрузчика. Любой указатель на исходный код загрузчика, который работает для STM32 из вашего (или кого -то еще) репозитория?

Rogerclark
Ср 27 апреля 2016 г., 11:32
Исходный код для загрузчика Maple Bootloader, который мы используем, находится в репо в моей учетной записи GitHub, но он не использует HAL или SPL, его голое металлическое программирование непосредственно на аппаратное обеспечение

Я подозреваю, что, как HAL и т. Д. генерирует большие двоичные файлы, может быть не подходит для написания загрузчика.

Я знаю, что @JCW писал новый загрузчик, но я не думаю, что он когда -либо закончил

Вы также можете посмотреть на libopencm3, поскольку он имеет USB -код.

Ekawahyu
Чт 28 апреля 2016 г., 3:51
Как всегда, спасибо за быстрое время выполнения. Я написал Bare Metal Bootloader для 8051, но это 8-битное ядро ​​с ограниченным пространством. Итак, размер имеет значение. Возможно, вы правы в том, чтобы написать это Baremetal, чтобы сохранить его маленьким, но большинство определений (насколько я знаю) не являются функциональными вызовами в стандартной периферийной библиотеке. Я собираюсь проверить дальше по этому поводу. Сначала посмотрю на ваш репозиторий.

Ekawahyu
Чт 28 апреля 2016 г., 3:56 утра
Один вопрос, не могли бы вы объяснить, как Arduino Ide отправил команду загрузки над последовательным соединением? Это где -то задокументировано? Спасибо.

Rogerclark
Чт 28 апреля 2016 г., 4:01
Код в ядре Libmaple и инструменты, разработанные Lealfabs (которые первоначально написали все), отправляют специальную последовательность символов и делать что -то с DTR или одной из других линий последовательного управления.
Вам нужно будет искать в коде репора, если вы хотите найти последовательность, которую отправляет инструмент maple_upload

Но это не стандартное для Arduino. Я не знаю, как это обрабатывается на AVR Arduino, вам нужно будет опубликовать в Arduino.Форум CC, чтобы узнать.

Ekawahyu
Чт 28 апреля 2016 г., 6:09
Я только что сделал быстрого загрузчика платы F103 из вашего репозитория. Я знаю обо всех этих предупреждениях в Ридме. Кажется, он не работает для моего микроконтроллера F103, скомпилированного с GCC 4.7, 4.8, 5.2 на любом уровне оптимизации. Очень жаль! Я хотел сначала попробовать DFU на F103 и перенести код для F072!

Rogerclark
Чт 28 апреля 2016 г., 6:26
В прошлый раз, когда я пытался скомпилировать, это было нормально

Я просто использую GCC, который поставляется с Windows Arduino IDE, я думаю, что его ARM-None-Eabi-GCC \ 4.8.3-2014Q1

Но я не устал в последнее время. Однако другие люди собрались в последние дни или два на OSX и не имели никаких проблем

Ekawahyu
Чт 28 апреля 2016 г., 6:39
Все еще не повезло. Я только что скачал ваш точный релиз отсюда: http: // форум.rfduino.com/index.PHP?Тема = 1142.0

Ekawahyu
Сб 30 апреля 2016 г. 16:54
Мне удалось программировать Mini STM32 V2 с Arduino IDE (STM32F103RB). Это было мое плохое, я забыл подключить штифт отключения USB, чтобы получить перечисление.

Теперь, когда я получил одну платформу для работы в качестве ссылки, я могу двигаться вперед, чтобы перенести код в STM32F072. Но прежде чем делать это, у меня есть один оставшийся вопрос. Во время загрузки Flash есть ли способ автоматизировать это вместо нажатия кнопок DFU и сброса для ввода режима мигания? Я уверен, что вы подумали об этом, и я хотел бы услышать ваши идеи об этом. Может, я смогу помочь, чтобы это произошло.

Я все еще не определился, пойду ли я с DFU, CDC ACM с серийным загрузчиком.

Ekawahyu
Сб 14 мая 2016 г., 7:35 утра
Я сделал немного домашней работы :-), Думаю, я закрыт в Порт -Ардуино для STM32F072. Мои обновления следующие:
  1. STM32Cubemx - отличный инструмент, чтобы понять, как использовать драйвер STM32 HAL, генерируя коды с различными конфигурацией периферийных устройств. Но это все! Ничто не работает из коробки без небольшого прикосновения тут и там. Итак, в основном я сгенерировал из него какой -то код, а затем копирую и вставьте все, что мне нужно, и двигаться дальше с помощью моего собственного исправления.
  2. Я использую STM32F0XX CMSIS V2.2.3 /29-январь-2016, STM32F0XX_HAL_DRIRIR V1.3.1 /29 января 2016 года и STM32_USB_DEVICE_LIBRARY V2.4.2/11-декабрь-2015. Я пытался включить последние библиотеки как можно. Эти релизы работают на данный момент отлично.
  3. Я использую Arm-None-Eabi-GCC V5.2.1, не уверен, какая версия GCC включена в Arduino IDE 1.6.5? Какой Arduino Ide я должен использовать для тестирования arduino_stm32?
  4. Моя платформа-STM32F072B-Disco, который имеет чип STM32F072RBT6 и на борту ST-Link V2/V2-1. В Makefile есть что -то, от чего мне нужно избавиться, если мы хотим сделать драйвер HAL STM32F0XX для создания для других вариантов F0XX (пока не приоритет).
  5. Я получил USB CDC ACM для работы, с _Write () и _read () Function Funt. Итак, printf (), scanf () и getchar () работают просто отлично. Я также отключил Stdin, Stdout и Stderr Buffering. Я хотел бы сделать GetChar () не блокировка, но я понятия не имею, что изменить в библиотеке. Любой?
  6. Фрагмент от Хьюберта Денкмаира (http: // Stackoverflow.COM/Вопросы/2828 ... STM32-F072) включен в систему:
    void setup() { pinMode(SpeedCountPin, INPUT_PULLUP); // interrupt count pin attachInterrupt(digitalPinToInterrupt(SpeedCountPin), iCounter, RISING); Timer3.setChannel1Mode(TIMER_OUTPUTCOMPARE); Timer3.setPeriod(500000); // in microseconds Timer3.setCompare1(1); // overflow might be small Timer3.attachCompare1Interrupt(handler_led); } // motor speed counter interrupt void iCounter(void){ mCount++; } void loop() { [skip - not important] } // 0.5Hz timer for blinking and count the speed void handler_led(void) { toggle ^= 1; digitalWrite(LED_PIN, toggle); // calculate the speed mSpeed = mCount*60*2/3; // count * 60 sec * 2 per sec / 3 segments on a wheel mCount = 0; }

Rogerclark
Сб 14 мая 2016 г., 21:52
Видеть

http: // www.STM32duino.com/viewtopic.PHP?F = 46&t = 1027

Было бы лучше, если бы вы могли помочь Vassils и @sheepdoll с ядром HALMX, а затем запустить новый на основе HAL

Ekawahyu
Солнце 15 мая 2016 г. 5:05 утра
@RogerClark: Я только что развел halmx_arduino_stm32 репозиторий от вашего. Кажется, это не работает с Arduino 1.6.5? Я попробовал каждую доску из списка и не предоставляя ничего, кроме пустой настройки () и loop (). Что мне здесь не хватает?

Rogerclark
Солнце 15 мая 2016 г. 6:06
Я сейчас бегу 1.6.9 Как его обратно совместимо с существующим ядром Libmaple (и Core HALMX) (в отличие от 1.6.8 или 1.6.7 или 1.6.6)

Функции setup () и loop () вызываются Main.C (каждый вариант платы имеет полную копию файлов HALMX, когда экспортируется кубом)

На самом деле сейчас я получаю эту ошибку
./stm32loader.py -p /dev/ttyUSB0 -evw generic_boot20_pa1.bin

Вассилис
Солнце 15 мая 2016 г. 9:02
Экавахю написал:@RogerClark: Я только что развел halmx_arduino_stm32 репозиторий от вашего. Кажется, это не работает с Arduino 1.6.5? Я попробовал каждую доску из списка и не предоставляя ничего, кроме пустой настройки () и loop (). Что мне здесь не хватает?

Ekawahyu
Пт 20 мая 2016 г., 7:16 утра
Окончательно! Я получил набросок мигания, чтобы построить из Arduino Ide. Есть еще много работы для варианта MxDiscof072rbtx.

https: // github.com/ekawahyu/halmx_arduino_stm32

Я наткнулся на пару довольно раздражающих проблем, таких как STM32Cubemx продолжает переименовать и переопределять *.S в *.с. Это никогда не будет построено на Arduino IDE, потому что он ищет *.S файл. Я попытался напрямую исправить репозиторий CMSIS, изменив все файлы запуска с .S суффикс к .S, но это не работает.

Другая проблема связана с stlink_upload. Он ищет libusb-1.0.0.Dylib Under/usr/local/lib, которого у меня нет. Установка MyCports находится на своем по умолчанию/OPT/Local/LIB для всего. Я также пытался создать символику:
dfu-util -a2 -d 1EAF:0003 -D build/maple.bin -R

Rogerclark
Пт 20 мая 2016 г. 14:24
Stlink upload использует Texane stlink (см. GitHub)

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

Ekawahyu
Пт 20 мая 2016 г. 16:39
Создание Texane Stlink работает из источника, но не сбрасывает доску. Нажатие кнопки сброса на доске Discovery тоже не работает. Мне нужно питать цикл доски. Это единственное, что можно увидеть. Как насчет использования openocd в рамках инструментов?

Rogerclark
Пт 20 мая 2016 г. 16:45
Вы перенаправляете булавки SWD как GPIO где -то в коде ?

Мы видим это с Maple Mini в Libmaple, поскольку выводы SWD переназначены в GPIO, чтобы было доступно больше контактов GPIO.

Таким образом, вам нужно использовать Connect в разделе «Сбросить» и вручную сбросить плату при переходе от загрузки загрузчика на загрузки Stlink на Maple Mini

Хотя после того, как вы сделали одну загрузку Stlink, она решает проблему, поскольку выводы SWD не переназначены при загрузке Stlink в Libmaple

Ekawahyu
Пт 20 мая 2016 г., 19:15
Я не думаю, что понимаю, что вы говорите, но я могу сказать, что я не использую загрузчик STM32Duino для F072. Я назначил выводы SWD на STM32Cubemx, и не было никакого конфликта с остальной конфигурацией. Я мог бы использовать OpenOcd для прошивки и отладки без каких -либо проблем с сбросом. Я также не переназнакомство с SWD в качестве GPIO в коде также.

Это странно. Только питание может заставить его выполнять код во флэш -памяти после загрузки из Arduino. Иногда я также получал эту ошибку:
for (int i = 0; i<256; i++) { [do_something]; }

Ekawahyu
Сб 21 мая 2016 г. 1:15
Я только что добавил openocd в качестве альтернативного метода загрузки, но он указывает на мой локальный/Opt/Local/двоичные файлы, чтобы заставить его работать. Затем следующим шагом будет создание OpenOcd со статическими библиотеками и добавить его в инструменты HALMX_ARDUINO_STM32. Двоичный Windows, мы можем использовать тот, который от Фредди Шопена. Это довольно несколько работ, чтобы построить для Mac и Linux. Любой может помочь с этим?

Сейчас я работаю над поддержкой DFU и должен заставить USB CDC работать в Arduino IDE.

@RogerClark: Как вы думаете, мы можем переместить эту ветку и каким-то образом изменить заголовок, поскольку я зарегистрировал много работы и заметки для разработки платформы STM32F072B-Disco? Я просто думал, что больше не подходит, чтобы оставаться в общем обсуждении. Спасибо.

Рик Кимбалл
Сб 21 мая 2016 г., 3:28
Экавахю написал: Любой может помочь с этим?

Ekawahyu
Сб 21 мая 2016 г., 4:13
@Rick: Вы говорите, что если я установил ноль от менеджера доски, то двойные открытые двоичные файлы уже доступны?

РЕДАКТИРОВАТЬ: Подтвержденные, встроенные работы OpenOCD! Должна быть установлена ​​плата Arduino SAMD (32-битная Cortex-M0+).

Ekawahyu
Пн 23 мая 2016 г. 5:55 утра
USBERIAL проверяется для работы на F072, однако метод Println, похоже, не добавляет CR/LF в конце. Я не могу сделать метод чтения, чтобы прочитать все, что я ввожу из серийного монитора, ни Picocom.

Я начал видеть это предупреждение LD, если я буду беспокоиться об этом предупреждении?
#define IndexMax 3 // Anzahl der servos #define ServoMIN 500 // Minimalwert des Servos in usec #define ServoMAX 2500 // Miaximalwert des Servos in usec #define ServoHome 1500 // Mittelwert des Servos in usec #define INTERVAL 20000 // 20ms unsigned int S[]={PB5,PB6,PB7}; // Pins für die Servos; volatile int W[IndexMax]; // Impulswerte der Servos in usec volatile int Index=0; // Zeiger auf Servo/Daten volatile int Index1=0; void Servo_init(void) { int i; for (i=0;i

Вассилис
Пн 23 мая 2016 г., 6:35
Экавахю написал:USBERIAL проверяется для работы на F072, однако метод Println, похоже, не добавляет CR/LF в конце. Я не могу сделать метод чтения, чтобы прочитать все, что я ввожу из серийного монитора, ни Picocom.

Я начал видеть это предупреждение LD, если я буду беспокоиться об этом предупреждении?
Timer2.pause(); // stop the timer ... // set timer parameters Timer2.resume(); // let the timer run

Ekawahyu
Пн 23 мая 2016 г., 14:02
@Vassilis: сделаю это сегодня вечером. У меня есть еще одна вещь, чтобы сказать тебе. STM32Cubemx генерирует другой макрос для USB_LP_CAN1_RX0_IRQN. На STM32F0 он называется usb_irqn. Я просто хотел рассказать вам заранее, чтобы мы могли подумать о том, как лучше смягчить эту разницу с #define где -то. Какое ваше лучшее предложение поместить это #define в?

Вассилис
Пн 23 мая 2016 г., 17:56
Экавахю написал:@Vassilis: сделаю это сегодня вечером. У меня есть еще одна вещь, чтобы сказать тебе. STM32Cubemx генерирует другой макрос для USB_LP_CAN1_RX0_IRQN. На STM32F0 он называется usb_irqn. Я просто хотел рассказать вам заранее, чтобы мы могли подумать о том, как лучше смягчить эту разницу с #define где -то. Какое ваше лучшее предложение поместить это #define в?

Вассилис
Ср 25 мая 2016 г., 13:22
Экавахю написал:@Vassilis: сделаю это сегодня вечером. У меня есть еще одна вещь, чтобы сказать тебе. STM32Cubemx генерирует другой макрос для USB_LP_CAN1_RX0_IRQN. На STM32F0 он называется usb_irqn. Я просто хотел рассказать вам заранее, чтобы мы могли подумать о том, как лучше смягчить эту разницу с #define где -то. Какое ваше лучшее предложение поместить это #define в?

Ekawahyu
Ср 25 мая 2016 г., 15:10
Извините за то, что не дал вам обновление, да, обходной путь работает, но я мог видеть, что мой Mac нагревается из -за числа повторных повторений cdc_transmit_fs (). В последний раз, когда я проверял, он может достичь до 50 повторений, прежде чем бросить USBD_OK.

Я планирую периодически звонить в CDC_TRANMIT_FS () с прерыванием таймера или через Systick. Итак, нам нужен буфер передачи, чтобы сделать это. У меня был быстрый тест, просто отправив персонажей, и, казалось, мой Mac был доволен этим :-) Я вижу, что вы прокомментировали какой -то код с TX Buffer там, это работа по отправке данных оптом? Что лучше всего подходит для отправки? Каждые 1 мс, 10 мс? Подключиться к Systick будет самым простым способом сделать это.

Вассилис
Ср 25 мая 2016 г. 16:23
Основная цель состоит в том, чтобы использовать буфер на основе прерываний TX, как и с аппаратными последовательными портами 1-3
Решение, которое я вам дал, временно. Вот почему я еще не отправил пиар. Я работаю над буфером USBERIAL TX.

Rogerclark
Ср. 01 июня 2016 г., 11:45
Ребята

Я говорил с Вассилисом в чате скайпа

И теперь я использую измененную версию кода, чтобы решить проблему отправки USB
Timer2.pause(); Timer2.setPeriod(ServoHome*IndexMax); // in microseconds Timer2.attachInterrupt(0, handler_servos); // channel 0 is the update event Timer2.resume();

Grumpyoldpizza
Ср. 01 июня 2016 12:13
Экавахю написал:USBERIAL проверяется для работы на F072, однако метод Println, похоже, не добавляет CR/LF в конце. Я не могу сделать метод чтения, чтобы прочитать все, что я ввожу из серийного монитора, ни Picocom.

Я начал видеть это предупреждение LD, если я буду беспокоиться об этом предупреждении?
Index = 0;

Ekawahyu
Ср. 01 июня 2016 г., 16:15
Grumpyoldpizza написал:Исправление для этого состоит в том, чтобы выравнивать все соответствующие разделы с соответствующими границами 8 байтов. Я не знаю, как выглядит сценарий LD для HALMX (всегда использовал мои доморощенные целую вечность), но здесь ссылка на то, что работает (вы могли бы перенести ключевые выравнивания на ваши):

https: // github.com/grumpyoldpizza/ardui ... S/Flash.лд

Grumpyoldpizza
Ср. 01 июня 2016 г. 18:54
Экавахю написал:Grumpyoldpizza написал:Исправление для этого состоит в том, чтобы выравнивать все соответствующие разделы с соответствующими границами 8 байтов. Я не знаю, как выглядит сценарий LD для HALMX (всегда использовал мои доморощенные целую вечность), но здесь ссылка на то, что работает (вы могли бы перенести ключевые выравнивания на ваши):

https: // github.com/grumpyoldpizza/ardui ... S/Flash.лд

Ekawahyu
Ср. 01 июня 2016 г., 19:06
Grumpyoldpizza написал:Одна вещь, хотя заставляет меня задуматься. Зачем вам снова и снова регенерировать сценарий ссылки. Я имею в виду, что это довольно статично для данного MCU. Возможно, этот шаг можно было пропустить и для HALMX.

Рик Кимбалл
Ср. 01 июня 2016 г., 19:31
Мой первый опыт дал Cubemx Hal на STM32F103X попытка была облачка .LD Script. Я подумал, что если они не смогут получить сценарий LD правильно, я не должен ничего доверять.

Rogerclark
Ср. 01 июня 2016 г., 21:12
Мы должны исправить несколько файлов после того, как они генерируются кубом.

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

Я также должен был сделать новый .LD -файл, чтобы соответствовать смещению загрузчика 0x2000

И, конечно, мы должны изменить основные.C и, возможно, другие файлы.

Таким образом, мы никогда не сможем просто экспортировать файлы Cube и сделать новое ядро ​​или обновить существующее ядро, без вручную

Ekawahyu
Ср. 01 июня 2016 г., 21:50
Что если мы сделаем это, мы храним исходные библиотеки HAL (в качестве отдельной папки для всех драйверов или библиотек) нетронутыми. Какой бы исходный код нуждался в изменении, мы предоставляем его в папке варианта с одинаковым именем и расширением. Затем сценарий сборки должен сначала найти источник из папки Variant перед получением его от драйверов или библиотек. Это что -то возможное в платформе.текст?

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

Rogerclark
Ср. 01 июня 2016 г. 11:03
Экавахю написал:Что если мы сделаем это, мы храним исходные библиотеки HAL (в качестве отдельной папки для всех драйверов или библиотек) нетронутыми.

Сжимать
Ср. 01 июня 2016 г., 11:20 вечера
Обычно System_stm32f1xx.C - типичный пример, созданный Cubemx (шаблон), и должен быть перемещен вместе с другими источниками проекта в верхних каталогах. /Драйверы /cmsis... Каталог содержит только общие источники и заголовки, связанные с CMSIS, и полностью независимы от конфигурации проекта.
Почти 99% файлов внутри Cubemx устойчивы для конкретной семьи STM32. Обычно файлы в каталоге верхнего проекта генерируются Cubemx.

Rogerclark
Ср. 01 июня 2016 г. 11:36
@slammer

Какие другие файлы обычно перемещаются ?

Можем ли мы безопасно просто удалить сгенерированный куб Verison of System_stm32f1xx.C и используйте один, который мы создаем сами (в другом месте) ?
(Несмотря на то, что еще в этом файле, кажется, что новый выпуск куба может генерировать различный код в System_stm32f1xx.c, так как там много конфигурации)

Rogerclark
Чт, 02 июня 2016 г., 12:12
Ребята,

Я понял, что эта поток пересекается с потоком дорожной карты HAL MX

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

Я собираюсь опубликовать там сейчас, так как нам нужно понять, как справиться с дополнительными режимами PIN -кода, которых нет в основном API Arduino API

я.E, как input_pulldown

Спасибо

Роджер

Стевех
Чт, 02 июня 2016 г., 5:43 утра
Rogerclark написал:Мы должны исправить несколько файлов после того, как они генерируются кубом.

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

Я также должен был сделать новый .LD -файл, чтобы соответствовать смещению загрузчика 0x2000

И, конечно, мы должны изменить основные.C и, возможно, другие файлы.

Таким образом, мы никогда не сможем просто экспортировать файлы Cube и сделать новое ядро ​​или обновить существующее ядро, без вручную

Rogerclark
Чт, 02 июня 2016 г., 6:49
Я имею в виду это
void handler_servos (void) { int i, T1 value; Timer2.pause (); // stop the timer digital write (S [index1], LOW); // current servo index1 if (Index

Ekawahyu
Чт, 02 июня 2016 г., 13:26
Rogerclark написал:Я имею в виду это
#define IndexMax 3 // Anzahl der servos #define ServoMIN 500 // Minimalwert des Servos in usec #define ServoMAX 2500 // Miaximalwert des Servos in usec #define ServoHome 1500 // Mittelwert des Servos in usec #define INTERVAL 20000 // 20ms unsigned int S[]={PB5,PB6,PB7}; // Pins für die Servos; volatile int W[IndexMax]; // Impulswerte der Servos in usec volatile int Index=0; // Zeiger auf Servo/Daten volatile int Index1=0; char fbuffer[256]; void Servo_init(void) { for (uint8_t i=0;i

Ekawahyu
Чт, 02 июня 2016 г., 13:36
ОК, я только что добавил исполнительные файлы DFU-UTIL и сценарии под инструментами, для Windows, Mac и Linux. Двоичные файлы были взяты из:

https: // github.com/arduino/dfu-utils-cr ... ER/Distrib

Я все еще работаю над сценарием DFU_UPLOAD для Windows, но у меня есть какая -то странная проблема со скриптом DFU_UPLOAD для Linux. Он может отправить волшебное слово «1EAF» на серийный порт с «эхо», но он всегда говорит о устройстве или ресурсе, занятых в следующий раз, когда я пытаюсь выполнить это снова. Я должен ждать не менее 40 секунд, прежде чем я смогу нажать кнопку загрузки, чтобы прошить двоичный. Что мне не хватает? Кажется, что я открываю файл/устройство где -то в сценарии, не закрывая его? См. Сценарий ниже. Этот сценарий работает отлично на Mac.
Arduino_STM32/Arduino-1.6.9-r0/arduino-core/src/processing/app/Platform.java: File dataFolder = new File(home, ".arduino169r0");

Ахулл
Чт, 02 июня 2016 г., 13:45
Могут ли команды Echo вести себя по -разному на разных платформах?

Пример... $ ./arduino-1.8.2/hardware/stm32/tools/linux64/stm32flash/stm32flash -b57600 -C /dev/ttyUSB0 stm32flash Arduino_STM32_0.9 http://github.com/rogerclarkmelbourne/arduino_stm32 Interface serial_posix: 57600 8E1 Version : 0x22 Option 1 : 0x00 Option 2 : 0x00 Device ID : 0x0410 (Medium-density) - RAM : 20KiB (512b reserved by bootloader) - Flash : 128KiB (sector size: 4x1024) - Option RAM : 16b - System RAM : 2KiB CRC computation CRC address 0x08020000 (100.00%) Done. CRC(0x08000000-0x08020000) = 0x53ebb014

Grumpyoldpizza
Чт, 02 июня 2016 г. 13:49
Экавахю написал:ОК, я только что добавил исполнительные файлы DFU-UTIL и сценарии под инструментами, для Windows, Mac и Linux. Двоичные файлы были взяты из:

https: // github.com/arduino/dfu-utils-cr ... ER/Distrib

Я все еще работаю над сценарием DFU_UPLOAD для Windows, но у меня есть какая -то странная проблема со скриптом DFU_UPLOAD для Linux. Он может отправить волшебное слово «1EAF» на серийный порт с «эхо», но он всегда говорит о устройстве или ресурсе, занятых в следующий раз, когда я пытаюсь выполнить это снова. Я должен ждать не менее 40 секунд, прежде чем я смогу нажать кнопку загрузки, чтобы прошить двоичный. Что мне не хватает? Кажется, что я открываю файл/устройство где -то в сценарии, не закрывая его? См. Сценарий ниже. Этот сценарий работает отлично на Mac.
uint32_t GetMillis() { return millis() + Offset; }

Rogerclark
Пт, 03 июня 2016 г., 12:02
Экавахю написал:Rogerclark написал:Я имею в виду это
crc = lng

Ekawahyu
Пт, 03 июня 2016 г., 1:40
Rogerclark написал:Я поместил код охраны вокруг определения, код из куба не имеет его :-(

Ekawahyu
Пт, 03 июня 2016 г. 1:55 утра
Grumpyoldpizza написал: Просто очень любопытно здесь. Почему бы не использовать то, что Arduino поддерживает напрямую ? Переключатель на 1200 бод, а затем Deasserting RTS, а затем ожидает 500 мс, чтобы увидеть, забрано ли условие снова. Таким образом, вам не нужно возиться в сценарии DFU-UTIL ...

Следующая проблема с вашим сценарием заключается в том, что «Sleep 1» недостаточно хорош. Я обнаружил, что иногда требуется довольно много времени, пока часть DFU не будет видна после повторного выступления. Логика, которую ядро ​​STM32L4 использует просто ждает до 10 секунд, пока не появится DFU Thingy (пожалуйста, без комментариев по стилю, я просто хотел, чтобы он работал в то время):

Rogerclark
Пт, 03 июня 2016 г., 1:56 утра
Ммм

Это интересно

В файлах F1 нет какого -либо защитного кода.

Я пытаюсь связаться с ST, чтобы выяснить, могут ли они внести некоторые изменения, подобные этому, в куб, так как он выглядит непоследовательно.

Ekawahyu
Пт, 03 июня 2016 г. 2:37 утра
Просто хотела оставить здесь записку, в которой говорилось, что я завершил все сценарии DFU_Upload (и исполнители) для всех трех Windows, Linux и Mac. Партийный сценарий выглядит очень уродливо, но это из -за моего отсутствия знаний в партийных сценариях ;) Все эти сценарии должны работать просто для любого устройства STM32 со встроенным (системной памятью) загрузчика DFU. Однако вы могли бы использовать их со своим пользовательским загрузчиком DFU, но я бы посоветовал вам посмотреть на Maple DFU, который, вероятно, более стабильный.

Все сценарии ожидают увидеть последовательный порт до того, как DFU мигает цель. Он отправляет волшебное слово (1EAF) через последовательный порт и подождите вторую или два, чтобы цель введите режим DFU. Затем исполняемый файл DFU-UTIL вызывается, чтобы вспыхивать цель и оставить режим DFU сразу после этого. Вот и все, и загруженный набросок будет работать до тех пор, пока не будет зафиксировано следующее волшебное слово, и весь процесс повторится.

Rogerclark
Пт, 03 июня 2016 г., 3:02 утра
Re: задержка между сбросом USB и т. Д

Я в основном видел эту проблему на OSX, поэтому я передал параметр задержки в качестве аргумента. (Итак, люди могут изменить это, если это не работает для них)

Но то, как загрузчик должен сбросить USB, является постоянной проблемой.

Я помню, что Leaflabs, сделал это так, из -за проблем на Windows XP с композитными USB -устройствами (где они хотели, чтобы загрузчик был как DFU, так и CDC -последовательным - но он работал только на OSX и Linux)

Проблема составного устройства могла быть исправлена ​​в Windows 7, и я вижу множество устройств E.G Blackmagic Lesess, а также ядра STM STLINK и т. Д., Работая как композитные устройства на окнах без проблем.

Тем не менее, потребуется полная переписать загрузчика и большую модификацию кода Sketch Core, для использования загрузчика как для DFU, так и для CDC Serial.

И... Это не позволило бы использовать HID в эскизе, если только загрузчик также не был скрыт, или, возможно, MIDI, или массовое хранилище и т. Д

Так... Возможно, лучше сбросить USB, когда загрузчик завершен, так что эскиз может быть много разных USB -устройств (в зависимости от того, что пользователь запрограммировал - возможно,)



С помощью загрузчика F103 другим вариантом будет использование последовательного протокола загрузки, а не DFU, так как он уже встроен в IDE.

Я знаю, что @JCW писал новый загрузчик, который использует протокол загрузки AVR (извините, я не могу вспомнить название протокола), но я не думаю, что он закончил, так как его загрузчик работал совершенно по -другому.
Я просто посмотрел на https: // github.com/jeelabs Но я не вижу этого как общественное репо, так что, возможно, это где -то еще или частное репо


Но DFU поддерживается как часть F4 и некоторых других устройств STM32, поэтому, кажется, имеет смысл использовать DFU для всех устройств, так как мы можем иметь общие сценарии загрузчика и утильники

Ахулл
Пт, 03 июня 2016 г., 11:15 утра
Экавахю написал:Grumpyoldpizza написал: Просто очень любопытно здесь. Почему бы не использовать то, что Arduino поддерживает напрямую ? Переключатель на 1200 бод, а затем Deasserting RTS, а затем ожидает 500 мс, чтобы увидеть, забрано ли условие снова. Таким образом, вам не нужно возиться в сценарии DFU-UTIL ...

Следующая проблема с вашим сценарием заключается в том, что «Sleep 1» недостаточно хорош. Я обнаружил, что иногда требуется довольно много времени, пока часть DFU не будет видна после повторного выступления. Логика, которую ядро ​​STM32L4 использует просто ждает до 10 секунд, пока не появится DFU Thingy (пожалуйста, без комментариев по стилю, я просто хотел, чтобы он работал в то время):

Ekawahyu
Пт, 03 июня 2016 г., 13:56
Ахулл написал:У вас установлен Modem Manager? Смотрите здесь -> http: // www.STM32duino.com/viewtopic.PHP ... t = 10#P5935

Grumpyoldpizza
SAT 04 июня 2016 12:24
Экавахю написал:Grumpyoldpizza написал: Просто очень любопытно здесь. Почему бы не использовать то, что Arduino поддерживает напрямую ? Переключатель на 1200 бод, а затем Deasserting RTS, а затем ожидает 500 мс, чтобы увидеть, забрано ли условие снова. Таким образом, вам не нужно возиться в сценарии DFU-UTIL ...

Следующая проблема с вашим сценарием заключается в том, что «Sleep 1» недостаточно хорош. Я обнаружил, что иногда требуется довольно много времени, пока часть DFU не будет видна после повторного выступления. Логика, которую ядро ​​STM32L4 использует просто ждает до 10 секунд, пока не появится DFU Thingy (пожалуйста, без комментариев по стилю, я просто хотел, чтобы он работал в то время):

Grumpyoldpizza
SAT 04 июня 2016 12:31
Rogerclark написал:Re: задержка между сбросом USB и т. Д

Я помню, что Leaflabs, сделал это так, из -за проблем на Windows XP с композитными USB -устройствами (где они хотели, чтобы загрузчик был как DFU, так и CDC -последовательным - но он работал только на OSX и Linux)

Проблема составного устройства могла быть исправлена ​​в Windows 7, и я вижу множество устройств E.G Blackmagic Lesess, а также ядра STM STLINK и т. Д., Работая как композитные устройства на окнах без проблем.

Ekawahyu
Сб, 04 июня 2016 г., 13:30
Grumpyoldpizza написал:Вам не нужен PIN -код RTS с USB/CDC. Существует SET_CONTROL_LINE_STATE, который устанавливает/очищает DTR/RTS. В любом случае, я ошибался в RTS, означал DTR. Ядро для этого прямо:
crc = lng

Rogerclark
Сб, 04 июня 2016 г., 21:08
Вы имеете в виду код сброса CDC Arduino CDC

https: // github.com/arduino/arduino/blob ... Нет/CDC.CPP

Ekawahyu
Пн 13 июня 2016 г., 8:42 вечера
Ахулл написал:У вас установлен Modem Manager? Смотрите здесь -> http: // www.STM32duino.com/viewtopic.PHP ... t = 10#P5935

Ekawahyu
Чт 23 июня 2016 г., 19:22
Я стучал головой о стену, чтобы сделать Serial1 работать. Прерывание Serial1 работает просто отлично, но обработчик никогда не заполняет входящий байт в буфере Serial1. Итак, этот метод чтения в UartClass всегда возвращает -1:
char a; void setup() { Serial.begin(115200); Serial2.begin(115200); //our setup code here, to run once: } void loop() { if(Serial2.available()>0) { a=Serial2.read(); // will check Serial2 recevied data } Serial2.write("HII"); // will send to other serial monitor(in different pc) Serial.println(a); delay(1000); // put your main code here, to run repeatedly: }

Rogerclark
Чт 23 июня 2016 г., 21:22
Возможно, что проблема вызвана ошибкой в ​​MCU.

Существует документ ошибки, который STM публикует для F103, поэтому, возможно, стоит найти его, проверить, указано ли это.

Возможно ли, что этот флаг состояния обновляется непосредственно с помощью аппаратного обеспечения?

Кроме того, поскольку вы используете HAL, вы можете опубликовать на форуме собственной поддержки STMS STMS.
Они обычно дают ответы на этот тип вопроса.

Ekawahyu
Чт 23 июня 2016 г., 22:28
Хороший момент! Я только что проверил лист ошибок, но ничто не упомянуло о проблеме с USART1. Но хорошо знать, что у него есть некоторое ограничение с i2c.

В любом случае, я только что проверил простой проект без Maplemx, и он работает просто отлично. Я до сих пор не понимаю, как это возможно? Есть только hal_uart_receive_it (), называемый один раз в Uartclass :: init (). Может быть, есть и другие методы, которые вызываются и устанавливают этот huart1->Государство, чтобы подготовить состояние?

Rogerclark
Чт 23 июня 2016 г., 11:13
Я бы начал комментировать код приема, чтобы попытаться изолировать, какая его часть вызывает проблему


Похоже, вы используете GDB? Есть ли способ провести точку останова «часы» на этой переменной ?
https: // sourceware.org/gdb/onlinedocs/g ... уинты.HTML

Ekawahyu
Пт 24 июня 2016 г., 6:51
Да, я использую GDB. Я наконец нашел виновника, который установил huart1->Государство, чтобы подготовиться. Это было частью uart1 init, я забыл поместить в serial1 :: init (). Проблема решена! Спасибо за советы!

Следующий выпуск (или, возможно, мне нужно какое-то предложение), STM32F072 имеет полудуплексную функцию в периферийных устройствах UART. Это требует включения/отключения TX/RX одновременно. Итак, перед отправкой данных необходимо переключить линию на режим TX, после этого он должен переключиться в режим RX.

1. Я планирую добавить члена -члена под названием UARTClass._mode, чтобы выбрать его режим, например, Async, Sync, Half-Луплекс, Лин и т. Д. По умолчанию, если эскиз пользователя только настройте Serial1.Begin (Baudrate), _mode будет назначен с асинхронным. Как вы думаете, мы должны предоставить пользователю отдельный метод для его настройки, например, в Serial1.режим (полудуплекс), или мы просто делаем Serial1.Начните (Baudrate, Mode)?

2. Как вы думаете, мы должны позволить пользователю сделать переключение TX/RX из эскиза? Например, Serial1.Switchline (TX), Serial1.Switchline (RX). Или мы должны сделать бесшовный переключатель, так что Serial1 выглядит как нормальная последовательная связь со встроенным автоматическим переключением?

Rogerclark
Пт 24 июня 2016 г., 7:48 утра
Я думаю, что хорошо добавить функции в серийный класс (аппаратный серийный / UART), мы уже делаем это с помощью SPI, с SetModule, поскольку мы должны иметь возможность поддерживать функции, которых у нормальных Arduino не есть ;-)

Я помню, что @grumpoldpizza исследует, как изменить скорость в своей основе, и консенсус заключался в том, что вам нужно назвать сериал.end (), прежде чем вы сможете назвать сериал.Начните (xxxx), чтобы изменить скорость бода.
Поскольку у него были некоторые проблемы с изменением скорости передачи бодов, в то время как последовательное устройство все еще было активным, я.E Я думаю, что ему нужно было деактивировать его, чтобы изменить скорость бодского, отсюда и необходимость вызовать сериал.end () сначала

Так что, возможно, другой вариант - перегрузить и добавить серийный.begin (int rate, int config = default_config, int mode = full_duplex)

Но я ничего не знаю о сериале1.Switchline (TX) и т. Д., Поэтому я не могу посоветовать по этому аспекту.

Ekawahyu
Пт 24 июня 2016 г. 14:05
Я думаю, что нам нужно согласиться с именом, потому что _mode вводит в заблуждение, если вы посмотрите на Uartmodes. Но куб вызывает полумуплекс, асинхронность и т. Д

РЕДАКТИРОВАТЬ: Я думаю, что то, что мы называем uartmodes перечисление, можно переименовать в UartParams, а затем использовать Uartmodes, чтобы соответствовать кубу

Edit2: Каков статус USARTCLASS.развитие CPP? Кажется, что он имеет зависимость от UARTCLASS.час

РЕДАКТИРОВАТЬ3: Пожалуйста, посмотрите на мои изменения здесь: https: // github.com/ekawahyu/halmx_ardui ... Артклос.час

Каково соглашение о переменных и именовании методов? Я вижу _dw как в двойном словом, но что означает префикс r in r_byte? Я могу исправить именование режима, чтобы следовать соглашению

Ekawahyu
Чт 30 июня 2016 г. 8:26 утра
UartClass является окончательным! То, что раньше называлось «режим», было рефакторировано как «Param». Теперь у нас есть параметры (8n1, 8e1 и т. Д.), Режим (полный/половина дуплекса), Ctrl (блокировка/не блокировка TX). По умолчанию, когда пользователь вызывает Serial1.Begin (9600), params = 8n1, mode = полный дуплекс, ctrl = не блокировка.
/* BlinkNcount_BP3 by m. ray burnette Turns on an LED on for one second, then off for one second, repeatedly. Counts and displays the count on the attached serial monitor Example is for Blue Pill, outputs on all 3 serial ports */ int n = 0; void setup() { // initialize the digital pin as an output. pinMode(LED_BUILTIN, OUTPUT); // Initialize virtual COM over USB on bluepill Serial.begin(9600); // BAUD has no effect on USB serial: placeholder for physical UART Serial1.begin(9600); Serial2.begin(9600); // wait for serial monitor to be connected. while (!Serial) { digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN)); // Turn the LED from off to on, or on to off delay(100); // fast blink } Serial.println("Blink LED & count Demo"); } void loop() { digitalWrite(LED_BUILTIN, HIGH); // set the LED on delay(500); // wait for a second digitalWrite(LED_BUILTIN, LOW); // set the LED off // Serial.print("Loop #: "); n++; Serial.print("Serial: ") ; Serial.println(n); Serial1.print("Serial1: ") ; Serial1.println(n); Serial2.print("Serial2: ") ; Serial2.println(n); delay(500); // wait }

Rogerclark
Чт 30 июня 2016 г. 10:37 утра
ХОРОШО

Где вы собираетесь опубликовать свой окончательный код? GitHub ??

Ekawahyu
Чт 30 июня 2016 г. 15:19
Да, я уже вставил изменения в свой GitHub: https: // github.com/ekawahyu/halmx_ardui ... его/Мастер Номер коммита: FDFD040. Дайте мне знать, если UARTClass построен с вашей платформой.

Ekawahyu
Чт 30 июня 2016 г., 8:49 вечера
Вопрос к прикрепленной структуре ниже, есть ли причина, по которой мы используем все члена в качестве uint32_t вместо uint16_t? Это только из -за выравнивания памяти 4 байтов?
#include AccelStepper stepper (1,2,3); void setup() { stepper.setMaxSpeed(1000); stepper.setSpeed(50); } void loop() { stepper.runSpeed(); }

Martinayotte
Чт 30 июня 2016 г., 21:20
Лично я думаю, что это просто из-за устаревшего кода Leaflab, потому что нет никаких причин, что последние 3 участника даже не должны быть uint8_t, поскольку значения никогда не находятся за пределами 0-255.

Rogerclark
Чт 30 июня 2016 г. 22:46
Я согласен с Мартином.

они, вероятно, должны быть изменены на uint8_t

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

Martinayotte
Пт, 01 июля 2016 г. 2:35 утра
... И если есть штраф о скорости использования невыразительного до 32 бит для всей структуры, мы могли бы добавить «uint8_t неиспользован»; Чтобы исправить это, что все еще можно использовать в Future.

Rogerclark
Пт, 01 июля 2016 г., 2:51
Ребята,

Вы можете дважды проверить это. Но я только что изменил рассматриваемый заголовок, и это не имело значения ни для использования оперативной памяти, ни в флэш -ной (пожалуйста, попробуйте это самостоятельно в ядре HAL MX в варианте MX Blue Pill.час

Я не сделал бинарного сравнения кода, но я подозреваю, что его функционально одинаково

Может быть вариант компилятора, который меняет упаковку структуры, но я сомневаюсь, что стоит возиться с.

Re:
uint8_t неиспользован

Я не думаю, что это необходимо, так как уже есть 4 uint8_t ', так что вся структура будет длиной 32 бита, так как я полагаю, что указатель на gpio_typedef будет 32 бита

Martinayotte
Пт, 01 июля 2016 г., 3:17
Rogerclark написал:Я не думаю, что это необходимо, так как уже есть 4 uint8_t ', так что вся структура будет длиной 32 бита, так как я полагаю, что указатель на gpio_typedef будет 32 бита

Ekawahyu
Пт, 01 июля 2016 г., 3:19 утра
Хорошо, я не собираюсь изменять какую -либо существующую объявление участника, давайте сохраним ее как есть. Причина, по которой я спрашиваю об этом, это было потому, что мне нужно было добавить в него одного нового участника. Итак, 32-битный это:
#include #include "stm32f0xx_hal.h" #define SYSMEM_RESET_VECTOR 0x1fffC804 #define RESET_TO_BOOTLOADER_MAGIC_CODE 0xDEADBEEF #define BOOTLOADER_STACK_POINTER 0x20002250 uint32_t dfu_reset_to_bootloader_magic; void __initialize_hardware_early(void) { if (dfu_reset_to_bootloader_magic == RESET_TO_BOOTLOADER_MAGIC_CODE) { void (*bootloader)(void) = (void (*)(void)) (*((uint32_t *) SYSMEM_RESET_VECTOR)); dfu_reset_to_bootloader_magic = 0; __set_MSP(BOOTLOADER_STACK_POINTER); bootloader(); while (42); } else { SystemInit(); } } void dfu_run_bootloader() { dfu_reset_to_bootloader_magic = RESET_TO_BOOTLOADER_MAGIC_CODE; NVIC_SystemReset(); }

Martinayotte
Пт, 01 июля 2016 г., 3:22 утра
«Адбукция» также находится в диапазоне 0-255, поэтому я бы объявил ее "uint8_t" тоже...

Rogerclark
Пт, 01 июля 2016 г. 3:39 утра
Я согласен

Мы можем также объявить их все в правильном размере (UNIT8_T), даже если компилятор решит игнорировать его

(Сценарий худшего случая, что нам теперь нужно пробить еще 3 «неиспользованные» uint8_t vars)

Ekawahyu
Пт, 01 июля 2016 г. 14:56
Хорошо, я попробую. Прямо сейчас я застрял в этом в функции AnalogWrite ():
arm-none-eabi-g++: error: unrecognized command line option '-CC -mcpu=cortex-m3'

Martinayotte
Пт, 01 июля 2016 г., 15:22
Действительно, это кажется частью кода никогда не завершено ... : ugeek:

Ekawahyu
Пт, 8 июля 2016 г., 15:44
Итак, я получил начальный аналог () для работы, но мне нужно немного разъяснения о Map () или MapResolution (). Я вижу, что Map () находится в API ARDUINO, но почему нам нужно иметь MapResolution () в wing_analog.в?

РЕДАКТИРОВАТЬ: О, я понимаю, потому что по умолчанию разрешение записи Arduino 8-битное. Что ж, это приводит меня к следующему вопросу, должны ли мы сохранить частоту ШИМ такой же, как Arduino на 490 Гц или 980 Гц, или мы должны предоставить расширенный API для пользователя, чтобы иметь возможность модифицировать частоту?

Martinayotte
Пт, 8 июля 2016 г., 17:25
Я думаю, что было бы хорошо иметь возможность установить частоту, ESP8266 предоставляет такую ​​функциональность с AnalogWriteFreq ().

Ekawahyu
Пт, 8 июля 2016 г., 11:01 вечера
ОК, AnalogwriteFrecressent () добавлен, но как мне получить новую функцию, выделенную на Arduino IDE?
Снимок экрана 2016-07-08 в 17:58.29.png
Снимок экрана 2016-07-08 в 5.58.29 вечера.PNG (10.95 киб) просмотрено 992 раз

Рик Кимбалл
Сб 9 июля 2016 г., 3:19
Редактировать: $ arduino_install_dir/lib/ключевые слова.текст

$ grep analogwrite ~/github/arduino/build/linux/work/lib/ключевые слова.текст
AnalogwriteFrequence Keyword2 Analogwrite
Analogwrite Keyword2 Analogwrite
Analogwriteresolution Keyword2 Analogwriteresolution

Кстати: Energia (MSP430/Arm Port к чипам Ti) называет его аналогичностью (Гц), и он относится ко всем контактам

http: // форум.43OH.com/тема/4858 ... а/?P = 43233

Ekawahyu
Сб 9 июля 2016 г., 5:18 утра
Спасибо Рик за указатель! Вместо того, чтобы настраивать установку Arduino, я добавил фиктивную библиотеку Arduinostm32 и добавляю там свои ключевые слова. Таким образом, любой улучшенный API может быть выделен, просто добавив ключевое слово в arduinostm32, а не изменяя ключевые слова Arduino установки.

https: // github.com/ekawahyu/halmx_ardui ... /библиотеки

Rogerclark
Солнце 10 июля 2016 г. 3:25 утра
Основные ключевые слова - это то, что следует подниматься в качестве вопроса в учетной записи Arduino IDE Github, или, возможно, в списке рассылки разработчиков IDE разработчиков IDE.

я.e Они могли бы добавить возможность добавлять клавиатуры в каждое третью сторону.

Ekawahyu
Пн 11 июля 2016 г., 6:09
Rogerclark написал:Основные ключевые слова - это то, что следует подниматься в качестве вопроса в учетной записи Arduino IDE Github, или, возможно, в списке рассылки разработчиков IDE разработчиков IDE.

я.e Они могли бы добавить возможность добавлять клавиатуры в каждое третью сторону.

Rogerclark
Пн 11 июля 2016 г., 6:53
Re: Тон

Я думаю, что Leaflabs просто забыли написать это, или, возможно, это не было частью Arduino до версии 1.0

Я помню, что кто -то, возможно, теперь написал код для этого, поэтому попробуйте искать форум E.глин. через сайт Google: STM32Duino.com и посмотрите, сможете ли вы найти их код.

Ekawahyu
Сб 16 июля 2016 г. 3:48 утра
Rogerclark написал:Я помню, что кто -то, возможно, теперь написал код для этого, поэтому попробуйте искать форум E.глин. через сайт Google: STM32Duino.com и посмотрите, сможете ли вы найти их код.

Ekawahyu
Вторник 02 августа 2016 г. 1:50 утра
Я застрял в том, что не смог отправить «1EAF» в пакетном файле. Командная строка "echo 1eaf > Comn ", похоже, не работает на Windows 7. Кто -нибудь знает другую альтернативу командной строки для использования в Windows 7?

Ekawahyu
Вторник 02 августа 2016 г., 17:11
Экавахю написал:Я застрял в том, что не смог отправить «1EAF» в пакетном файле. Командная строка "echo 1eaf > Comn ", похоже, не работает на Windows 7. Кто -нибудь знает другую альтернативу командной строки для использования в Windows 7?

Rogerclark
Вторник 02 августа 2016 г., 21:52
GDB имеет ту же проблему для двухзначных номеров COM -порта и имеет тот же обходной путь