Shodan8192
Пн, сентябрь 03, 2018 12:31
У меня есть черные таблетки Robotdyn с SSD1306 OLED, прикрепленным к I2C1 с правильными подтягиваниями.
Я использую последние версии загрузчика, файлов arduino_stm32 и немодифицированных Adafruit GFX и SSD1306.
Следующий код, снятый до минимума:
Я использую последние версии загрузчика, файлов arduino_stm32 и немодифицированных Adafruit GFX и SSD1306.
Следующий код, снятый до минимума:
// RTC and NVRam initialisation
#include
RTClock rt (RTCSEL_LSI); // initialise RTC
#define TZ "UTC+1"
time_t tt;
//time_t tt1;
char weekday1[][7] = {"Nie", "Pon", "Wto", "Sro", "Czw", "Pia", "Sob"}; // 0,1,2,3,4,5,6
//char weekday1[][7] = {"Niedzi", "Ponied", "Wtorek", "Sroda", "Czwart", "Piatek", "Sobota"}; // 0,1,2,3,4,5,6
#include
OLED myOLED(6, 7, 8); //SDA = 6, SCL = 7, RESET = 8 Niepodłaczone
extern uint8_t SmallFont[];
//extern uint8_t MediumNumbers[];
extern uint8_t BigNumbers[];
//extern uint8_t Standard5x7[];
#define LED_PIN LED_BUILTIN
// This function is called in the attachSecondsInterrpt
void blink ()
{
digitalWrite(LED_PIN,!digitalRead(LED_PIN));
}
void setup()
{
myOLED.begin();
myOLED.setFont(SmallFont);
//myOLED.setFont(Standard5x7);
pinMode(LED_PIN, OUTPUT);
rt.attachSecondsInterrupt(blink);// Call blink
}
void loop()
{
if (rt.getTime()!=tt)
{
tt = rt.getTime();
Serial.print("Time is: ");
Serial.println(tt);
serialCurrentTime();
SetTime();
oledCurrentTime();
}
}
void serialCurrentTime() {
//rtclock.breakTime(tt, mtt);
char Buf[24];
snprintf(Buf, sizeof(Buf),"%s %04d/%02d/%02d %02d:%02d:%02d",
weekday1[rt.weekday()],(rt.year()+1970),rt.month(),rt.day(),
rt.hour(),rt.minute(),rt.second());
Serial.println(Buf);
}
void SetTime() {
Serial.println("Podaj datę i czas w formacie yyyy-mm-dd hh:mm dzien(1..7)");
while (Serial.available() > 0) {
int Year = Serial.parseInt();
int Month = Serial.parseInt();
int Day = Serial.parseInt();
int Hour = Serial.parseInt();
int Minute = Serial.parseInt();
int Wkday = Serial.parseInt();
if (Serial.read() == '\n') {
int Sec = 0;
int Yr = Year - 1970;
tm_t mtt = { Yr, Month, Day, Wkday, 11, Hour, Minute, Sec };
tt = rt.makeTime(mtt);
rt.setTime(tt);
}
}
}
void oledCurrentTime() {
char Buf[22];
//Wyświetl datę
myOLED.clrScr();
snprintf(Buf, sizeof(Buf),"%s %04d/%02d/%02d",
weekday1[rt.weekday()],(rt.year()+1970),rt.month(),rt.day());
myOLED.setFont(SmallFont);
// myOLED.setFont(Standard5x7);
myOLED.print(Buf,CENTER,0);
//Wyświetl czas
snprintf(Buf, sizeof(Buf),"%02d-%02d-%02d",
rt.hour(),rt.minute(),rt.second());
// myOLED.print(Buf,CENTER,9);
// myOLED.setFont(MediumNumbers);
myOLED.setFont(BigNumbers);
myOLED.print(Buf,CENTER,18);
myOLED.update();
}
Mrburnette
Пн, сентябрь 03, 2018 13:20
Просто чтобы прояснить:
Эта доска (или такая же распина http: // wiki.STM32duino.com/index.PHP?title = black_pill
Этот загрузчик: http: // wiki.STM32duino.com/index.PHP?тип ... ws_machine
Какое ядро: "файлы arduino_stm32" ? Возможно "ядро Роджера" https: // github.com/rogerclarkmelbourne/arduino_stm32
Если это так, вы выбрали, как указано в #3 и #4
Начиная
1. Купить черную таблетку
2. Сжечь загрузчик
3. В разделе «Инструменты → плата» выберите «Generic STM32F103 Series»
4. В разделе «Инструменты → Метод загрузки» выберите «STM32Duino Bootloader»
5. Выберите правильный COM -порт
6. Откройте эскиз Blink, измените номер PIN -кода на PB12
7. Нажмите на загрузку
Эта доска (или такая же распина http: // wiki.STM32duino.com/index.PHP?title = black_pill
Этот загрузчик: http: // wiki.STM32duino.com/index.PHP?тип ... ws_machine
Какое ядро: "файлы arduino_stm32" ? Возможно "ядро Роджера" https: // github.com/rogerclarkmelbourne/arduino_stm32
Если это так, вы выбрали, как указано в #3 и #4
Начиная
1. Купить черную таблетку
2. Сжечь загрузчик
3. В разделе «Инструменты → плата» выберите «Generic STM32F103 Series»
4. В разделе «Инструменты → Метод загрузки» выберите «STM32Duino Bootloader»
5. Выберите правильный COM -порт
6. Откройте эскиз Blink, измените номер PIN -кода на PB12
7. Нажмите на загрузку
Shodan8192
Пн, сентябрь 03, 2018, 20:21
Моя доска именно такая: http: // wiki.STM32duino.com/index.PHP?тип ... Black_pill
Я использую "ядро Роджера" https: // github.com/rogerclarkmelbourne/arduino_stm32
и его загрузчик: https: // github.com/rogerclarkmelbourne/ ... не?RAW = TRUE
Моя доска настроена правильно.
Я работал над своей программой в течение некоторого времени, и все было правильно с DFU, пока я не представил SSD1306 OLED и код для нее. Дисплей работает с начала, но в то же время DFU перестал работать. Если я прокомментирую код, обрабатывающий OLED, то DFU снова работает.
Я использую Platformio в коде Visual Studio, и есть GCC 7.2.1 в нем. Теперь я вспомнил, что когда я собрал прошивку Espruino для STM32F4 с GCC 7.x это частично или вообще не работало. Может быть, вот причина (слишком агрессивная оптимизация) ?
Я использую "ядро Роджера" https: // github.com/rogerclarkmelbourne/arduino_stm32
и его загрузчик: https: // github.com/rogerclarkmelbourne/ ... не?RAW = TRUE
Моя доска настроена правильно.
Я работал над своей программой в течение некоторого времени, и все было правильно с DFU, пока я не представил SSD1306 OLED и код для нее. Дисплей работает с начала, но в то же время DFU перестал работать. Если я прокомментирую код, обрабатывающий OLED, то DFU снова работает.
Я использую Platformio в коде Visual Studio, и есть GCC 7.2.1 в нем. Теперь я вспомнил, что когда я собрал прошивку Espruino для STM32F4 с GCC 7.x это частично или вообще не работало. Может быть, вот причина (слишком агрессивная оптимизация) ?
Мадиас
Пн, сентябрь 03, 2018, 21:26
[Shodan8192 - Пн, сентябрь 03, 2018 8:21 вечера] - Я использую Platformio в коде Visual Studio, и есть GCC 7.2.1 в нем. Теперь я вспомнил, что когда я собрал прошивку Espruino для STM32F4 с GCC 7.x это частично или вообще не работало. Может быть, вот причина (слишком агрессивная оптимизация) ?Если вам это нравится или нет, это хорошая идея, чтобы запустить стандартную Arduino IDE, как рекомендовано, прежде чем попробовать такие вещи, как Slaeber, Platformio и другие вещи.
Сначала: у вас будет настройка программного обеспечения WICH для работы с STM32DUINO, во втором вы сможете сбросить неисправность (или нет, тогда мы собираемся помочь вам дальше!)
Так же, как код (библиотека) работает со стандартной IDE?
Shodan8192
Вторник 04 сентября 2018 г. 7:50 утра
Так же, как код (библиотека) работает со стандартной IDE?
После копирования инструментов инструментов Arm-None-Eabi (который 4.8.3-2014Q1) от Arduino IDE до Platformio и программы перекомпилирования, OLED и DFU теперь работают вместе.
И там мои вопросы: можно получить полную рабочую программу, используя новейший набор инструментов ARM ? Что именно вызывает проблемы ? Может быть, есть некоторые флаги, чтобы усилить совместимость со старинными инструментами ?
И там мои вопросы: можно получить полную рабочую программу, используя новейший набор инструментов ARM ? Что именно вызывает проблемы ? Может быть, есть некоторые флаги, чтобы усилить совместимость со старинными инструментами ?
Стивестронг
Вторник 04 сентября 2018 г. 9:04
У меня также есть некоторые проблемы с релизом GCC 7 Q1.
Очень громоздко идентифицировать ошибки компилятора, поэтому вам лучше обслуживаться с тестируемой рабочей версией, чем поиск иглы в стоге сена.
Очень громоздко идентифицировать ошибки компилятора, поэтому вам лучше обслуживаться с тестируемой рабочей версией, чем поиск иглы в стоге сена.
Shodan8192
Вторник 04 сентября 2018 г. 10:05 утра
Итак, хорошо, я должен придерживаться инструментов из Arduino Ide.
Для меня трудно признать, что я не могу использовать более новый инструмент (я также проверил на GCC 6.3.1 без повезло)
Для меня трудно признать, что я не могу использовать более новый инструмент (я также проверил на GCC 6.3.1 без повезло)
Хейсан
Вторник 04 сентября 2018 г. 13:16
4.X GCC на самом деле довольно багги. Ряд ошибок был исправлен в более новых версиях, которые могут изменить способ составления кода. Компилятор почти всегда выпускает предупреждение, когда он собирает код, который по -разному составлял бы в более ранних версиях.
Попробуйте установить предпочтения «многослов» и посмотрите, сможете ли вы что -нибудь заметить на выходе компилятора?
Попробуйте установить предпочтения «многослов» и посмотрите, сможете ли вы что -нибудь заметить на выходе компилятора?
Shodan8192
Вторник 04 сентября 2018 г. 20:15
Компиляция с GCC 7.2.1 дает дополнительные предупреждения в сравнении с 4.8.3 о вводящих в заблуждение намерения в библиотеке SPI, которую я не использую (включен в Adafruit Oled Lib). Ни одно из предупреждений не выглядит актуальным в проблеме DFU.
Исправление для более новых GCC было объединено в STM32Duino-Bootloader, так что завтра я постараюсь скомпилировать его с GCC 7 и посмотрю, хорошо ли он играет с кодом пользователя, созданным с той же версией.
Исправление для более новых GCC было объединено в STM32Duino-Bootloader, так что завтра я постараюсь скомпилировать его с GCC 7 и посмотрю, хорошо ли он играет с кодом пользователя, созданным с той же версией.
Mrburnette
Ср. 05 сентября 2018 г. 1:25 утра
[Shodan8192 - Вторник 04 сентября 2018 г. 10:05 утра] - Итак, хорошо, я должен придерживаться инструментов из Arduino Ide.Я слышу это отношение слишком часто. Вы не можете делать то, что хотите, и вдруг это проблема форума /не.
Для меня трудно признать, что я не могу использовать более новый инструмент (Я также проверил на GCC 6.3.1 без повезло)
Этот форум назван «Arduino для STM32», и это означает использование Arduino IDE и столько же поведения и синтаксиса Arduino, которые можно разумно раскатывать в ядре. Где синтаксис отличается, почти всегда поддерживает улучшения в UC STM32.
Ядра, оба STM32 от Roger (от Leaflab), так и официальное ядро STM32 от STM и общего ядра предназначены для использования с Arduino IDE. Выход за пределы этого ограниченного, «Протестированная» среда - это ваша ответственность. Ряд участников используют Slober, и есть нить, в которой рассказывается о уроках; Но это не обычный бизнес на форуме. Вы можете опубликовать публикацию в разделе IDE, но это неуместно публиковать в разделе «Общие».
Луча
Shodan8192
Ср. 05 сентября 2018 г., 9:54
[Shodan8192 - Вторник 04 сентября 2018 г. 20:15] - Я постараюсь скомпилировать его с GCC 7 и посмотрю, хорошо ли он играет с кодом пользователя, созданным с той же версией.Я собрал STM32Duino-Bootloader с GCC 7.2.0 и это работает, но ничего не изменилось.
[Mrburnette - Ср 05 сентября 2018 г. 1:25 утра] - Вы можете опубликовать публикацию в разделе IDE, но это неуместно публиковать в разделе «Общие».Когда я начал эту ветку, я понятия не имел, в чем проблема, поэтому я разместил здесь. Теперь раздел не только неуместен, но и тема. Это должно быть похоже на «в некоторых случаях DFU перестать работать, когда программа была построена на Platformio с GCC 7.x "
Нельзя исключить, что в будущем инструментах Arm будет обновлена в Arduino IDE, и тогда у большего количества пользователей будут проблемы, как у меня. Я продолжу расследование, и если найду решение, я опубликую его в разделе «IDE».
Shodan8192
Пт 14 сентября 2018 г. 22:26
Как выясняется, проблема также может применяться к любой версии IDE и компилятора, которую я опубликовал описание и решение здесь: ViewTopic.PHP?F = 53&T = 4125