Перейти к содержанию
    

STM32F303K6 проект без куба

Вот спрошу за такой вопрос. Обычно, что бы не заморачиваться, я в кубе создавал пустой проект, а потом руками накидывал все настройки. При необходимости использовал 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Открывайте свойства проекта - правой кнопкой мыши по проекту - Properties и сравнивайте по каждому пункту с рабочим, он вообще не настроен. Сходу точно не настроена конфигурация отладки, тип мк, и много еще чего.

PS: У меня правда AC6, тоже бесплатный, тоже на эклипсе, поэтому могло что-то не так открыться, что не видит тулчейна.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, отладка не работает на обоих проектах. В режим отладки входит, но при попытке начать отладку зависает, рестарт в помощь. Но при этом прошивка f030r8 рабочая.

Атоллик и АС6 видимо разные, я вижу в настройках свой процессор. Иначе и не скомпилировался бы проект.

Хорошо, надо покопать в сторону отладки, может 030r8 попроще, чем 303k6, совпало.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Например

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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В данном случае я вывожу на ножку А8 системный клок: RCC->CFGR |= 0x4000000; А что бы клок вышел, на до предварительно определить вывод как альтернативная функция. А после сброса альтернативная функция AF0 устанавливается как MCO по умолчанию, те лишних телодвижений не требуется.

Насчет битов не совсем понял. Иногда записываю в регистр за один присест число, где заранее подсчитаны нужные биты. Либо с помощью И/ИЛИ по одному биту. Проблем не было.    Хотя согласен, не знамо как компилятор разрулит, может и надо сразу все писать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, Vlad_G said:

В данном случае я вывожу на ножку А8 системный клок: RCC->CFGR |= 0x4000000; А что бы клок вышел, на до предварительно определить вывод как альтернативная функция. А после сброса альтернативная функция AF0 устанавливается как MCO по умолчанию, те лишних телодвижений не требуется.

Насчет битов не совсем понял. Иногда записываю в регистр за один присест число, где заранее подсчитаны нужные биты. Либо с помощью И/ИЛИ по одному биту. Проблем не было.    Хотя согласен, не знамо как компилятор разрулит, может и надо сразу все писать.

Нельзя всегда надеяться на значения по умолчанию. Корректнее и надежнее все прописывать явно.

Дело не в том как компилятор разрулит, а в том, что за настройку ножки (значение MODE) отвечает сразу два бита. Вы изменяете только одни из них. При этом неизвестно, какое значения в другом бите.

Поэтому надо сначала сбросить оба бита в ноль, а потом в оба бита записать новое значение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверьте что в проект включаются (в том числе неявно, через #ifdef) именно заголовочные файлы для требуемого процессора.

В модуле main.с поставьте отладочные 

#ifndef XXXXX

debugwrite("def XXXX error")

#endif 

(синтаксис точно не знаю, в случае неверной установки переменной выдать сообщение в окно лога компилятора)

Проверьте все макро-переменные, определяемые в опциях проекта компилятора и линкера, могут "заваляться" от другого процессора.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ларчик открывался так, файл линкера (STM32F303K6_FLASH.ld) был неправильный. Изменив параметр - _estack - все заработало. Сий файл подсунул толикатоллик при создании проекта. А вот кубМХ подсовывает вполне себе рабочий файл.

 

Теперь вопрос. А где брать этот файл? Ожидал, что в кубе для конкретной серии он должен быть, но там его нет. Файлы startup, заголовочные файлы для конкретных процессоров есть, а файла линкера нет. Точнее есть, но этот файл можно найти (а можно и не найти) в папке с примерами. Но и там тоже не так просто, там файл STM32F303K8Tx_FLASH.ld для проца с 64 кб на борту. Править руками?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...