Создание проекта в IDE Keil MDK. Загрузка IDE Keil MDK и в меню Project, страница 5

Кроме этих частот будет установлена частота сигнала тактирования модуля USB OTG FS 48МГц. Этот сигнал формируется системой PLL, а его частота определяется делителем PLL_Q. Буду также установлены часты тактирования таймеров: на шине APB1 – 84МГц, на шине APB2 – 168 МГц

Программа STM32F4xx_Clock_Configuration_V1.0.1 кроме системы тактирования настраивает еще ряд параметров. Без четкого понимания назначения этих параметров и строго не рекомендуется изменять.

В окне программы нажмем кнопку Generate. В результате будет создан и сохранен в каталоге программы Clock_Configuration файл system_stm32f4xx.c Переместим этот файл в папку src нашего проекта и подключим его к проекту. Посмотрим содержимое этого файла.

В начале файла находится таблица (ниже показана ее часть) в которой приведены настройки тактирования и системы питания, которые мы ввели в программе Clock_Configuration. Если посмотрим дальше по тексту файла, то увидим макроопределения в которых используются заданные нами значения.

Библиотеки, подключаемые к проекту.

Не будем заниматься изучением существующих библиотек с точки зрения их возможностей, достоинств и недостатков. Рассмотрим используемые библиотеки с точки зрения механизмов их подключения к проекту. 

Начнем со стандартной библиотеки C и C++. Для подключения этих библиотек к проекту достаточно включить в исходный текст программы директивой #include необходимые заголовочные файлы. Все остальное интегрированная среда разработки сделает сама: найдет указанные заголовочные файлы, найдет требуемые библиотечные модули и укажет компоновщику, что нужно подключить к исполняемому файлу и где это находится.

Достаточно часто библиотеки поставляются не в виде скомпилированных библиотечных файлов(*.lib), а в виде исходных текстов. В этом случае необходимо в текст программы включить файлы объявлений, и подключить к проекту соответствующие файлы с реализацией (*.c, *.cpp). Копировать в проект эти файлы не надо, достаточно их только подключить к проекту.

Подключим к нашему проекту набор функций для работы с портами ввода-вывода из библиотеки периферии STM32F4xx_StdPeriph_Driver, которую поставляет фирма STMicroelectronics для своих микроконтроллеров, и из библиотеки myLIB. Оби эти библиотеки расположены в каталоге LIB_STM32.  Исходные тексты и объявления для нужных нам функций находятся в файлах stm32f4xx_gpio_c.c,  stm32f4xx_gpio_c.h и gpio.c, gpio.h.

Подключим директивой #include к файлу main.c файл gpio.h и откомпилируем его.  При компиляции компилятор выдаст сообщение об ошибке. Файл gpio.h конечно есть только компилятору нужно объяснить

При компиляции компилятор выдаст следующее сообщение об ошибке.

Файл gpio.h конечно есть только компилятору нужно объяснить где он находится. Для этого откроем меню с установками проекта и зайдем на закладку C/C++ и в окне IncludePaths введем соответствующие пути к папке myLIB\inc и к папке  STM32F4xx_StdPeriph_Driver\inc.

 

После этого подключим файлы реализации  stm32f4xx_gpio_c.c и gpio.c  к проекту. Эти файлы находятся в папках STM32F4xx_StdPeriph_Driver\src и myLIB\src.

Для завершения конфигурирования проекта объявим несколько констант, необходимых для нормальной компиляции. Эти константы введем на закладке C/C++ в окне Define.

·  Константа  HSE_VALUE указывает частоту кварцевого резонатора, который используется в системе тактирования. Если эту константу не объявить, то в проекте будет использоваться значение по умолчанию равное 25000000 (25 МГц) которое определяется в файле stm32f4xx.h

·  Константа STM32F40XX – используется в myLib для выбора нужного заголовочного файла в зависимости от используемого микроконтроллера.

·  Константа USE_STDPERIPH_DRIVER – необходима при использовании библиотеки периферии STM32F4xx_StdPeriph_Driver.

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

Есть альтернативный способ. Он заключается в том, что в каталог src проекта копируется специальный файл

stm32F4xx_conf.h. При объявлении константы USE_STDPERIPH_DRIVER этот файл директивой #include включается  в состав файла stm32f4xx.h.