использовал toolchain ARM от SysProgs: http://gnutoolchains.com/download/[/uquote]
Я как-то так с STM32 и дружусь, а меня dosikus за это полил что я дескать не использую какие там еще дебагеры, и вообще проприетарных тулсов делающих неизвестно что и за кучу денег не понакупил. Только я make-файл сделал, с несколькими targets: make clean - стирает хлам, make firmware - билдит прошивку, make flash - шьет через STшный бут. Если прошивки нет - make flash ее сперва сбилдует. А .s файлов у меня нет - все на си. В случае cortex M3 после power up нет системных действий, которые бы реально ассемблер потребовали. Таблицу векторов можно оформить и заполнить на си, обработчик reset - тоже на си. Как максимум немного asm может захотеться для включения-выключения прерываний, но помигать светодиодом можно и без этого.
[uquote="Lublu_megy",url="/forum/viewtopic.php?p=3372319#p3372319"]Тыкните пожалуйста в косяк[/uquote]
может "#define Arduino_UNO" в файлик config.h перенести:
#ifndef CONFIG_H
#define CONFIG_H
#define F_CPU 16000000UL //CPU frequency for all 8-bit arduino
#define Arduino_UNO
...
[uquote="linuxdude",url="/forum/viewtopic.php?p=3372378#p3372378"]А .s файлов у меня нет - все на си[/uquote]
дык там ассеблерный проект, состоящий из одного s файла и одной инструкции. Ассемблерные стартапы находятся в стандартной поставке CMSIS. Тот же SysProgs выпускает плагин VisualGDB, который создает ARMовые проекты с сишным стартапом.
[uquote="linuxdude",url="/forum/viewtopic.php?p=3372378#p3372378"]Как максимум немного asm может захотеться для включения-выключения прерываний, но помигать светодиодом можно и без этого.[/uquote]
Для таких простых вещей ассм не нужен, есть же готовые __enable_irq() и т.п....
[uquote="oleg110592",url="/forum/viewtopic.php?p=3372397#p3372397"][uquote="Lublu_megy",url="/forum/viewtopic.php?p=3372319#p3372319"]Тыкните пожалуйста в косяк[/uquote]
может "#define Arduino_UNO" в файлик config.h перенести:
#ifndef CONFIG_H
#define CONFIG_H
#define F_CPU 16000000UL //CPU frequency for all 8-bit arduino
#define Arduino_UNO
...
[/uquote]
Неее, тогда работоспособность библиотеки потеряется. Там работает так: Если задефайнино Arduino_UNO, то дефайним адреса портов. Если сразу задефайнить всё, то тогда потеряется переносимость библиотеки - она будет работать только с Arduino_Uno (точнее только с платами на atmega328P),а я хочу, чтобы работало со всеми 8-битными платами.
ааааааааааааааааааааааааа็аааааааааааааааааааааааа็аааааааааааааааааааааааа, I love this.ааааааааааааааааааааааааа็аааааааааааааааааааааааа็аааааааааааааааааааааааа
Если не зватает микроконтроллерных портов (например для подключения кучки мигающих светодиодов ) давно используют спец микросхемы расширетелей портов. Китайцы, например, используют PCF8574 для индикаторов 1602. Понадобилось тоже "расширить" порты для STM32 - добавить индикатор. I2C ноги заняты, но SPI свободен, SPI спец микросжемы-расширетели тоже есть, но вспомнил про 74HC595, есть кучка в наличии - как расширитель имхо пойдет. На всякий надо проверить (пока плата изготавливается) - паять макет лень, а Протеус в прошлой реинкарнации этой темы напрямую таким индикатором управлял. Попробуем Протеусом через регистр индикатором поуправлять.
Протеус 8.7 SP3 "научился" сам создавать Keil проекты для STM32 (без запуска среды Keil) - "видит" кейловский ARM компилятор, создает make файл, правда почти все прячет в дебрях файловой системы Виндовс, но найти можно. Для проверки пойдет.
Создаем проект для STM32F103C4. Используем аппаратный SPI, настраивается довольно просто. SPI тут 16-и битный - на шару подключаем второй 74HC595, можно еще 8 светодиодов или типа реле подключить. Для индикатора хватит 6 ног, оставшиеся от регистра 2 ноги используем для светодиодов - один из них, например, это включение подсветки индикатора.
проверочный говнокодик:
Спойлер
Arduino представляет две новых платы IoT — MKR WiFi 1010 (ESP32) и MKR NB 1500 (NB-IoT + eMTC)Спойлер
MKR WIFI 1010 — это усовершенствованная плата MKR1000, оснащенная модулем U-Blox ESP32.
Характеристики:
Спойлер* MCU — Microchip SAMD21 Cortex-M0 + MCU @ 48 МГц с 32 Кб SRAM, флэш-память 256 Кб
* Беспроводное подключение — 2,4 ГГц 802.11 b/g/n WiFi и Bluetooth 4.2 LE через U-blox модуль NINA-W10 Series на базе процессора ESP32.
* I/O
-- 8х цифровых вводов-выводов
-- 12x PWM контактов
-- 1x UART, 1x SPI, 1x I2C
-- 7x аналоговых входа на контакт
-- 1x аналоговый вывод на контакт
-- 8х внешних прерываниq
-- Рабочее напряжение — 3,3 В
-- Постоянный ток на контакт ввода/вывода — 7 мА
* USB — порт micro USB для питания и программирования
* Безопасность — устройство CryptoAuthentication ECC508
* Разное — RTC, светодиоды питания и заряда
* Источник питания
-- 5 В только через разъем USB или VIN
-- Li-Po, 3.7 В, 700 мАч минимум
* Размеры — 61,5 мм x 25 мм
Вторая плата является первой официальной платой Arduino, поддерживающей стандарты сотовой IoT стандарта NB-IoT или eMTC.
Характеристики:
Спойлер* MCU — Microchip SAMD21 Cortex-M0 + MCU @ 48 МГц с 32 Кб SRAM, флэш-память 256 Кб
* Беспроводное подключение — NB-Iot и LTE Cat M1 (eMTC) через модуль U-blox SARA-R410M, разъем Nano SIM-карты
* I / O
-- 22x цифровых ввода-вывода, включая 12x PWM контактов
-- 1x UART, 1x SPI, 1x I2C
-- 7x аналоговых входа на контакт
-- 1x аналоговых выхода на контакт
-- 8х внешних прерываний
-- 1x I2S
-- Рабочее напряжение — 3,3 В
-- Постоянный ток на контакт ввода/вывода — 7 мА
* USB — порт micro USB для питания и программирования
* Разное — RTC, светодиоды питания и заряда
* Источник питания
-- 5В только через разъем USB или VIN
-- Li-Po, 3.7В, 700 мАч минимум
* Размеры — 61,5 мм x 25 мм
Я правильно понял, что присутствующие на этой странице мигают светодиодом исключительно ради того, чтобы он мигал?
То есть если он, светодиод этот, вдруг замигает, то вы будете счастливы? А если не замигает, то соответственно впадете в депрессию?
Или на самом деле все гораздо круче - у кого замигал, тот папка, а у кого нет, тот чайник, лох, дно, чмо и т.д. и т.п. ?
Оранжевые штаны местного рОзлива?
Давайте и я что ли помигаю. Естественно на плюсах под STM32, при помощи таймера и DMA, причем оформлю это все в виде универсального класса, который можно запрятать где-то очень глубоко и чтобы им воспользоваться нужно лишь передать нужный пин, таймер и канал DMA.
[uquote="dosikus",url="/forum/viewtopic.php?p=3379855#p3379855"]код на "регистрах" будет понятней, более читаем , короче и эффективней[/uquote]
не, не очевидно)
[uquote="Мурик",url="/forum/viewtopic.php?p=3379837#p3379837"]Reflector, это не весь код. Нужно было проект выложить со всеми зависимостями. [/uquote]
Что еще нужно было сделать? Весь код есть только у меня и парочки моих товарищей, остальные могут оценить сам подход, хотя скомпилировать такой код все равно мало кто смог бы, для этого нужен gcc 7. Но я могу, опять же для примера, показать в упрощенном виде что находится внутри класса DMA:
Спойлер
то в релизе разницы никакой, в дебаге шаблонная функция тяжелее на 4 байта, это собственно и есть та цена, которую мы платим за простоту и универсальность.
[uquote="Reflector",url="/forum/viewtopic.php?p=3379884#p3379884"]мало кто смог бы, для этого нужен gcc 7[/uquote]
а то такая сложность достать gcc7, ага)
Не удержался, в пиковой теме увидел - человеку надо типа термостат на PIC и DS18B20. Мигаем светодиодом с пользой. Потом может на ARM сделаю.
Создал проект XC8 прямо в Протеусе.
Велосипед не изобретал - 1-вире скопипастил из своего древнего пиковского проекта:
Спойлер
[uquote="arkhnchul",url="/forum/viewtopic.php?p=3380047#p3380047"]а то такая сложность достать gcc7, ага)[/uquote]
Вопрос не в том насколько сложно достать gcc 7, а в том, сколько людей бросится его искать и интегрировать в свои IDE, чтобы запустить мой код