Przykłady dla STM32 + STM32F10x Standard Peripherals Library |
Written by Freddie Chopin
|
Wednesday, 11 January 2012 21:35 |
Page 3 of 6
Sposób 1 - pliki bazowe z przykładów, biblioteka w folderze projektu
Jest to najprostsza metoda osiągnięcia założonego celu. W sposobie tym kopiujemy po prostu wszystkie potrzebne pliki biblioteki do folderu projektu.
W projekcie (dla większego porządku) tworzymy folder (menu File > New > Folder lub - jak zwykle - menu kontekstowe katalogu projektu) o dowolnej nazwie - np lib - i importujemy do niego (sposób importowania plików przedstawiony został nieco wcześniej w tym artykule) następujące zasoby:
- z folderu c:\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport - wszystkie pliki (core_cm3.c i core_cm3.h),
- z folderu c:\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x - plik stm32f10x.h oraz system_stm32f10x.h (dla porządku można też zaimportować do folderu lib plik system_stm32f10x.c a następnie skasować go z głównego katalogu projektu, lub można go później przenieść),
- z folderu c:\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc - wszystkie pliki,
- z folderu c:\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src - wszystkie pliki.
Teraz należy dodać do pliku Makefile kilka opcji, które umożliwią poprawną kompilację plików biblioteki. Po otwarciu pliku Makefile w edytorze dokonujemy w nim następujących zmian:
- w liniach CXX_DEFS i C_DEFS dodajemy następujące definicje: -DUSE_STDPERIPH_DRIVER -DHSE_VALUE=8000000 (wartość HSE_VALUE oczywiście uzależniona od używanego rezonatora kwarcowego), spowoduje to dołączenie do kodu odpowiednich nagłówków (definicja symbolu USE_STDPERIPH_DRIVER) i odpowiednią konfigurację funkcji które korzystają z wartości częstotliwości zewnętrznego rezonatora kwarcowego (wartość symbolu HSE_VALUE),
- w linii C_DEFS dodatkowo dopisujemy jeszcze -DSystemInit=low_level_init_1 - spowoduje to wywołaniem funkcji SystemInit() (z biblioteki) w startupie tuż przed wywołaniem funkcji main() - jest to wymagane przez aktualną konwencję biblioteki,
- w liniach INC_DIRS i SRCS_DIRS dodajemy nazwę stworzonego przez nas katalogu - np. lib,
- z linii C_WARNINGS usuwamy pozycję -Wstrict-prototypes, aby niezgodne z "czystym" standardem języka C deklaracje funkcji z CMSISa nie zasypały nas ostrzeżeniami, że "function declaration isn't a prototype".
W tym momencie możliwa jest już bezbłędna i bezproblemowa kompilacja całego projektu.
|
Last Updated on Monday, 15 October 2012 22:24 |