Bootloader - компорт

Хеллоу всем, купил я платку на таобао - стм32ф103с8т6, дефолт вообщем, правда питается через type c и еще переапян резистор r10 с завода на 152, к сути, хочу я грузить проги через arduino версии 2+ и видеть компорт, скачал бутлоадер от stm32duino, выбрал метод - maple dfu bootloader 2.0, загружается, но плата после загрузка скетча пропадает, говорит, неопознанным устройством стало, скетч точно загрузился спокойно и работает, приходится чтобы снова загрузить скетч, чистить чип и вшивать прошивку бутлоадера, вообще-м, что я делаю не так? Библиотека arduino due стоит, компилится все, если я использую версию ардуинки ниже 2.0, все грузится спокойно, определяется прекрасно и даже компорт посмотреть можно без проблем.

Зачем бутлоадер использовать, если ST-Link есть?

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

кстати, ты шьёшь под разными ядрами, а надо под одним и тем жеж

#define pin PA12
OneWire ds(pin); // пин протокола

byte addr1[8] = {0x22, 0xFF, 0x5E, 0x10, 0x00, 0x00, 0x80, 0x5A}; // адрес слейва
byte addr2[8] = {0x22, 0xFF, 0x5E, 0x10, 0x00, 0x00, 0x80, 0x3A};
byte slave[8]; // сравниваем адреса из эфира
bool flag_send1 = false;
bool flag_send2 = false;
uint32_t numberToSend1 = 121314; 
uint32_t numberToSend2 = 909090; 

void setup() {
  Serial.begin(9600);
  Serial.println("Start");
  ds.reset_search();
}

void sendNumber(byte addr[8], uint32_t number) {
  ds.select(addr); // выбираем адрес слейва
  
  byte bytesToSend[4]; // сдвигаем побайтово число
  bytesToSend[0] = number & 0xFF;        
  bytesToSend[1] = (number >> 8) & 0xFF;
  bytesToSend[2] = (number >> 16) & 0xFF;
  bytesToSend[3] = (number >> 24) & 0xFF; 

  for (int i = 0; i < sizeof(bytesToSend); i++) {
    ds.write(bytesToSend[i]); // отправляем каждый байт числа
  }
  delay(300);
}

void loop() {
  if (!ds.search(slave)) { // ищем в эфире адрес и записываем в массив для сравнивания адресов, если нет в эфире возвр - false
    ds.reset_search(); // ресетим поиск и начинаем поиск с 1 устройства
    delay(250);
    return; // возвращаемся к началу
  }
  
  ds.reset(); // ресетим шину протокола, чтобы багов не было, фиг знает зачем в доки написано =)

  if (memcmp(addr1, slave, 8) == 0) { // сравниваем два байтовых массива адресов, если адрес совпал отправляем значение
    sendNumber(addr1, numberToSend1);
    flag_send1 = true;
  } else if (memcmp(addr2, slave, 8) == 0) {
    sendNumber(addr2, numberToSend2);
    flag_send2 = true;
  }
}

Да, у меня стоит 2 ядра от дуино и от офф сайта, сейчас еще раз попробую под одним ядром

Да, через stlink шьется все прекрасно и великолепно, но мне нужно просматривать порт, через стлинк вроде как это сделать нельзя

Если брать твое ядро - то все прекрасно грузится и работает компорт, но мне нужно,чтобы работало с другим, библиотека onewire.h отказывается работать с ядром от stm32duino.com

у меня работает, после того как CDC дёрнет DTR порт будет другим

мб у тебя другой бутлоадер? есть ссылочка??

я эти платы шил очень давно, для генератора от @dimax, со старого форума, там же и брал бутлоадер

файлика не осталось на яд залить? D: сорри за наглость

тут он лежит жеж - STM32duino-bootloader/binaries/generic_boot20_pc13.bin at master · rogerclarkmelbourne/STM32duino-bootloader · GitHub

image
первый который?

просто pc13.bin

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

нажми резет ручками

до загрузки нажимал и после, компорт не появл

Я тебя расцелую!! USb support был поставлен на параметр - none, все заработало ===)