Vlad_G 6 17 сентября, 2019 Опубликовано 17 сентября, 2019 · Жалоба Вот спрошу за такой вопрос. Обычно, что бы не заморачиваться, я в кубе создавал пустой проект, а потом руками накидывал все настройки. При необходимости использовал LL. Все работало. Атоллик, версия 9.0.1 и 9.3.0. Тут решил попробовать создать проект без куба: новый проект С -> эмбедед проект С. Далее выбор процессора и тд. Для процессора stm32f030r8 все прошло нормально. А для процессора stm32f303k6 - затыка, не работает ни в какую. При этом компилируется без ошибок. От безнадеги залил прошивку от f030r8 в f303k6 и .... усе работает, мигает светодиёдик. Почитал DS, RM, PM, пытался из куба FW_F3_V1.10.0 добавлять файлы... что-то вот не приходит мысля отчего может быть. Прикрепил архив с двумя проектами: stm32f030r8 и stm32f303k6, может кто подскажет направление в каком идти (ну, кроме очевидного :о) ) Логика простая - порт А6 дергаю светодиодом, на порт А8 (MCO) вывожу внутренний системный клок. RCC не настраиваю, что после сброса. Ну и немного опережая - Atollic, на работе ничего другого поставить не могу, в смысле платных систем, плюс он поддерживается STM. Отсюда и выбор. По статьям из интернета, тоже тоже не особо, там практиковались на F100. Да и у меня f030r8 работает. test.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexRayne 7 17 сентября, 2019 Опубликовано 17 сентября, 2019 · Жалоба И отладчик не работает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dac 0 17 сентября, 2019 Опубликовано 17 сентября, 2019 · Жалоба Открывайте свойства проекта - правой кнопкой мыши по проекту - Properties и сравнивайте по каждому пункту с рабочим, он вообще не настроен. Сходу точно не настроена конфигурация отладки, тип мк, и много еще чего. PS: У меня правда AC6, тоже бесплатный, тоже на эклипсе, поэтому могло что-то не так открыться, что не видит тулчейна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vlad_G 6 17 сентября, 2019 Опубликовано 17 сентября, 2019 · Жалоба Да, отладка не работает на обоих проектах. В режим отладки входит, но при попытке начать отладку зависает, рестарт в помощь. Но при этом прошивка f030r8 рабочая. Атоллик и АС6 видимо разные, я вижу в настройках свой процессор. Иначе и не скомпилировался бы проект. Хорошо, надо покопать в сторону отладки, может 030r8 попроще, чем 303k6, совпало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 17 сентября, 2019 Опубликовано 17 сентября, 2019 · Жалоба Прежде чем записывать новое значение в регистры, у которых за настройку каждой ножки отвечают более одного бита, надо сначала эти биты обнулить. Например uint32_t tmp_reg = GPIOA->MODER; tmp_reg &= ~(GPIO_MODER_MODER6); // reset tmp_reg |= GPIO_MODER_MODER6_0; // записываем новое значение - порт A бит 8 - выход GPIOA->MODER = tmp_reg; Тоже самое и с альтернативными функциями. Так же. С помощью GPIOA->MODER |= GPIO_MODER_MODER8_1; //порт A бит 8 - альтернативна¤ ф-¤ Вы сказали, что на данную ножку будет выведена альтернативная функция. Но какая из альтернативных функций вы не указали. Для этого существует регистр AFR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vlad_G 6 17 сентября, 2019 Опубликовано 17 сентября, 2019 · Жалоба В данном случае я вывожу на ножку А8 системный клок: RCC->CFGR |= 0x4000000; А что бы клок вышел, на до предварительно определить вывод как альтернативная функция. А после сброса альтернативная функция AF0 устанавливается как MCO по умолчанию, те лишних телодвижений не требуется. Насчет битов не совсем понял. Иногда записываю в регистр за один присест число, где заранее подсчитаны нужные биты. Либо с помощью И/ИЛИ по одному биту. Проблем не было. Хотя согласен, не знамо как компилятор разрулит, может и надо сразу все писать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 17 сентября, 2019 Опубликовано 17 сентября, 2019 · Жалоба 7 minutes ago, Vlad_G said: В данном случае я вывожу на ножку А8 системный клок: RCC->CFGR |= 0x4000000; А что бы клок вышел, на до предварительно определить вывод как альтернативная функция. А после сброса альтернативная функция AF0 устанавливается как MCO по умолчанию, те лишних телодвижений не требуется. Насчет битов не совсем понял. Иногда записываю в регистр за один присест число, где заранее подсчитаны нужные биты. Либо с помощью И/ИЛИ по одному биту. Проблем не было. Хотя согласен, не знамо как компилятор разрулит, может и надо сразу все писать. Нельзя всегда надеяться на значения по умолчанию. Корректнее и надежнее все прописывать явно. Дело не в том как компилятор разрулит, а в том, что за настройку ножки (значение MODE) отвечает сразу два бита. Вы изменяете только одни из них. При этом неизвестно, какое значения в другом бите. Поэтому надо сначала сбросить оба бита в ноль, а потом в оба бита записать новое значение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 17 сентября, 2019 Опубликовано 17 сентября, 2019 · Жалоба Проверьте что в проект включаются (в том числе неявно, через #ifdef) именно заголовочные файлы для требуемого процессора. В модуле main.с поставьте отладочные #ifndef XXXXX debugwrite("def XXXX error") #endif (синтаксис точно не знаю, в случае неверной установки переменной выдать сообщение в окно лога компилятора) Проверьте все макро-переменные, определяемые в опциях проекта компилятора и линкера, могут "заваляться" от другого процессора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vlad_G 6 22 сентября, 2019 Опубликовано 22 сентября, 2019 · Жалоба Ларчик открывался так, файл линкера (STM32F303K6_FLASH.ld) был неправильный. Изменив параметр - _estack - все заработало. Сий файл подсунул толикатоллик при создании проекта. А вот кубМХ подсовывает вполне себе рабочий файл. Теперь вопрос. А где брать этот файл? Ожидал, что в кубе для конкретной серии он должен быть, но там его нет. Файлы startup, заголовочные файлы для конкретных процессоров есть, а файла линкера нет. Точнее есть, но этот файл можно найти (а можно и не найти) в папке с примерами. Но и там тоже не так просто, там файл STM32F303K8Tx_FLASH.ld для проца с 64 кб на борту. Править руками? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться