Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Включение в проект system_stm32f40x.c
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
1921
Корифеи и Гуру, не бейте сильно!
Поясните начинающему.
Я правильно понимаю, что файл system_stm32f40x.c запускается автоматически до запуска main.c?
Или нет? Где этот файл лежит по умолчанию? В смысле, я перенёс его в каталог проекта, но IAR его не цепляет. И как всё-таки он должен правильно называться: system_stm32f40x.c или system_stm32f4xx.c (в примерах встречается и так, и так). Я понимаю так, что его нужно править под свои потребности (я имею ввиду систему тактирования), так где править-то? наверное, можно и без него, ручками, но я посмотрел - там вроде все основные инициализации есть, чего же ещё.
На советы читать первоисточники - отвечаю: да читаю я их, читаю. Да только не всё сразу понимаю.
Не позволяет совесть ответить - хотя бы ткните носом в первоисточник, шоб я знал. А?
С уважением - новичок.
редактор
Цитата
В смысле, я перенёс его в каталог проекта, но IAR его не цепляет.

Просто перенести в каталог - пол дела, надо его еще в проект добавить, как обычный *.c файл. (включать его через #include тоже можно, но не принято)
shmur
Сам файл не "запускается", из него просто вызывается функция SystemInit, и вызывается она обычно из обработчика Reset_Handler, который по умолчанию находится в каком-нибудь cstartup.s:
Код
Reset_Handler
        LDR     R0, =SystemInit
        BLX     R0
        LDR     R0, =пользовательская точка входа (например, main или __iar_program_start)
        BX      R0

В общем то здесь можно убрать вызов SystemInit и вызвать его потом собственноручно или вообще не вызывать sm.gif
1921
Цитата(редактор @ Feb 1 2013, 10:48) *
Просто перенести в каталог - пол дела, надо его еще в проект добавить, как обычный *.c файл. (включать его через #include тоже можно, но не принято)

Не, ну разумеется я его приаттачил, и хедер его тоже. А вот в дизассемблере не увидел ничего, кроме ресетов. И регистры RCC-совские нулёвые, когда доходишь до main.
KRS
А с чего вы взяли что какие то функции из этого файла до main выполнятся?
У вас свой стартап или стандартный?
SSerge
Есть ещё startup_stm32f4xx.s, который тоже нужно включить в проект.
vlad_new
Ну чуток не так. Вызывается _main, а не main. Вообще то до сишного мэйна ещё переменные инициализируются. sm.gif
1921
Цитата(SSerge @ Feb 1 2013, 13:18) *
Есть ещё startup_stm32f4xx.s, который тоже нужно включить в проект.

Никакого.
Включить - это как? Простите за тупой вопрос? Прописать его в обработчике прерываний как reset? Как его заставить выполняться до main? Я вообще-то думал, что IAR без спроса ищет этот system и подключает его. Выходит, не так.
Может, подскажете, как грамотно организовать стартап? Ну не знаю я ARMов, но уж больно привлекает их периферия и быстродействие!

Цитата(vlad_new @ Feb 1 2013, 13:27) *
Ну чуток не так. Вызывается _main, а не main. Вообще то до сишного мэйна ещё переменные инициализируются. sm.gif

Эт я видел в дизассемблере. А вот настроек HSE не видел. Значит, не нашёл он этот system, видимо, его где-то прописать надо?

Так. Прикрутил штатный стартап - насколько понял, это как раз обработчик ресета со ссылкой на этот самый систем. Я только одного не понял - это что, вовсе не обязательно прикручивать эти примочки? Сдаётся мне, ручками побыстрее было бы.
vlad_new
Цитата(1921 @ Feb 1 2013, 13:32) *
Эт я видел в дизассемблере. А вот настроек HSE не видел. Значит, не нашёл он этот system, видимо, его где-то прописать надо?

Видимо надо. Например добавить его в свой проэкт. Судя по переписке Вы чуток не тем занялись и забрели в тупик. Возьмите любой проэкт в качестве примера и просто сделайте так же или используете его для своих нужд. А что откуда вызывается со временем сами поймете.
SSerge
Включить это правая кнопка в окне проекта -> Add -> Add Files.
Или Project->Add Files..
Или просто перетащить нужный файл из обзирателя в окошко проекта в IAR-e.

Кроме того в свойствах проекта нужно установить много чего, в том числе для какого ядра или конкретного контроллера компилировать, подключаемые библиотеки и пр. (Project->Options->General Options), пути для поиска инклюд-файлов (*.h) на вкладке Project->C/C++ Compiler->Preprocessor, там-же предопределённые символы.
На вкладке Project->Options->Linker установить подходящий .icf файл.

Посмотрите примеры, хоть из того-же STM32F...._StdPerif_Lib

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.