Инициализации, выполняемая в файле startup_stm32f4xx.s состоит всего из двух шагов. На первом (строки 175 – 176) вызывается функция SystemInit, а на втором (строки 177 – 178) – управление передается функции __main. Функция __main() создается автоматически компилятором языка C и C++.
Функция SystemInit() находится в файле system_stm32f4xx.c. Для создания этого файла воспользуемся программой STM32F4xx_Clock_Configuration_V1.0.1.xls (макросом) для Microsoft Excel. Сформированный файл system_stm32f4xx.c скопируем его в папку src и подключим его к проекту.
Обычно в папку src копируются и подключаются к проекту еще несколько файлов. Во-первых, это файл retarget.c, который находится в папке \Keil\ARM\Startup\. Во-вторых, это файлы stm32f4xx_it.c и stm32f4xx_it.h. Файлы stm32f4xx_it.* не входят в состав IDE Keil MDK, но их можно взять из имеющегося готового проекта или создать самостоятельно.
В файле startup_stm32f4xx.s конфигурируется стек и динамически распределяемая память, в файле system_stm32f4xx.c конфигурируется система синхронизации и система питания ядра микроконтроллера, в файле retarget.c находятся функции из стандартной библиотеки, которые могут корректироваться в каждом проекте, а в файле stm32f4xx_it.c находится обработчики прерываний. Все эти файлы являются уникальными для каждого проекта, так как содержат настройки и специфическое программное обеспечение проекта. |
Соберем повторно проект и убедимся, что при компоновке опять возникли ошибки. На этот раз компоновщик не смог найти функцию sendchar(), которая вызывается в файле retarget.c. Эту функцию мы напишем позже, а пока создадим для нее «заглушку» в файле main.c
компоновщик не смог найти функцию sendchar(), которая вызывается в файле retarget.c. Эту функцию мы напишем позже, а пока создадим для нее «заглушку» в файле main.c
int sendchar(int ch) {
Return ch;
}
Теперь можно собрать проект и убедиться в отсутствии ошибок.
Матрица шин. Все устройства микроконтроллеров STM32F4xx объединяются между собой при помощи набора внутренних шин. Для соединения шин между собой используется устройство, которое называется матрицей шин. 32-разрядная матрица позволяет организовывать потоки данных между всеми основными (CPU, DMA, Ethernet, USB HS) и подчиненными (Flash-память, RAM, FSMC, AHB и APB) блоками микроконтроллера и гарантирует эффективность операций даже при одновременной работе нескольких высокоскоростных периферийных модулей. На следующем рисунке показана упрощенная схема коммутации шин матрицей шин. Каждая строка и столбец матрицы шин это отдельная шина, к которой подключены те или иные устройства микроконтроллера. Точки на пересечении столбцов и строк означают, что данные две шины могут соединяться друг с другом. Периферийные устройства микроконтроллера подключены к двум высокоскоростным шинам AHB1-AHB2 и двум низкоскоростным шинам APB1 и APB2. Система тактирования микроконтроллера формирует три независимых тактовых сигналов для тактирования шин: сигнал для шины APB1, сигнал для шины APB2 и общий тактовый сигнал для высокоскоростных шин AHBx. Эту особенность необходимо учитывать при конфигурировании периферийных устройств, так как устройства, подключенные к разным шинам, в общем случае, будут тактироваться разными тактовыми сигналами. |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.