Хеллоу всем, купил я платку на таобао - стм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
мб у тебя другой бутлоадер? есть ссылочка??
я эти платы шил очень давно, для генератора от @dimax, со старого форума, там же и брал бутлоадер
файлика не осталось на яд залить? D: сорри за наглость
тут он лежит жеж - STM32duino-bootloader/binaries/generic_boot20_pc13.bin at master · rogerclarkmelbourne/STM32duino-bootloader · GitHub
первый который?
просто pc13.bin
спокойно зашивается с ядром от дуино и можно смотреть компорт, если брать офф ядро, то зашивается и компорт пропадает
нажми резет ручками
до загрузки нажимал и после, компорт не появл
Я тебя расцелую!! USb support был поставлен на параметр - none, все заработало ===)