Перейдем к закладке Utilities. На этой закладке мы выберем и сконфигурируем средства загрузки программы в микроконтроллер. Во-первых выберем режим Use Target Driver for Flash Programming, во-вторых, установим флаг Use Debug Driver и флаг Update Target before Debugging. Для загрузки кода программы в микроконтроллер загрузчик необходимо сконфигурировать. Нажмем кнопку Settings и попадем на закладку параметров. |
Выберем на этой закладке опцию EraseSectors. В соответствии с этой опцией при записи программы в микроконтроллер во flash–памяти микроконтроллера будут стираться только те сектора, в которые производится запись. Флаги Program иVerily говорят о том, что при активизации функции программирования после записи данных содержимое памяти микроконтроллера будет сравниваться с исходными данными.
И последнее, что нужно сделать на этой закладке, это выбрать алгоритм программирования flash-памяти. Алгоритм программирования зависит используемого микроконтроллера. Нажимаем кнопку Add и открываем выпадающий список. В этом списке микроконтроллеры объединены в группы по типу микроконтроллера и объему его flash-памяти. Микроконтроллеру STM32F407VG соответствует группа STM32F4xxFlash. Нажимаем кнопку Add, а потом несколько раз кнопку OK и завершаем (временно) конфигурирование.
Ctl-F7 – компиляция (Translate). Компилятор обрабатывает файл, который отображается в окне редактора, и создает для него объектный файл. F7 – сборка проекта. Вначале просматриваются все исходные файлы проекта. Исходные файлы, в которые были внесены изменения после последней компиляции, или новые файлы, включенные в проект, компилируются. После компиляции вызывается линковщик и собирается исполняемый файл. Компиляцию и сборку программы можно выполнить из основного меню. Если нужно заново перекомпилировать все исходные файлы проекта и собрать исполняемый файл, то необходимо использовать последнюю кнопку Rebuild. |
Теперь нажмем Ctl-F7 и скомпилируем файл main.c, который открыт в окне редактора. Как видим, компиляция прошла успешно.
Однако при сборке программы, которую запустим, нажав F7, компоновщик выдаст сообщение об ошибке.
Сообщение говорит о том, что компоновщик не смог найти функцию SystemInit(), которая вызывается в файле startup_stm32f4xx.s.
В файле startup_stm32f4xx.s определяется ряд констант необходимых для работы программы и выполняется начальная инициализация микроконтроллера. В частности в этом файле определяются две константы: объем ОЗУ выделяемый под стек (Stack_Size) и объем ОЗУ выделяемый для динамически распределяемой памяти (Heap_Size). По умолчанhию Stack_Mem = 0x00000400 (1024 байта), Heap_Size = 0x00000200 (512 байт). При необходимости эти значения можно изменить.
В файле startup_stm32f4xx.s определена таблица векторов прерываний. Таблица векторов прерываний представляет собой последовательность 32-х разрядных чисел, каждое из которых, кроме двух первых, является адресом соответствующего обработчика прерываний. В микроконтроллерах семейства STM32F4xx таблица векторов прерываний ВСЕГДА расположена по адресу 0x0800 0000. (После начала роботы программы таблицу прерываний можно переместить).
Первые две константы в таблице векторов прерываний это адрес вершины стека (константа __initial_sp) и адрес первой выполняемой команды (константа Reset_Handler).
При включении питания микроконтроллер семейства STM32F4xx ВСЕГДА выполняет следующие операции:
1. инициализирует стек. Инициализации стека заключается в том, что 32-х разрядная константа __initial_sp загружается в регистр – указатель стека.
2. константа Reset_Handler загружается в регистр – указатель команд и управление передается первой выполняемой команде, которая продолжает инициализацию микроконтроллера
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.