STM32L4 Core

Grumpyoldpizza
Вторник 10 мая 2016 г. 11:49 вечера
Просто поместите первую альфа ядра STM32L4 на GitHub. Возможно, кто -то заинтересован в пересмотре, установке, комментировании или ... на самом деле использование.

Целевое оборудование здесь: https: // www.Тинди.com/продукты/Onehors ... выездной/

Код здесь: https: // github.com/grumpyoldpizza/arduino-stm32l4

Хорошо, что в этом особенное ?

Концепция заключалась в том, чтобы придумать совместимую расписку и программное обеспечение Arduino Zero и программный уровень. На плате есть 16 МБ или вспышка, которая может быть принята из эскиза в качестве обычной локальной файловой системы, в то же время он будет отображаться на хосте через USB/MSC. Приятно, чтобы сказать, по крайней мере,. Общая низкая мощность была основным мотиватором.

Что -то, что всегда беспокоило меня об Ардуино, - это идея блокировки, синхронный io. Большинство вещей, с которыми я сталкиваюсь, действительно сияет с асинхронным IO. Итак, этот порт добавил последовательно асинхронный ввода. Для i2c/провода это выглядит так:
bool transfer(uint8_t address, const uint8_t *txBuffer, size_t txSize, uint8_t *rxBuffer, size_t rxSize, bool stopBit, void(*callback)(uint8_t)); bool done(void); uint8_t status(void);

Werecatf
Ср 11 мая 2016 г. 12:15
Grumpyoldpizza написал:Целевое оборудование здесь: https: // www.Тинди.com/продукты/Onehors ... выездной/

Rogerclark
Ср 11 мая 2016 г. 12:30
Интересный

Откуда файлы CMSIS / Drivers? Куб STM32 ?

Вы написали весь код среднего уровня для взаимодействия с CMSIS

Существует параллельный проект, который работают @sheepdoll и @vassilis, над которым используется куб STM32 для создания нового «ядра», в котором используется HAL

Это ядро ​​поддержало бы STM32L4 (если они экспортируют файлы куба для этой цели)

Но на данный момент он имеет только последовательное устройство USB CDC, и оно будет работать как Libmaple, используя загрузчик для загрузки через DFU, прежде чем он переключается на использование последовательного устройства USB CDC, встроенного в эскиз

Grumpyoldpizza
Ср 11 мая 2016 г., 12:42
Rogerclark написал:Интересный

Откуда файлы CMSIS / Drivers? Куб STM32 ?

Вы написали весь код среднего уровня для взаимодействия с CMSIS

Существует параллельный проект, который работают @sheepdoll и @vassilis, над которым используется куб STM32 для создания нового «ядра», в котором используется HAL

Это ядро ​​поддержало бы STM32L4 (если они экспортируют файлы куба для этой цели)

Rogerclark
Ср 11 мая 2016 г. 1:04
И да, код USB/CDC сбрасывает устройство в режим DFU, который используется для прошивки устройства. Последовательность - это традиционный Arduino, хотя. Ах, есть и SWD, который широко использовался во время разработки. Я думал, что вы использовали режим "массового хранения" для загрузки ?

Grumpyoldpizza
Ср 11 мая 2016 г., 3:41
Rogerclark написал:И да, код USB/CDC сбрасывает устройство в режим DFU, который используется для прошивки устройства. Последовательность - это традиционный Arduino, хотя. Ах, есть и SWD, который широко использовался во время разработки. Я думал, что вы использовали режим "массового хранения" для загрузки ?

Rogerclark
Ср 11 мая 2016 г., 5:42
ХОРОШО

Я не уверен, где у меня появилась идея, что вы использовали массовое хранилище, я думаю, что это был еще один проект ;-)

Я думаю, что новый BBC Micro Bit использует этот метод, но он использует совершенно другой процессор.
И я думаю, что он использует отдельный процессор для загрузки в основной процессор

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

Жаль, что нет серийного последовательного PID CDC VID CDC VID PID, так как большинство систем имеют такого рода драйвера в рамках ОС (это то, что использует Libmaple, но он должен вывести в качестве устройства Leaflabs, что означает мы Придется обмануть окна в загрузку правильного / встроенного драйвера)

Grumpyoldpizza
Ср 11 мая 2016 г., 11:44
Rogerclark написал:ХОРОШО

Я не уверен, где у меня появилась идея, что вы использовали массовое хранилище, я думаю, что это был еще один проект ;-)

Я думаю, что новый BBC Micro Bit использует этот метод, но он использует совершенно другой процессор.
И я думаю, что он использует отдельный процессор для загрузки в основной процессор

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

Рик Кимбалл
Ср 11 мая 2016 г., 17:30
Grumpyoldpizza написал:Просто поместите первую альфа ядра STM32L4 на GitHub. Возможно, кто -то заинтересован в пересмотре, установке, комментировании или ... на самом деле использование.
...
Код здесь: https: // github.com/grumpyoldpizza/arduino-stm32l4

Grumpyoldpizza
Ср 11 мая 2016 г. 18:05
Я только что сделал это в Arduino 1.6.9 (составлено из источника GitHub) на коробке Linux (Ubuntu 15.10) Использование Arduino Arm-None-Eabi-GCC (4.8.3) и, кажется, компилируется. У меня нет настоящего устройства, поэтому я просто нашел на получение сгенерированных .Файл эльфи. Есть несколько предупреждений о компиляции, но он успешно ссылается. Спасибо за проверку. Да, мне нужно выяснить некоторые предупреждения. Системный код должен быть довольно чистым. Я переехал поздно из GCC 4.От 9 до 4.8.3, так что некоторые вещи нуждаются в очистке. Вы видели что -нибудь беспокоящее ?
Я заметил, что сгенерированный бинар довольно большой, около ~ 45 тыс. Это использовало пример. На общей плате F103CX это всего лишь ~ 14K для версии Maple. Конечно, это, вероятно, не имеет значения с доской, у которой 512 тыс. Я не зарегистрировался в размере. Есть пара причин. Одним из них является то, что изображение всегда носит полный USB -стек, включая USB/MSC и Fat Backend вместе с ним. Это еще хуже, когда добавляются GDBStub и RTOS. Но, как вы указали, это не должно иметь большого значения с 512K. Альтернативное решение состоит в том, чтобы постоянно поддерживать какое -то загрузочное изображение, которое содержит все эти функции, но не отжимается каждый раз.
Я заметил, что вы включили вариант -слоу-флаш-дата. Я думал, что у этих чипсов F4 был этот арт -флеш -акселератор, который эффективно делает состояние Flash Zero ожидание? Есть ли преимущество в использовании стиля MOVW/MOVT нагрузки LDR по сравнению с использованием типичной нагрузки из относительной константы ПК? Ах, да, последствия маркетинга ;-) Искусство - это просто код/кэш данных. На STM32L4 это 1024/256 байтов. Запуск на 80 Гц получается с 4 состояниями ожидания с доступом к вспышке, которого нет в кэше. У искусства есть предварительный фишер, который сосает много власти, но не кажется ужасно эффективным. Таким образом, без этой опции «-mslow-flash-data» GCC помещает все литералы в конце функции (или иногда группы функций). Таким образом, большинство из этих буквальных избиратель. Предварительный петхер не предварительно переключать данные, только инструкции. Таким образом, на каждые 64 -битные буквальные данные вы получите 4 цикла удара. С другой стороны, если компилятор излучает Movw/Movt, литералы являются частью конструкционного потока и могут быть эффективно. Хотел бы я записать цифры, когда я сделал анализ.

Не.беременный. STM32F4 отличается. Например, STM32F446 имеет одинаковые размеры кэша, но 128 бидов шириной доступ, и при 80 МГц только 2 состояния ожидания (при 180 МГц все еще 5). Итак, рисунок там есть разные.

Рик Кимбалл
Ср 11 мая 2016 г., 19:12
Grumpyoldpizza написал:Вы видели что -нибудь беспокоящее ?

Рик Кимбалл
Ср 11 мая 2016 г., 19:18
Grumpyoldpizza написал:Но в большой схеме вещей есть и другие приоритеты для этого ядра STM32L4. Следующее UP - GDBStub на основе USB/HID, а затем некоторая разумная поддержка RTOS.

Grumpyoldpizza
Ср 11 мая 2016 г., 19:31
Рик Кимбалл написал:Grumpyoldpizza написал:Вы видели что -нибудь беспокоящее ?

Рик Кимбалл
Ср 11 мая 2016 г., 19:34
"/home/kimballr/.arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-g++" -mcpu=cortex-m4 -mthumb -c -g -Os -Wall -std=gnu++11 -ffunction-sections -fdata-sections -fno-threadsafe-statics -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -MMD -DF_CPU=80000000L -DARDUINO=10609 -DARDUINO_STM32L4_DRAGONFLY -DARDUINO_ARCH_ARDUINO-STM32L4 -DSTM32L476xx -D__FPU_PRESENT=1 -march=armv7e-m -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mabi=aapcs -mslow-flash-data "-I/home/kimballr/Arduino/hardware/grumpy/arduino-STM32L4/system/libstm32l4_dragonfly/CMSIS/Include" "-I/home/kimballr/Arduino/hardware/grumpy/arduino-STM32L4/system/libstm32l4_dragonfly/CMSIS/Device/ST/STM32L4xx/Include" "-I/home/kimballr/Arduino/hardware/grumpy/arduino-STM32L4/system/libstm32l4_dragonfly/USB/HAL/Inc" "-I/home/kimballr/Arduino/hardware/grumpy/arduino-STM32L4/system/libstm32l4_dragonfly/USB/Core/Inc" "-I/home/kimballr/Arduino/hardware/grumpy/arduino-STM32L4/system/libstm32l4_dragonfly/USB/Class/CDC/Inc" "-I/home/kimballr/Arduino/hardware/grumpy/arduino-STM32L4/system/libstm32l4_dragonfly/USB/Class/MSC/Inc" "-I/home/kimballr/Arduino/hardware/grumpy/arduino-STM32L4/system/libstm32l4_dragonfly/USB" "-I/home/kimballr/Arduino/hardware/grumpy/arduino-STM32L4/system/libstm32l4_dragonfly" "-I/home/kimballr/Arduino/hardware/grumpy/arduino-STM32L4/cores/stm32l4" "-I/home/kimballr/Arduino/hardware/grumpy/arduino-STM32L4/variants/dragonfly" "/home/kimballr/Arduino/hardware/grumpy/arduino-STM32L4/cores/stm32l4/Uart.cpp" -o "/tmp/build9b48bf045704f942a14727407c65a0ba.tmp/core/Uart.cpp.o" :0:21: warning: ISO C99 requires whitespace after the macro name [enabled by default]

Rogerclark
Ср 11 мая 2016 г., 19:38
Я не уверен, связан ли это, но двоичные файлы HAL MX Core намного больше, чем двоичные файлы Libmaple, даже до добавления USB.

@Vassilis добавил USB Serial в HAL MX на днях, но у меня не было возможности проверить его или посмотреть на бинарный размер, но я думаю, что это может быть больше, чем 45K

Рик Кимбалл
Ср 11 мая 2016 г., 19:38
Я заметил, что вы используете набор функций, которые называют __atomic... встроенные .. Что это делает для вас, что или и или и флаги?
Пример:

https: // github.com/grumpyoldpizza/ardui ... GPIO.C#L44

Это просто для того, чтобы застраховать безопасность потоков в каком -то будущем выпуске, который поддерживает RTOS?

-рик

Jonr
Ср 11 мая 2016 г., 19:40
Я с нетерпением жду возможности использовать его, как только получу аппаратное обеспечение.

Должен сказать, что я также впечатлен подходом «недооценка, переоснащенной».

Grumpyoldpizza
Ср 11 мая 2016 г., 19:44
Рик Кимбалл написал:Grumpyoldpizza написал:Но в большой схеме вещей есть и другие приоритеты для этого ядра STM32L4. Следующее UP - GDBStub на основе USB/HID, а затем некоторая разумная поддержка RTOS.

Рик Кимбалл
Ср 11 мая 2016 г., 19:48
Grumpyoldpizza написал:Рик Кимбалл написал:Будет ли он полной отладки. Да. Все, что требуется, это USB/HID в TCP/IP-преобразователь (например, агент-Proxy), а затем вы можете подключиться через нормальный GDB.

Grumpyoldpizza
Ср 11 мая 2016 г., 8:51 вечера
Рик Кимбалл написал:Я заметил, что вы используете набор функций, которые называют __atomic... встроенные .. Что это делает для вас, что или и или и флаги?
Пример:

https: // github.com/grumpyoldpizza/ardui ... GPIO.C#L44

Это просто для того, чтобы застраховать безопасность потоков в каком -то будущем выпуске, который поддерживает RTOS?

Grumpyoldpizza
Ср 11 мая 2016 г., 21:03
Rogerclark написал:Я не уверен, связан ли это, но двоичные файлы HAL MX Core намного больше, чем двоичные файлы Libmaple, даже до добавления USB.

@Vassilis добавил USB Serial в HAL MX на днях, но у меня не было возможности проверить его или посмотреть на бинарный размер, но я думаю, что это может быть больше, чем 45K

Grumpyoldpizza
Чт 12 мая 2016 г. 14:12
Grumpyoldpizza написал:Rogerclark написал:Я не уверен, связан ли это, но двоичные файлы HAL MX Core намного больше, чем двоичные файлы Libmaple, даже до добавления USB.

@Vassilis добавил USB Serial в HAL MX на днях, но у меня не было возможности проверить его или посмотреть на бинарный размер, но я думаю, что это может быть больше, чем 45K

Рик Кимбалл
Чт 12 мая 2016 г. 18:19
Частью проблемы размера может быть код из LIBC. Кажется, что вы выбираете некоторые функции из Libc. Если вы посмотрите на эскиз.Ино.Файл карты в /tmp /buildxxxxx он вытягивает код, как memcpy _libc_init_array .. и т. д. из Libc.

У вас есть флаг -nostdlib на флагах c компиляции. Это аргумент LDFLAGS. Если я перенесю его в LDFLAGS на платформе.Файл TXT, он начинает жаловаться на отсутствующие функции ... memcpy, _init, _libc_init_array .. и т. д ..


-рик

Grumpyoldpizza
Чт 12 мая 2016 г. 18:55
Рик Кимбалл написал:Частью проблемы размера может быть код из LIBC. Кажется, что вы выбираете некоторые функции из Libc. Если вы посмотрите на эскиз.Ино.Файл карты в /tmp /buildxxxxx его код вытягивания, как memcpy _libc_init_array .. и т. д. из Libc.

У вас есть флаг -nostdlib на флагах c компиляции. Это аргумент LDFLAGS. Если я перенесю его в LDFLAGS на платформе.Файл TXT, он начинает жаловаться на отсутствующие функции ... memcpy, _init, _libc_init_array .. и т. д ..
-рик

Grumpyoldpizza
Солнце 15 мая 2016 г. 18:08
Grumpyoldpizza написал:Рик Кимбалл написал:Частью проблемы размера может быть код из LIBC. Кажется, что вы выбираете некоторые функции из Libc. Если вы посмотрите на эскиз.Ино.Файл карты в /tmp /buildxxxxx его код вытягивания, как memcpy _libc_init_array .. и т. д. из Libc.

Jonr
Вторник 17 мая 2016 г. 18:50
Любой вход относительно того, какие изменения потребуются для поддержки STM32L476G-Disco? За 20 долларов у этой доски много функций, и я уверен, что некоторые люди предпочитают Arduino над MBED.

Grumpyoldpizza
Ср 18 мая 2016 г. 14:14
Джонр написал:Любой вход относительно того, какие изменения потребуются для поддержки STM32L476G-Disco? За 20 долларов у этой доски много функций, и я уверен, что некоторые люди предпочитают Arduino над MBED.

Grumpyoldpizza
Пт 20 мая 2016 г. 15:45
Grumpyoldpizza написал:Grumpyoldpizza написал:Рик Кимбалл написал:Частью проблемы размера может быть код из LIBC. Кажется, что вы выбираете некоторые функции из Libc. Если вы посмотрите на эскиз.Ино.Файл карты в /tmp /buildxxxxx его код вытягивания, как memcpy _libc_init_array .. и т. д. из Libc.

Grumpyoldpizza
Пт 20 мая 2016 г. 18:36
Ускорение с memcpy/memset. Один из наших альфа -тестеров довольно увлечен этим. Он собрал некоторые цифры, чтобы показать влияние. Ниже дословно то, что он заявил. У меня есть некоторые оговорки о номерах MBed/CC3200, так как эти процессоры не могут сделать это, так что, возможно, код, когда у операций есть проблема. В любом случае, измеряется время, необходимое для копирования или очистки куски памяти 4096.
memory-to-memory DMA vs library memcpy() DUE 84MHz maple 72Mhz teensy 96MHz mbed LPC1768 96mhz ZERO 48MHz CC3200 80MHz STM32L4 80MHz mbed MK64F 120 mhz For the DUE DMA memory-to-memory transfer, we use the 32-byte FIFO channel 5 and ASAP_CFG. We compare the DMA times on the DUE,teensy, and maple with the library memcpy() and memset() and with a for-loop (dst[i] = src[i]) using 1000 32-bit words. memcpy32() is the DMA version. The library memcpy() uses an unrolled (64) loop of word load/store's. The teensy 3.* at 96MHz has a max eDMA SRAM-to-SRAM speed of 192MBs (1536mbs). Times are in microseconds maple DUE teensy 3.1 mbed ZERO CC3200 STM32L4 MK64F loop 269 132 95 94 9 217 461 26 memcpy32 93 31 23 27 9 43 31 69 35 memcpy 62 52 96 50 9 194 15 29 26 memset32 94 34 23 43 19 memset 38 41 51 24 6 12 16 17 DUEling memory copies: In mem2mem2 we used an asynchronous DMA memory transfer of 1024 32-bit words, starting the DMA version then starting the library memcpy. For the maple, the library memcpy() completes first (64us), then the DMA finishes (122us) with total elapsed time of 122us. For the DUE, the DMA copy finishes first (34us), then the memcpy (80us), with total elapsed time of 82us. Both src/dst pairs were in SRAM0. With the memcpy() src/dst pairs in SRAM1, DMA took 33us, and the memcpy took 60us, with elapsed time of 70us. For the teensy 3.0, the DMA finishes first (27us), and then the memcpy (105us), with total elapsed time of 107us. Teensy test used two different destination buffers, but same source buffer (only 16KB RAM on 3.0). For teensy 3.1, DMA finishes first (48us), then memcpy (65us), for total 66us.

Grumpyoldpizza
Ср. 01 июня 2016 г., 4:03
Только что обновил GitHub с другой альфа. Наконец -то подключил много настоящего кода с низкой мощностью.

Если вы запустите пример «Blink» от батареи (не через разъем USB), энергопотребление теперь ниже 7 мА (@ 80 МГц). «Maple» весит около 48 мА (@ 72 МГц) в том же сценарии, а Teensy 3.2 рисунки около 38 мА (@96 МГц).

Также добавлено меню выбора часов, так что 80 МГц, 72 МГц, 64 МГц, 48 МГц, 32 МГц, 24 МГц и 16 МГц можно использовать.

Rogerclark
Ср. 01 июня 2016 г., 4:20 утра
Спасибо

Надеюсь, я смогу получить в свои руки несколько низкопроизводительных устройств и рано или поздно проверить это ядро

Grumpyoldpizza
Ср. 01 июня 2016 г., 11:37
Rogerclark написал:Спасибо

Надеюсь, я смогу получить в свои руки несколько низкопроизводительных устройств и рано или поздно проверить это ядро

Пито
Ср. 01 июня 2016 г. 18:45
Хм, 70UA/MHZ, в это трудно поверить, даже с L4..

Grumpyoldpizza
Ср. 01 июня 2016 г., 19:18
Пито написал:Хм, 70UA/MHZ, в это трудно поверить, даже с L4..

Пито
Ср. 01 июня 2016 г., 19:52
Номера потребления не слишком много, кстати, кстати. Я видел таблицу данных L443 и в режиме запуска, код из вспышки с Art On, цифры находятся где-то между 105-120UA/МГц при 80 МГц с некоторыми синтетическими показателями. С искусством даже 100UA. Впечатляющие цифры действительно..
Есть продавцы MCU, которые довольны 500UA/MHZ..

Grumpyoldpizza
Ср. 01 июня 2016 г., 8:05 вечера
Пито написал:Номера потребления не слишком много, кстати, кстати. Я видел таблицу данных L443 и в режиме запуска, код из вспышки с Art On, цифры находятся где-то между 105-120UA/МГц при 80 МГц с некоторыми синтетическими показателями. С искусством даже 100UA. Впечатляющие цифры действительно..

Стевех
Чт, 02 июня 2016 г., 2:09
Супер простое сохранение власти...

Когда вашей программе нечего делать или ничего не делать до следующего прерывания, просто
__Wfi;

Спит процессор до следующего прерывания, чаще всего это Systick 1 кГц, используемый в большинстве систем. Но может быть любое прерывание.

http: // Infocenter.рука.com/help/index.младший ... 26427.HTML

Grumpyoldpizza
Чт, 02 июня 2016 г., 13:42
Стевех написал:Супер простое сохранение власти...

Когда вашей программе нечего делать или ничего не делать до следующего прерывания, просто
__Wfi;

Спит процессор до следующего прерывания, чаще всего это Systick 1 кГц, используемый в большинстве систем. Но может быть любое прерывание.

http: // Infocenter.рука.com/help/index.младший ... 26427.HTML

маниту
Вторник 07 июня 2016 г., 22:27
Я проходил некоторое тестирование стрекозы на Ubuntu 14.04. Слой Томаса Ардуино хорошо работает. Я вызвал от 0.0.От 1 до 0.0.8 на сегодняшний день. У меня есть некоторые наброски и переживания в отношении подтверждения концепции

https: // github.com/manitou48/stm32l4

Стевех
Ср. 08 июня 2016 г. 2:00 утра
Все, что нужно, это заставить толпу, ориентированную на AVR Arduino Dev, увидеть мудрость использования прерываний.

Grumpyoldpizza
Ср. 08 июня 2016 12:45
Стевех написал:Все, что нужно, это заставить толпу, ориентированную на AVR Arduino Dev, увидеть мудрость использования прерываний.

Mrburnette
Ср. 08 июня 2016 г. 14:06
Стевех написал:Все, что нужно, это заставить толпу, ориентированную на AVR Arduino Dev, увидеть мудрость использования прерываний.

Grumpyoldpizza
Ср. 08 июня 2016 г., 15:38
Mrburnette написал:Стевех написал:Все, что нужно, это заставить толпу, ориентированную на AVR Arduino Dev, увидеть мудрость использования прерываний.

Mrburnette
Ср. 08 июня 2016 г., 16:45
Grumpyoldpizza написал: <...>
Интересные комментарии.
<...>

Стевех
Ср. 08 июня 2016 г. 8:05 вечера
Не означает «лучший путь». Но Гиш, Ардиино потребовалось годы, чтобы получить UART I/O, чтобы использовать прерывания и буфер. Между тем, ополленицы студентов/любителей были озадачены тем, почему печатные заявления застряли в цикле долгое время.

Grumpyoldpizza
Ср. 08 июня 2016 г., 21:03
Стевех написал:Не означает «лучший путь». Но Гиш, Ардиино потребовалось годы, чтобы получить UART I/O, чтобы использовать прерывания и буфер. Между тем, ополленицы студентов/любителей были озадачены тем, почему печатные заявления застряли в цикле долгое время.

Стевех
Ср. 08 июня 2016 г. 22:11
Grumpyoldpizza написал:Стевех написал:Не означает «лучший путь». Но Гиш, Ардиино потребовалось годы, чтобы получить UART I/O, чтобы использовать прерывания и буфер. Между тем, ополленицы студентов/любителей были озадачены тем, почему печатные заявления застряли в цикле долгое время.

Grumpyoldpizza
Чт, 09 июня 2016 г. 14:15
Стевех написал:Grumpyoldpizza написал:Стевех написал:Не означает «лучший путь». Но Гиш, Ардиино потребовалось годы, чтобы получить UART I/O, чтобы использовать прерывания и буфер. Между тем, ополленицы студентов/любителей были озадачены тем, почему печатные заявления застряли в цикле долгое время.

Стевех
Чт, 09 июня 2016 г., 22:48
Приоритет прерывания абонента выше, чем у UART ISR. Они пытаются позволить ISR использовать Print ()? Я никогда не видел такого дела. Правило 1 в ISRS, вы знаете.

Grumpyoldpizza
Чт, 09 июня 2016 г., 23:29
Стевех написал:Приоритет прерывания абонента выше, чем у UART ISR. Они пытаются позволить ISR использовать Print ()? Я никогда не видел такого дела. Правило 1 в ISRS, вы знаете.

Стевех
Пт 10 июня 2016 г. 1:59
Isr no-no.

Вы также можете сделать (i = 0 до бесконечности) в ISR.

Сумасшедший.

Grumpyoldpizza
Пт 10 июня 2016 г. 12:26
Стевех написал:Isr no-no.

Вы также можете сделать (i = 0 до бесконечности) в ISR.

Сумасшедший.

Стевех
Пт 10 июня 2016 г. 15:57
Grumpyoldpizza написал:Стевех написал:Isr no-no.

Вы также можете сделать (i = 0 до бесконечности) в ISR.

Сумасшедший.

Рик Кимбалл
Пт 10 июня 2016 г., 16:25
Стевех написал:...
Ломает много вещей, вызывая библиотеки, связанные с печати из ISR. Такие как код библиотеки, не являющегося рецентров.
Ардуино-Лэнд-единственное место, где я видел попытку сделать это, и это наивно.

Стевех
Пт 10 июня 2016 г., 16:51
Рик Кимбалл написал:Стевех написал:...
Ломает много вещей, вызывая библиотеки, связанные с печати из ISR. Такие как код библиотеки, не являющегося рецентров.
Ардуино-Лэнд-единственное место, где я видел попытку сделать это, и это наивно.

Рик Кимбалл
Пт 10 июня 2016 г., 18:54
Стевех написал:Но ISR не может назвать неревентранную библиотеку, как и большинство функций C, которые являются основаниями.
Есть причина, по которой это никогда не было сделано в реальной жизни.

Рик Кимбалл
Пт 10 июня 2016 г., 8:23 вечера
Одна вещь, которая мне действительно нравится в этом ядре, это то, что он действительно чистый. Единственное предупреждение, которое я сейчас вижу, - это это в ядрах/STM32L4/проводка.C:
/home/kimballr/Arduino/hardware/grumpy/STM32L4/cores/stm32l4/wiring.c: In function 'HardFault_Handler': /home/kimballr/Arduino/hardware/grumpy/STM32L4/cores/stm32l4/wiring.c:34:2: warning: implicit declaration of function 'OTG_FS_IRQHandler' [-Wimplicit-function-declaration] OTG_FS_IRQHandler(); ^

Grumpyoldpizza
Пт 10 июня 2016 г., 21:24
Рик Кимбалл написал:Одна вещь, которая мне действительно нравится в этом ядре, это то, что он действительно чистый. Единственное предупреждение, которое я сейчас вижу, - это это в ядрах/STM32L4/проводка.C:
/home/kimballr/Arduino/hardware/grumpy/STM32L4/cores/stm32l4/wiring.c: In function 'HardFault_Handler': /home/kimballr/Arduino/hardware/grumpy/STM32L4/cores/stm32l4/wiring.c:34:2: warning: implicit declaration of function 'OTG_FS_IRQHandler' [-Wimplicit-function-declaration] OTG_FS_IRQHandler(); ^

Grumpyoldpizza
Пт 10 июня 2016 г., 21:31
Стевех написал:Grumpyoldpizza написал:Стевех написал:Isr no-no.

Вы также можете сделать (i = 0 до бесконечности) в ISR.

Сумасшедший.

Стевех
Пт 10 июня 2016 г., 21:38
Это просто не работает. Вы можете хотеть, чтобы ISRS назвал неревентанные библиотеки, но по дизайну это недействительно.

Mrburnette
SAT 11 июня 2016 г. 12:39
Grumpyoldpizza написал: <...>
Давайте вернемся к тому, почему люди используют Arduino. Они понятия не имеют, но хотят что -то сделать. Им нужно экспериментировать и учиться. Вы учитесь лучше всего из совершения ошибок.

Grumpyoldpizza
SAT 11 июня 2016 г., 11:56 утра
Mrburnette написал:Grumpyoldpizza написал: <...>
Давайте вернемся к тому, почему люди используют Arduino. Они понятия не имеют, но хотят что -то сделать. Им нужно экспериментировать и учиться. Вы учитесь лучше всего из совершения ошибок.

Mrburnette
SAT 11 июня 2016 г. 14:05
Фрагментация неизбежна, и при просмотре с высокой высоты больше сродни эволюции. Поскольку среда Arduino была разработана для предоставления полезной микропроцессорной платформы для некомпьютерной группы, компьютерная группа немедленно интересовалась и начала применять более традиционные принципы информатики: такое давление заставило постепенные изменения, а Arduino IDE и ядра развивались, чтобы включить более широкие Диапазон вариантов UC. По мере роста концепции она стала как ребенок, поглощающий как от родителей, так и от внешних влияний.

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

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

Луча

Пито
Солнце 12 июня 2016 г., 10:24 утра
Святой Грааль ИТ -индустрии - Omnipotentuino.. :ржу не могу:

ZMEMW16
Солнце 12 июня 2016 г., 10:52
:ржу не могу: :ржу не могу: :ржу не могу: :ржу не могу: :ржу не могу:

Grumpyoldpizza
Вт 14 июня 2016 г. 2:49
Просто поставь 0.0.11 несколько часов назад. В отслеживании Flash/SRAM1/SRAM2 была критическая ошибка DMA, которая ускользнула от тестирования.

Grumpyoldpizza
Пн 18 июля 2016 г., 16:38
Grumpyoldpizza написал:Просто поставь 0.0.11 несколько часов назад. В отслеживании Flash/SRAM1/SRAM2 была критическая ошибка DMA, которая ускользнула от тестирования.

inaba_nl
Пн 18 июля 2016 г., 8:22 вечера
Не беспокойтесь, просто убедитесь, что вы не переутомляете себя :)


Кроме того, я поместил это на странице GitHub о внешнем хранении Flash STM32 (просто не уверен, будет ли это работать)

in the linker script there needs to be: EXTFLASH (rw) : ORIGIN = 0x, LENGTH = 0x in the MEMORY section, and the SECTIONS needs to have: .external_flash : { *(.External_Flash*); } > EXTFLASH now we can start to have fun with adding code to the qspi flash. to make it easy, use this define in the sketch: #define EXTERNAL_MEM __attribute__((section("External_Flash"))) and usage can look like this: EXTERNAL_MEM void external_loop() { while (1) { //blink led forever digitalWrite(13,LOW); delay(500); digitalWrite(13,HIGH); delay(500); } }

Рик Кимбалл
Пн 18 июля 2016 г., 8:54 вечера
inaba_nl написал:.. Кроме того, я едва могу подождать, пока не поддержится RTOS (мое предпочтение: Freertos) ..

Радждардж
Вт 19 июля 2016 г. 1:21
Итак, я только что купил несколько из них у Тинди.
Я ожидал изображенного супер-капаситора (я думаю, что это было). Это не значащее, что это не было, но это действительно отняло немного блеска от продукта.
К сожалению, я один из тех, у кого нет «нет подсказки» с работой на полную ставку в другой области. Так что время это препятствие.
Однако меня не пугают от недостатка времени.
Я хотел бы знать, есть ли где -нибудь форум, посвященный этому устройству, и руководство QuickStart или что -то в этом роде.
Я использовал Teensy 3.1 и 3.2, поскольку у меня есть несколько из них. Но я полагаю, я бы хотел вступить в это и сделать мой проект... без необходимости задумываться с ошибкой.
Радж

Grumpyoldpizza
Вт 19 июля 2016 г., 11:42 утра
inaba_nl написал:Не беспокойтесь, просто убедитесь, что вы не переутомляете себя :)


Кроме того, я поместил это на странице GitHub о внешнем хранении Flash STM32 (просто не уверен, будет ли это работать)

in the linker script there needs to be: EXTFLASH (rw) : ORIGIN = 0x, LENGTH = 0x in the MEMORY section, and the SECTIONS needs to have: .external_flash : { *(.External_Flash*); } > EXTFLASH now we can start to have fun with adding code to the qspi flash. to make it easy, use this define in the sketch: #define EXTERNAL_MEM __attribute__((section("External_Flash"))) and usage can look like this: EXTERNAL_MEM void external_loop() { while (1) { //blink led forever digitalWrite(13,LOW); delay(500); digitalWrite(13,HIGH); delay(500); } }

Grumpyoldpizza
Вт 19 июля 2016 г., 11:48
Рик Кимбалл написал:inaba_nl написал:.. Кроме того, я едва могу подождать, пока не поддержится RTOS (мое предпочтение: Freertos) ..

Grumpyoldpizza
Вт 19 июля 2016 г. 11:52 утра
Радждардж написал:Итак, я только что купил несколько из них у Тинди.
Я ожидал изображенного супер-капаситора (я думаю, что это было). Это не значащее, что это не было, но это действительно отняло немного блеска от продукта.
К сожалению, я один из тех, у кого нет «нет подсказки» с работой на полную ставку в другой области. Так что время это препятствие.
Однако меня не пугают от недостатка времени.
Я хотел бы знать, есть ли где -нибудь форум, посвященный этому устройству, и руководство QuickStart или что -то в этом роде.
Я использовал Teensy 3.1 и 3.2, поскольку у меня есть несколько из них. Но я полагаю, я бы хотел вступить в это и сделать мой проект... без необходимости задумываться с ошибкой.
Радж

Grumpyoldpizza
Sun 24 июля 2016 г., 21:51
0.0.14 только что загружены. Исправляет проблему записи VFAT LFN. Dosfs генерируют незаконные записи LFN ...

inaba_nl
Пн 25 июля 2016 г. 18:33
Grumpyoldpizza написал: uthe qspi flash настроена как жирная файловая система, а не как флэш -экстендер. Есть множество причин сделать это. Если нормальная вспышка 512 тыс.

Grumpyoldpizza
Пн 25 июля 2016 г., 19:13
inaba_nl написал:Grumpyoldpizza написал: uthe qspi flash настроена как жирная файловая система, а не как флэш -экстендер. Есть множество причин сделать это. Если нормальная вспышка 512 тыс.

inaba_nl
Вторник 26 июля 2016 г., 21:03
1: Пользовательский IDE с указателями на функции API (ядро MCU позволит MPU, который будет включен ограничить оперативную память и доступ приложения), с предварительно скомпилированным приложением, мигающим по USB RAW HID, Bluetooth или из MicroSD (?).

2: Итак, в основном вы говорите, что умные часы Pebble имеют большую задержку? Я думаю, что нет, они хорошо соответствуют своей цели и используют тот же подход, что и я. : P

Вот документ об этом для устройств STM32, имеющих эту функцию (включая STM32L4)
http: // www.ул.com/content/ccc/resource/ ... m = авто, 100

Ахулл
Вторник 26 июля 2016 г. 22:08
Не могли бы вы использовать DMA для загрузки блоков с внешней вспышки? Таким образом, ваша задержка была бы значительно уменьшена.

Grumpyoldpizza
Вторник 26 июля 2016 г. 22:20
inaba_nl написал:2: Итак, в основном вы говорите, что умные часы Pebble имеют большую задержку? Я думаю, что нет, они хорошо соответствуют своей цели и используют тот же подход, что и я. : P

inaba_nl
Сб 10 сентября 2016 г. 22:35
Извините за поздний ответ ^^;

Вы сказали, что платформа открыта? Если так, почему не загрузчик? (просто вопрос)

Grumpyoldpizza
Вторник 13 сентября 2016 12:02
inaba_nl написал:Извините за поздний ответ ^^;

Вы сказали, что платформа открыта? Если так, почему не загрузчик? (просто вопрос)

Grumpyoldpizza
Чт 15 сентября 2016 г., 11:49
Grumpyoldpizza написал:inaba_nl написал:Извините за поздний ответ ^^;

Вы сказали, что платформа открыта? Если так, почему не загрузчик? (просто вопрос)

inaba_nl
Вторник 27 сентября 2016 г. 12:10
Grumpyoldpizza написал:Grumpyoldpizza написал:inaba_nl написал:Извините за поздний ответ ^^;

Вы сказали, что платформа открыта? Если так, почему не загрузчик? (просто вопрос)

Rogerclark
Вторник 27 сентября 2016 г. 12:50 утра
inaba_nl написал: Но мой завод по созданию часов на основе платформы все еще существует :)

Grumpyoldpizza
Вторник 27 сентября 2016 г., 15:54
Rogerclark написал:inaba_nl написал: Но мой завод по созданию часов на основе платформы все еще существует :)

Rogerclark
Вторник 27 сентября 2016 г., 8:48 вечера
Я не уверен, какие серьезные ограничения у NRF51.

Кольцевая скорость низкая по сравнению с современными устройствами ARM, так как она работает только на скорости 16 МГц, но она получила 32K RAM (в версии QFAC), что больше, чем Bluepill и т. Д., И имеет 256K Flash (в версиях QFAA и QFAC. ).

Для тех, кто в настоящее время использует аппаратное обеспечение AVR, NRF51 - значительно лучшее устройство.

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

Цена также хороша на NRF51, вероятно, поскольку теперь она не является флагманским устройством для скандинавского, поэтому нагрузка больше китайских производителей переключается на него вместо CC2541.

Таким образом, на рынок появляется более взломанные устройства NRF51, что является отличной новостью для сообщества Maker и Arduino

Grumpyoldpizza
Вторник 27 сентября 2016 г., 21:49
Rogerclark написал:Я не уверен, какие серьезные ограничения у NRF51.

Кольцевая скорость низкая по сравнению с современными устройствами ARM, так как она работает только на скорости 16 МГц, но она получила 32K RAM (в версии QFAC), что больше, чем Bluepill и т. Д., И имеет 256K Flash (в версиях QFAA и QFAC. ).

Для тех, кто в настоящее время использует аппаратное обеспечение AVR, NRF51 - значительно лучшее устройство.

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

Цена также хороша на NRF51, вероятно, поскольку теперь она не является флагманским устройством для скандинавского, поэтому нагрузка больше китайских производителей переключается на него вместо CC2541.

Таким образом, на рынок появляется более взломанные устройства NRF51, что является отличной новостью для сообщества Maker и Arduino

Rogerclark
Вторник 27 сентября 2016 11:27
Grumpyoldpizza написал: Насколько я понимаю, для ядра M0 в NRF51 Systick не был реализован. Это заставило бы вас использовать одну из периферийных устройств RTC, отключенной 32768 Гц. Так что большая часть стандартного кода Cortex-M0 не будет работать так легко. Куча подобных деталей, которые выходят из других продуктов Cortex-M0.

Grumpyoldpizza
Ср 28 сентября 2016 г., 11:31
Rogerclark написал: На самом деле я хочу запустить его из кристалла 32 кГц, так как я хочу запустить все устройство в режиме низкой мощности большую часть времени, и я думаю, что в этом режиме он фактически запускает весь процессор из кристалла 32 кГц, а не 16 МГц

К счастью, большинство устройств NRF51, которые у меня есть, содержат 32 кГц, как будто они этого не делают калибровать себя каждые несколько секунд. (Хотя этот параметр может быть изменен на более короткую или более длительную продолжительность)

Rogerclark
Ср 28 сентября 2016 г., 21:55
Интересный.

Я купил небольшой модуль NRF51 у немецкого продавца на eBay, и он прибыл вчера.
Но у меня не было времени даже припаять в него крошечные провода.

КСТАТИ. Если вы играете с NRF52, я слышал, что первая версия устройства имеет ряд ошибок в его кремнии.
Для этого есть работы, но это причина, почему в настоящее время я купил только один NRF52, поскольку я не мог подтвердить номер ревизии (как это внутри металлического корпуса на печатной плате)

Grumpyoldpizza
Чт 29 сентября 2016 г., 3:10
Rogerclark написал:Интересный.

Я купил небольшой модуль NRF51 у немецкого продавца на eBay, и он прибыл вчера.
Но у меня не было времени даже припаять в него крошечные провода.

КСТАТИ. Если вы играете с NRF52, я слышал, что первая версия устройства имеет ряд ошибок в его кремнии.
Для этого есть работы, но это причина, почему в настоящее время я купил только один NRF52, поскольку я не мог подтвердить номер ревизии (как это внутри металлического корпуса на печатной плате)

Rogerclark
Чт 29 сентября 2016 г., 4:18
Спасибо.

Я знаю, что были обходны для большинства ошибок.

Не связано напрямую, но я также обнаружил в NRF51, что версии QFAA с изменениями H, не будут работать с V2.0.x из S130 Softdevice.
Это означает, что я не могу использовать некоторые из моих старых досок с SDK V11 или SDK V12. Следовательно, я придерживаюсь SDK10 для обозримого будущего.

Я не совсем уверен, что изменилось в кремние.

Grumpyoldpizza
Пт 28 октября 2016 г., 11:52 вечера
Быстрое обновление статуса.

Было добавлено много новых тактовых частот:

1 МГц & Диапазон 2 МГц 2, lprun
4 МГц, 8 МГц, 16 МГц & Диапазон 24 МГц 2
32 МГц, 48 МГц, 64 МГц, 72 МГц & Диапазон 80 МГц 1

Если USB подключен, плата не будет ниже 16 МГц, чтобы поддерживать работу USB. Добавлен программист, который позволяет прямые загрузки через Stlink, чтобы можно было протестировать режимы низкой мощности. Я думаю, что 16 МГц сейчас около 2.2ma для печально известного примера "Mlink".

Был добавлен новый класс RTC. По сути, совместимый с RTCZERO, но также позволяет контролировать синхронизацию с другим мастером времени и тонкую калибровку времени.

Ах и предварительная поддержка Nucleo-L476 была добавлена.

(Для предстоящих досок происходит много переоборудования...)

Олли
Пт, 04 ноября 2016 г., 18:41
На этой неделе я получил свой нуклео-L432KC от Mouser ($ 10.33). Защита ESD в упаковке была ошеломляющей. Теперь мне интересно, если кто -нибудь из вас повредил свою доску и как это произошло? Исходя из этого, есть ли у вас практические намеки на снижение риска. Кажется, что часто мне лень использовать группу WRITS : oops:

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

Ура, Олли

Ахулл
Сб 05 ноября 2016 г. 12:27
Олли написал:....
Защита ESD в упаковке была ошеломляющей. Теперь мне интересно, если кто -нибудь из вас повредил свою доску и как это произошло?
...

Grumpyoldpizza
Солнце 06 ноября 2016 12:29
Олли написал:На этой неделе я получил свой нуклео-L432KC от Mouser ($ 10.33). Защита ESD в упаковке была ошеломляющей. Теперь мне интересно, если кто -нибудь из вас повредил свою доску и как это произошло? Исходя из этого, есть ли у вас практические намеки на снижение риска. Кажется, что часто мне лень использовать группу WRITS : oops:

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

Ура, Олли

Олли
Солнце 06 ноября 2016 г. 16:47
Это хороший комментарий. Функция низкой мощности будет доступна с божьей коровкой и аналогичными компактными ядрами устройствами.

Ура, Олли

Grumpyoldpizza
Солнце 06 ноября 2016 г., 21:13
Олли написал:Это хороший комментарий. Функция низкой мощности будет доступна с божьей коровкой и аналогичными компактными ядрами устройствами.

Ура, Олли

Adrien3d
Чт 24 ноября 2016 г., 5:05
Привет,

Я купил ucleo-l476rg, и я попытался расслабиться https: // github.com/grumpyoldpizza/arduino-stm32l4 в папке аппаратной помощи в моей папке Arduino.
Я на macOS 10.12.1 и Arduino 1.6.13, но я ничего не вижу в разделе платы.

У вас есть идеи о том, как это исправить ?

Спасибо

Rogerclark
Чт 24 ноября 2016 г., 5:37 утра
Вы только что расстегнули на звание всех файлов непосредственно в аппаратную папку. Если это так, вам нужно сделать папку с именем STM32L4 и переместить файлы в эту папку, а затем перезапустите IDE. (Поскольку IDE поддерживает несколько сторонних ядер, и каждый должен быть в своей папке под папкой аппаратной обеспечения)

Grumpyoldpizza
Чт 24 ноября 2016 г., 12:36
Rogerclark написал:Вы только что расстегнули на звание всех файлов непосредственно в аппаратную папку. Если это так, вам нужно сделать папку с именем STM32L4 и переместить файлы в эту папку, а затем перезапустите IDE. (Поскольку IDE поддерживает несколько сторонних ядер, и каждый должен быть в своей папке под папкой аппаратной обеспечения)

Grumpyoldpizza
Ср 21 декабря 2016 г. 15:37
Grumpyoldpizza написал:Rogerclark написал:Вы только что расстегнули на звание всех файлов непосредственно в аппаратную папку. Если это так, вам нужно сделать папку с именем STM32L4 и переместить файлы в эту папку, а затем перезапустите IDE. (Поскольку IDE поддерживает несколько сторонних ядер, и каждый должен быть в своей папке под папкой аппаратной обеспечения)

Grumpyoldpizza
Сб 14 января 2017 г. 5:20 утра
Быстрое обновление. Добавлена ​​поддержка SDCARD через SDIO и SPI для божьей коровки/бабочки/Dragonfly.

Также для Nucleo-L476RG SDIO выставлен на выводах PC8/PC9/PC10/PC11/PC12/PD2, а также SDCARD через SPI на PC10/PC11/PD2/PD2.

Код будет работать с большинством плат прорыва, у которых нет подтягиваний на CS/DAT3. SDIO - это немного, так как кабель может иметь неблагоприятный эффект.

SPI получает около 2.3 МБ/сек, SDIO со скоростью по умолчанию (чтение 24 МГц) составляет примерно 11 МБ/с, а SDIO с высокой скоростью (чтение 48 МГц) Получите около 22 МБ/с. Ставки записи отличаются от карты к карте, хотя. Карта класса 10 не получит более 10 МБ/с ...

Поддержка USB теперь настраивается, так что CDC или CDC+MSC (или нет) можно выбрать.

- Томас

Юкелин
Вторник 17 января 2017 г. 13:08
Привет, я новичок в STM32Duino

Во -первых, спасибо за вашу работу, это делает STM32 в мире Arduino World!

Вот проблема, с которой я сталкиваюсь:

Сериал.print () работает хорошо, но сериал.read () не вернул никакого ответа, пока я отправляю данные

Любой может помочь, пожалуйста, извините за глупый вопрос

Руководство
Вт 17 января 2017 г. 11:07
Извините, но я не могу найти файл JSON для установки пакета.
Не могли бы вы, пожалуйста, дать правильный путь, который будет добавлен в предпочтениях Arduino?
Большое спасибо и Ciao из Италии

Grumpyoldpizza
Ср 18 января 2017 г. 22:26
Руководство написано:Извините, но я не могу найти файл JSON для установки пакета.
Не могли бы вы, пожалуйста, дать правильный путь, который будет добавлен в предпочтениях Arduino?
Большое спасибо и Ciao из Италии

Руководство
Ср 18 января 2017 г. 11:42
Спасибо за быстрый ответ!
Я пробовал ручную установку, но не повезло... (Arduino 1.8.0 на W10-64)
С наилучшими пожеланиями
Гвидо

Grumpyoldpizza
Чт 19 января 2017 г. 12:22
Руководство написано:Спасибо за быстрый ответ!
Я пробовал ручную установку, но не повезло... (Arduino 1.8.0 на W10-64)
С наилучшими пожеланиями
Гвидо

Руководство
Сб 21 января 2017 г. 1:06
Я извлек ваши файлы в C: \ users \ guido \ appdata \ local \ arduino15 \ Packages (где другие пакеты, такие как ESP8266, Attinycore и т. Д. проживать), но в меню Arduino не показаны доски STM32L4...
В какой папке я должен извлечь ваши файлы?
Спасибо
Гвидо

Grumpyoldpizza
Сб 21 января 2017 г. 16:20
Grumpyoldpizza написал:Руководство написано:Спасибо за быстрый ответ!
Я пробовал ручную установку, но не повезло... (Arduino 1.8.0 на W10-64)
С наилучшими пожеланиями
Гвидо

Grumpyoldpizza
Сб 21 января 2017 г., 19:39
Grumpyoldpizza написал:Grumpyoldpizza написал:Руководство написано:Спасибо за быстрый ответ!
Я пробовал ручную установку, но не повезло... (Arduino 1.8.0 на W10-64)
С наилучшими пожеланиями
Гвидо

Руководство
Солнце 22 января 2017 г. 12:40
Это сработало сразу и безупречно с моим нуклео-L432KC
Недурно!
Большое спасибо и Ciao из Италии
Гвидо

inaba_nl
Сб 25 февраля 2017 г., 19:45
Эй, я вернулся через некоторое время, задаваясь вопросом, будет ли STM32L496 в будущем когда -нибудь : P

Он имеет меньше потребления мощности UA/MHZ (320K), больше SRAM и больше вспышки (до 1 МБ)

Кроме того, есть ли у кого -нибудь пример того, как поместить флэш -IC в режим XIP (или аналогичный), как говорит таблица данных, также дает некоторое объяснение, но я вообще не могу понять это..

Во всяком случае, продолжайте!

gato_
Пн, 03 апреля 2017 г. 10:32 утра
Он подключен USB, но USB_VBUS подключен в ту сторону, поэтому вам нужно связываться с приповкой Бригд. Можете ли вы уточнить это? Я бы очень хотел поработать на платформе L476, и я не против раздать, скажем, ЖК -дисплей. Какие корректировки потребуются для использования STM32L476GDiscovery? Спасибо

Grumpyoldpizza
Пн, 03 апреля 2017 г., 16:08
gato_ написал: Он подключен USB, но USB_VBUS подключен в ту сторону, поэтому вам нужно связываться с приповкой Бригд. Можете ли вы уточнить это? Я бы очень хотел поработать на платформе L476, и я не против раздать, скажем, ЖК -дисплей. Какие корректировки потребуются для использования STM32L476GDiscovery? Спасибо

Grumpyoldpizza
Пн, 03 апреля 2017 г., 16:12
inaba_nl написал:Эй, я вернулся через некоторое время, задаваясь вопросом, будет ли STM32L496 в будущем когда -нибудь : P

Он имеет меньше потребления мощности UA/MHZ (320K), больше SRAM и больше вспышки (до 1 МБ)

Кроме того, есть ли у кого -нибудь пример того, как поместить флэш -IC в режим XIP (или аналогичный), как говорит таблица данных, также дает некоторое объяснение, но я вообще не могу понять это..

Во всяком случае, продолжайте!

gato_
Вт 04 апреля 2017 г. 6:36
Grumpyoldpizza написал:gato_ написал: Он подключен USB, но USB_VBUS подключен в ту сторону, поэтому вам нужно связываться с приповкой Бригд. Можете ли вы уточнить это? Я бы очень хотел поработать на платформе L476, и я не против раздать, скажем, ЖК -дисплей. Какие корректировки потребуются для использования STM32L476GDiscovery? Спасибо

Grumpyoldpizza
Вт, 04 апреля 2017 г. 13:37
gato_ написал:Grumpyoldpizza написал:gato_ написал: Можете ли вы уточнить это? Я бы очень хотел поработать на платформе L476, и я не против раздать, скажем, ЖК -дисплей. Какие корректировки потребуются для использования STM32L476GDiscovery? Спасибо

Умежопа
Пт 28 апреля 2017 г., 8:46 вечера
Я положил L433 на чертеж и запускаю его в качестве бабочки L433, и он работает. Су спасибо за всю работу.
Изменить доску.TXT для загрузки с ST-Link-V2 в качестве HADE, чтобы переместить перемычку для загрузки, чтобы получить загрузку DFU.
Теперь я только название порта Ex PC13 для светодиода есть ли какой -нибудь план, чтобы иметь имя порта и название PIN -кода, как мы имеем на F103 Bluepill ?
Я могу wright #define PC13 39 // PC13 ER LED и SOO, чтобы заставить мою старую программу работать.
Если я буду больше аналогов в том, как изменить вариант файла.CPP для этого ? SOO, я получаю все 10 A/D, что аппаратная поддержка.
Ex pa2, который имеет A/D, но не настраивается
{Gpioa, gpio_pin_mask (gpio_pin_pa2), gpio_pin_pa2_tim2_ch3, (pin_attr_pwm | pin_attr_exti | pin_attr_wkup4), pwm_instance_tim2, pwm_channel_3, adc_input_none},
Для PA4, который настроен/D, это так, как это
{Gpioa, gpio_pin_mask (gpio_pin_pa4), gpio_pin_pa4, (pin_attr_adc | pin_attr_dac | pin_attr_exti), pwm_instance_none, pwm_channel_none, adc_input_9},

Джонас

Grumpyoldpizza
Чт, 04 мая 2017 г., 17:45
Умежопа написал:Я положил L433 на чертеж и запускаю его в качестве бабочки L433, и он работает. Су спасибо за всю работу.
Изменить доску.TXT для загрузки с ST-Link-V2 в качестве HADE, чтобы переместить перемычку для загрузки, чтобы получить загрузку DFU.
Теперь я только название порта Ex PC13 для светодиода есть ли какой -нибудь план, чтобы иметь имя порта и название PIN -кода, как мы имеем на F103 Bluepill ?
Я могу wright #define PC13 39 // PC13 ER LED и SOO, чтобы заставить мою старую программу работать.
Если я буду больше аналогов в том, как изменить вариант файла.CPP для этого ? SOO, я получаю все 10 A/D, что аппаратная поддержка.
Ex pa2, который имеет A/D, но не настраивается
{Gpioa, gpio_pin_mask (gpio_pin_pa2), gpio_pin_pa2_tim2_ch3, (pin_attr_pwm | pin_attr_exti | pin_attr_wkup4), pwm_instance_tim2, pwm_channel_3, adc_input_none},
Для PA4, который настроен/D, это так, как это
{Gpioa, gpio_pin_mask (gpio_pin_pa4), gpio_pin_pa4, (pin_attr_adc | pin_attr_dac | pin_attr_exti), pwm_instance_none, pwm_channel_none, adc_input_9},

Джонас

Умежопа
Пт 5 мая 2017 г. 5:39 утра
Спасибо, попробуйте изменить настройку A/D.
Моя проблема с DFU может быть, что аппаратное обеспечение чертежа является отличным. Я сделал только ST DFU, обученный компьютером, поэтому отправился в ST-Link.
Не получайте USBERIAL для работы, но я думаю, что это только компьютерная проблема, так как Serial1 работает над ПИИ Адаберте.
Это какой -то драйвер USB, который отсутствует или неправильно.

Джонас

Grumpyoldpizza
Солнце 07 мая 2017 г. 12:13
Умежопа написал:Спасибо, попробуйте изменить настройку A/D.
Моя проблема с DFU может быть, что аппаратное обеспечение чертежа является отличным. Я сделал только ST DFU, обученный компьютером, поэтому отправился в ST-Link.
Не получайте USBERIAL для работы, но я думаю, что это только компьютерная проблема, так как Serial1 работает над ПИИ Адаберте.
Это какой -то драйвер USB, который отсутствует или неправильно.

Джонас

gato_
Чт, 07 сентября 2017 г. 9:18 утра
Я наконец решил сделать пользовательскую доску на основе STM32L476. После изменения файла вариантов мне удалось сделать почти все для работы, но была проблема. Моя доска должна быть подсистемой более крупной. Таким образом, он общается через I2C, как раб. Нет проблем, когда Мастер пишет на доску, но есть проблемы с проводом.requestPhrom () от мастера, который замораживает ожидание ответа. При нахождении я думал, что это может быть из -за различных процессоров, общающихся с помощью I2C, но затем я сделал две доски STM32 и уменьшил частоту от неудачи следующего эскиза:
ВЛАДЕЛЕЦ #include void setup() { Wire.begin(); // join i2c bus (address optional for master) Serial.begin(9600); // start serial for output } void loop() { Serial.println("\n a: "); Wire.requestFrom(3, 1); //while (!Wire.available()){;} uint8_t c = Wire.read(); Serial.print(c,HEX); //} delay(500); }

gato_
Чт, 07 сентября 2017 г., 11:24 утра
хорошо. Отследил его, чтобы функционировать Twowire :: write (), линия 175 из провода.CPP:
size_t TwoWire::write(uint8_t data) { /* if (!_tx_active) { return 0; } */ if (_tx_write >= BUFFER_LENGTH) { return 0; } _tx_data[_tx_write++] = data; return 1; }

Grumpyoldpizza
Пт. 08 сентября 2017 12:15
[gato_ - Четверг 07, 2017 11:24 утра] - хорошо. Отследил его, чтобы функционировать Twowire :: write (), линия 175 из провода.CPP:
size_t TwoWire::write(uint8_t data) { /* if (!_tx_active) { return 0; } */ if (_tx_write >= BUFFER_LENGTH) { return 0; } _tx_data[_tx_write++] = data; return 1; }

Grumpyoldpizza
Пт, 08 сентября 2017 12:17
[gato_ - Чт, 07 сентября 2017 г. 9:18 утра] -
Рабские приложения всегда отправляют 0. Я проверил это с помощью логического анализатора
Изображение
Это вторая ошибка. Раб I2S должен отправлять наки.

gato_
Пт, 08 сентября 2017 г. 13:28
Есть еще. Комментируя эту строку, только что исправил пример 1 байта. Попытка отправить несколько, это снова замораживает....
Хорошо. Я думаю, что посмотрю на реализацию i2c

Grumpyoldpizza
Пт, сентябрь 08, 2017, 14:09
[gato_ - Пт, сентябрь 08, 2017 13:28] - Есть еще. Комментируя эту строку, только что исправил пример 1 байта. Попытка отправить несколько, это снова замораживает....
Хорошо. Я думаю, что посмотрю на реализацию i2c
Похоже, я куда -нибудь потерпел логику вдоль линии. OnRequest () также должен сбросить буфер TX ...

Grumpyoldpizza
Сб 16 сентября 2017 г. 13:21
[Grumpyoldpizza - Пт, сентябрь 08, 2017 14:09] -
[gato_ - Пт, сентябрь 08, 2017 13:28] - Есть еще. Комментируя эту строку, только что исправил пример 1 байта. Попытка отправить несколько, это снова замораживает....
Хорошо. Я думаю, что посмотрю на реализацию i2c
Похоже, я куда -нибудь потерпел логику вдоль линии. OnRequest () также должен сбросить буфер TX ...
Мне нужно переработать некоторые из проводов.Код CPP для подчиненного режима будет совместим с Arduino Zero. На полпути, который.

На onrequest () Arduino Zero Core предполагает, что вы заполняете буфер данных, один раз. Если основные запрашивают больше данных, чем предварительно установлен Arduino Zero отправляет 0xff Bytes. Arduino avr отправляет правильный наки. Опять же, нет пополнения буфера TX. Arduino Zero имеет класс Ringbuffer размером 64 байта, Arduino Avr как 32 байтовый буфер. Соответствующая логика _tx_active активна, в то время как весь раб TX продолжается. Следовательно, можно добавить байты в теории во время всей передачи (плюс тонна условий гонки). Код Arduino AVR предполагает, что вы записываете все данные после вызова OnRequest (). Они делают это встроенным без буфера и, следовательно, блокируют ISR. Таким образом, в этом ядре невозможно написать вне обратного вызова OnRequest ().

Onreceive () несколько сложнее, кажется,. Arduino Avr фактически имеет промежуточный буфер, в котором он считывает данные, и только после завершения этой операции данные копируются в буфере RX. Это означает, что вы можете прочитать данные немного дольше. Arduino Zero просто зревает старый буфер ... Teensy for Kinetis следует той же логике, что и Arduino Zero ...

Для STM32L4 была предпринята попытка разрешить сегментированную передачу/прием. Думаю, мне нужно изменить это на модель Arduino Zero, чтобы быть одним выстрелом, и NACK на буферном нижнем потоке/переполнение.

gato_
Вторник 19 сентября 2017 г. 9:57 утра
На самом деле, вызов onreceive (), похоже, не имеет никаких проблем. И у меня есть некоторые сомнения в том, что происходит с Onrequest () One. Вы используете любую среду для проверки регистров? Если так, какой? Какие булавки используются для отладки? Спасибо. В противном случае ядро ​​отличное

Grumpyoldpizza
Вторник 19 сентября 2017 г. 14:08
[gato_ - Вторник 19 сентября 2017 г. 9:57 утра] - На самом деле, вызов onreceive (), похоже, не имеет никаких проблем. И у меня есть некоторые сомнения в том, что происходит с Onrequest () One. Вы используете любую среду для проверки регистров? Если так, какой? Какие булавки используются для отладки? Спасибо. В противном случае ядро ​​отличное
Для отладки я использую GDB/Stlink. Скомпилируйте эскиз, а затем загрузите его через GDB/Stlink.

Я думаю, что с вашим открытием _tx_active код должен работать в основном, как и все другие реализации (будь то хорошо или плохо, я не знаю). На самом деле есть только 2 проблемы, которые необходимо решить (опять же, чтобы быть совместимым). Одним из них является отправка последовательности фиктивных данных в обратный вызов OnRequest (), если запрашивается больше данных, чем буферизации с первого обратного вызова OnRequest (). А другой - отправить NACK, если сверстник отправляет больше данных, чем можно буферизировать для одного обратного вызова OnReCeive () ... Если у вас есть настройка кода, чтобы эти условия не были достигнуты, все будет в порядке.

Имхо, реальная проблема - сам API (AVR и Samd Cores). Если у вас есть обратный вызов OnRequest (), вам нужно заполнить все данные, которые, по вашему мнению, могут быть прочитаны, до размера буфера (который составляет 32 байта для AVR). Обратный вызов больше не будет вызван. И что еще хуже, нельзя сказать, сколько байтов было перенесено на сверстников.

gato_
Вт 24 октября 2017 г. 8:35 утра
Курсер и куризер. И разочаровывает.
Мне удалось сделать пример запроса от работы, при определенных условиях:

-Устройство рабов должно быть включено перед главным устройством и последовательным терминалом. В этих условиях Мастер (COM8) делает запрос, и раб (COM3) отвечает на него
Изображение
-Если серийный терминал раба закрыт, то мастер остается на статусе master_receive (7) навсегда....
Изображение

Так... USB -серийные прерывания влияют/ изменяют прерывания I2C?

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

Grumpyoldpizza
Вт 24 октября 2017 г. 15:07
Вы синхронизировали последний код на GitHub ? Я просто хочу исключить возможность того, где что -то уже исправлено, особенно USB -серий.

gato_
Ср 25 октября 2017 г. 9:05
Что ж, это показывает как самый новый в менеджере по доскам. Версия 0.0.26

gato_
Ср 25 октября 2017 г. 9:40
Не старался даже создавать следование серийного объекта в рабыне. он никогда не отвечает на запрос i2c. Любые прерывания, которые не могут быть инициализированы, если не вызван серийный объект?
РЕДАКТИРОВАТЬ: Хорошо, так что просто создание объекта в рабу (сериал.begin ()) не исправляет вещи. Оказывается, я вставил несколько печатных заявлений в TwoWire :: EventCallback Funtion. Видимо, это проблема задержки. Время, потраченное на печать вещей в некоторые конкретные моменты, дает достаточно времени, чтобы закончить другие вещи...

ZMEMW16
Ср 25 октября 2017 г. 11:15
Типично, я добавил отпечатки, чтобы отлаживать проблему, и она работает - трюизм :?:
: D

gato_
Ср 25 октября 2017 г. 11:30
Ну, вот что я пробовал до сих пор:

Вставьте это в печатные операторы int the EventCallback, i2c_event_transmit_request case:
if (events & I2C_EVENT_TRANSMIT_REQUEST) { _tx_write = 0; if(_requestCallback) { (*_requestCallback)(); } for (int i=0;i<_tx_write;i++){Serial.print(_tx_data[i]);Serial.print(" ");} Serial.println(); stm32l4_i2c_service(_i2c, &_tx_data[0], _tx_write); Serial.println(_i2c->I2C->ISR&I2C_ISR_TXE); }

Grumpyoldpizza
Ср 25 октября 2017 г. 12:41
Мне очень нравится диаграмма ;-) Нужно прислать мне больший образ этого ;-)

На самом деле это довольно тривиально (кроме периферических флагов миллиарда I2C). Обработчик прерывания - это простая машина состояния:

I2c_state_ready
I2c_state_slave_receive
I2c_state_slave_transmit
I2c_state_master_restart
I2c_state_master_receive
I2c_state_master_transmit

В i2C_STATE_READY ADDRA. Код, который обрабатывает это в STM32L4_I2C_SLAVE_ADDRESS_MATCH (), обнаруживая, какой адрес и в каком направлении движется передача. Это запускает i2c_event_transmit_request / i2c_event_receive_request на слой провода для подачи данных, которые будут записаны, или буфер, где данные считывания могут быть помещены в. В любом случае, машина состояния переключается на i2s_state_slave_receive или i2s_state_transmit. Для получения части, следующая ISR будет либо иметь новые данные (запускает A I2C_EVENT_RECEIVE_REQUEST - это буфер заполнен), либо I2C_EVENT_RECEIVE_DONE - это остановка или условие перезапуска. I2C_STATE_MASTER_TRANSMITMIT похож, за исключением того, что первая остановка/перезапуск обнаруживается ...

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

Код провода теперь просто обрабатывает I2C_EVENT_RECEIVE_DONE, I2C_EVENT_RECEIVE_REQUEST и I2C_EVENT_TRANSIT_REQUEST для подачи буфера считывания или передачи данных в буфере записи. Код не является на 100% совместим с arduino Zero, так как есть только один кусок чтения/записи, а переполнение в буфере чтения просто игнорируется (данные сбрасываются), а для записи 0xff байты отправляются (так что нет сегментирования ...)

Grumpyoldpizza
Ср 25 октября 2017 г. 12:42
[gato_ - Ср 25 октября 2017 г. 9:05] - Что ж, это показывает как самый новый в менеджере по доскам. Версия 0.0.26
Менеджер совета директоров не обновлен, я считаю. Есть какой -то экспериментальный код на GitHub.

gato_
Пт 10 ноября 2017 г. 11:17
Наконец -то у меня было время настроить инструмент отладки в Eclipse. Любой совет о том, как эффективно преобразовать эскиз в проект Eclipse? Это было бы полезно

gato_
Пт 15 декабря 2017 г. 11:27
Ну, научился правильно отлаживать с OpenCD и DBG :). Я публикую то, что узнал до сих пор.
Во -первых, мне пришлось деактивировать растяжение часов, так как неполная транзакция висила систему. выполненный код это: #include const int N=6; byte buffer[N]; void setup() { for (int i=0;i

gato_
Пт 15 декабря 2017 г. 11:54
Неа. Очистить флаги вручную рабыни OVR, NACKF и Stopf. Подпрограмма error_interrup. И все же, результат такой же. Так что это должна быть логика, которая сообщает, когда прекратить передачу. Я проверю это

Aonsquared
Пн, 18 декабря 2017 г. 10:38 утра
Привет gato_,

Не могли бы вы поделиться тем, как вы превратили свой эскиз в проект Eclipse с отладкой OpenOCD? Я тоже использую это ядро.

с уважением,
Артур

gato_
Вторник 09 января 2018 10:47
Я этого не сделал. Я использовал OpenOCD+GDB с файлом ELF

Grumpyoldpizza
Ср 10 января 2018 г. 13:21
[gato_ - Пт 15 декабря 2017 г. 11:27] - Ну, научился правильно отлаживать с OpenCD и DBG :). Я публикую то, что узнал до сих пор.
Во -первых, мне пришлось деактивировать растяжение часов, так как неполная транзакция висила систему. выполненный код это:
Требуется растяжение часов. В противном случае проволока1.Обратный вызов onrequest () не имеет времени внести данные.
#include const int N=6; byte buffer[N]; void setup() { for (int i=0;i

Mgeo
Солнце 21 января 2018 г. 15:01
Привет,

Очень хорошая работа над этим ядром, я впечатлен. Я все еще работаю на 15 страницах постов здесь и изучаю код, чтобы ознакомиться. Я познакомился с этим ядром через интересную работу Hackflight здесь https: // github.com/simondlevy/chackfligh ... Мастер/SRC

Я заинтересован в том, чтобы скользить простого детерминированного планировщика, вызванного временем под контроллером полета на основе STM32L4 в качестве учебного упражнения. Мне интересно, есть ли (и поиск, если) есть механизм для вставки обратного вызова или обработчика Systick в этом ядре (аналогично обсуждению здесь ViewTopic.PHP?t = 2117)? Я использую нуклео-L432KC для моего теста. Приносим извинения заранее, если ответ очевиден, большая часть моего происхождения была AVR, и я все еще поднимаюсь на кривую обучения рук/CMSIS.

Я играл вокруг этого с на основе ядра на основе ST HAL, используя hal_systick_callback () (Отсюда ViewTopic.PHP?t = 2542). Но я предпочитаю философию дизайна этого ядра по сравнению с Сент -Хэл.

С наилучшими пожеланиями,
Джордж

Grumpyoldpizza
Пн 22 января 2018 г. 15:30
[Mgeo - Солнце 21 января 2018 г. 15:01] - Привет,

Очень хорошая работа над этим ядром, я впечатлен. Я все еще работаю на 15 страницах постов здесь и изучаю код, чтобы ознакомиться. Я познакомился с этим ядром через интересную работу Hackflight здесь https: // github.com/simondlevy/chackfligh ... Мастер/SRC

Я заинтересован в том, чтобы скользить простого детерминированного планировщика, вызванного временем под контроллером полета на основе STM32L4 в качестве учебного упражнения. Мне интересно, есть ли (и поиск, если) есть механизм для вставки обратного вызова или обработчика Systick в этом ядре (аналогично обсуждению здесь ViewTopic.PHP?t = 2117)? Я использую нуклео-L432KC для моего теста. Приносим извинения заранее, если ответ очевиден, большая часть моего происхождения была AVR, и я все еще поднимаюсь на кривую обучения рук/CMSIS.

Я играл вокруг этого с на основе ядра на основе ST HAL, используя hal_systick_callback () (Отсюда ViewTopic.PHP?t = 2542). Но я предпочитаю философию дизайна этого ядра по сравнению с Сент -Хэл.

С наилучшими пожеланиями,
Джордж
Да, есть ... Но это не часть класса Arduino (пока):
typedef struct _armv7m_timer_t armv7m_timer_t; typedef void (*armv7m_timer_callback_t)(armv7m_timer_t *timer); struct _armv7m_timer_t { armv7m_timer_t *next; armv7m_timer_t *previous; volatile armv7m_timer_callback_t callback; uint32_t remaining; }; #define ARMV7M_TIMER_INIT(_callback,_timeout) { NULL, NULL, (_callback), (_timeout) } extern void armv7m_timer_create(armv7m_timer_t *timer, armv7m_timer_callback_t callback); extern bool armv7m_timer_start(armv7m_timer_t *timer, uint32_t timeout); extern bool armv7m_timer_stop(armv7m_timer_t *timer);

Mgeo
Вт 23 января 2018 г. 11:29
Хорошо, спасибо, пытаюсь следовать за тобой.

Я вижу, есть armv7m_systick_notify () в Armv7m.c, смогу ли я зарегистрировать свой собственный обратный вызов через эту функцию, с context = null? Или лучше настроить объект таймера для этого?
void armv7m_systick_notify(armv7m_systick_callback_t callback, void *context) { armv7m_systick_control.callback = NULL; armv7m_systick_control.context = context; armv7m_systick_control.callback = callback; }

Grumpyoldpizza
Вторник 23 января 2018 г. 16:52
[Mgeo - Вторник 23 января 2018 г. 11:29] - Хорошо, спасибо, пытаюсь следовать за тобой.

Я вижу, есть armv7m_systick_notify () в Armv7m.c, смогу ли я зарегистрировать свой собственный обратный вызов через эту функцию, с context = null? Или лучше настроить объект таймера для этого?
void armv7m_systick_notify(armv7m_systick_callback_t callback, void *context) { armv7m_systick_control.callback = NULL; armv7m_systick_control.context = context; armv7m_systick_control.callback = callback; }

Mgeo
Вт 30 января 2018 г. 11:00
Хорошо, я буду просить прощения, не следовать указаниям... :).

Я более или менее следую философии дизайна этого https: // www.Safetty.net/скачать/pont_e ... Xtract.PDF

Для этого высокопоставленного кооперативного планировщика планировщика с высокой честностью я хотел бы зацепить Systick и быть в курсе любых прерываний с более высоким приоритетом, которые могут мешать времени задачи. Итак, понимание основной работы является частью моего учебного упражнения здесь. Последствия, похоже, работают, как и ожидалось, очень круто:
/* GrumpyOldPizza L4 Core on NUCLEO-L432KC board. Test to hook SysTick, incremeent a counter in SysTick callback, toogle LED on for one second, then off for one second, repeatedly. */ // Pin 13 has an LED connected on most Arduino boards int led = 13; volatile bool oneSecFlag = false; volatile int16_t oneSecCount = 0; // the setup routine runs once when you press reset: void setup() { Serial.begin(115200); delay(1000); Serial.println("Setting up..."); // initialize the digital pin as an output. pinMode(led, OUTPUT); //armv7m_systick_notify(L4_SYSTICK_Callback, NULL); armv7m_systick_notify( (armv7m_systick_callback_t)L4_SYSTICK_Callback, NULL); } // the loop routine runs over and over again forever: void loop() { if (oneSecFlag == true) { Serial.println("One Second Event has occured, clearing oneSecFlag"); oneSecFlag = false; digitalWrite(led, !digitalRead(led)); } Serial.print("oneSecCount = "); Serial.println(oneSecCount); delay(100); } armv7m_systick_callback_t L4_SYSTICK_Callback(void) { oneSecCount++; if (oneSecCount >= 1000) { oneSecFlag = true; oneSecCount = 0; } }

Grumpyoldpizza
Вторник 30 января 2018 г. 15:37
[Mgeo - Вторник 30 января 2018 г. 11:00] - Хорошо, я буду просить прощения, не следовать указаниям... :).

Я более или менее следую философии дизайна этого https: // www.Safetty.net/скачать/pont_e ... Xtract.PDF

Для этого высокопоставленного кооперативного планировщика планировщика с высокой честностью я хотел бы зацепить Systick и быть в курсе любых прерываний с более высоким приоритетом, которые могут мешать времени задачи. Итак, понимание основной работы является частью моего учебного упражнения здесь. Последствия, похоже, работают, как и ожидалось, очень круто:
/* GrumpyOldPizza L4 Core on NUCLEO-L432KC board. Test to hook SysTick, incremeent a counter in SysTick callback, toogle LED on for one second, then off for one second, repeatedly. */ // Pin 13 has an LED connected on most Arduino boards int led = 13; volatile bool oneSecFlag = false; volatile int16_t oneSecCount = 0; // the setup routine runs once when you press reset: void setup() { Serial.begin(115200); delay(1000); Serial.println("Setting up..."); // initialize the digital pin as an output. pinMode(led, OUTPUT); //armv7m_systick_notify(L4_SYSTICK_Callback, NULL); armv7m_systick_notify( (armv7m_systick_callback_t)L4_SYSTICK_Callback, NULL); } // the loop routine runs over and over again forever: void loop() { if (oneSecFlag == true) { Serial.println("One Second Event has occured, clearing oneSecFlag"); oneSecFlag = false; digitalWrite(led, !digitalRead(led)); } Serial.print("oneSecCount = "); Serial.println(oneSecCount); delay(100); } armv7m_systick_callback_t L4_SYSTICK_Callback(void) { oneSecCount++; if (oneSecCount >= 1000) { oneSecFlag = true; oneSecCount = 0; } }

Hutthenut
Вт, 03 апреля 2018 г., 17:01
Всем привет,

Обновив IDE соответственно с инструкцией
https: // github.com/grumpyoldpizza/arduino-stm32l4

И запустить пример
https: // github.com/grumpyoldpizza/ardui ... /Simplectc

Мне интересно, есть ли способ создать сборник RTC LIB с досками пакетов STM32DUIN STM32duino (особенно F4 и L4)..?

С наилучшими пожеланиями,
Откровенный

ошибка micros ()??