LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
Artykuły

ZL31ARM: sterowanie kulki i obroty bryły w 3D za pomocą czujnika MEMS LIS35

Konfiguracja projektu

Programy opisane w artykule powstały na bazie bibliotek opisanych w książce „Mikrokontrolery STM32 w praktyce”, dlatego przed rozpoczęciem ich testowania należy pobrać pliki źródłowe przykładów z tej książki (dostępne m.in. na stronie Wydawnictwa BTC). W pliku archiwum znajduje się katalog Libraries, który należy skopiować do katalogu z zainstalowanym środowiskiem µVision (np. C:\Keil\ARM\). Z biblioteki należy wybrać potrzebne pliki i dodać je do własnego projektu. Pliki stm32f10x_conf.h oraz stm32f10x_it.c(h) można skopiować z dowolnego katalogu i w razie potrzeby wprowadzić wymagane zmiany lub też można je znaleźć w załączniku do książki „STM32 Aplikacje i ćwiczenia w języku C” dostępne w katalogu wzorzec. Dalej klikamy na Options for Target… i w zakładce C/C++ w polu Define dodajemy następujące parametry: STM32F10X_MD, USE_STDPERIPH_DRIVER. Oprócz tego należy dodać ścieżki dostępu do plików źródłowych w Include Paths (rysunek 4). W zakładce Debug wybieramy Use ST-Link (Deprecated Version) i to samo robimy w zakładce Utilities, gdzie występuje pole Use Target Driver for Flash Programming.

 

Rys. 4. Okno z wykazem domyślnych ścieżek dostępu dla środowiska µVision

Rys. 4. Okno z wykazem domyślnych ścieżek dostępu dla środowiska µVision

 

 

Do wyświetlania elementów grafiki zostanie wykorzystany kod opisany w artykule „ZL31ARM: implementacja funkcji graficznych 2D” oraz „ZL31ARM: funkcje graficzne 3D”. Opisano tam również skąd można pobrać potrzebne pliki: w załączniku „Przykładowy program dla STM32” dla modułu KAmodTFT2 można znaleźć lcdlib.c, lcdlib.h, lis35.c, lis35.h (opis modułu KAmodMEMS2 wraz z opisem funkcji dla interfejsu SPI można znaleźć na stronie www.STM32.eu) oraz SystemInit.c i board.h oprócz graphics.c, który został zmodyfikowany w powyższych projektach i który jest dostępny w załączniku do tych artykułów (podczas kompilacji może wystąpić błąd nie znalezienia pliku stm32f10x_lib.h – wtedy należy zmienić nazwę na stm32f10x.h); dodatkowo w celu wyświetlenia symboli tekstowych należy pobrać załącznik do artykułu na stronie [1] oraz skopiować plik fonts.c do katalogu projektu, a z pliku main.c skopiować fragment dotyczący funkcji LCDPutChar() i zapisać do lcdlib.c. Struktura całego projektu jest przedstawiona na rysunku 5. W pliku stm32f10x_conf.h należy odkomentować instrukcje załączające potrzebne pliki, jak poniżej:

#include "stm32f10x_exti.h"
#include "stm32f10x_flash.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_spi.h"
#include "misc.h"

 

Rys. 5. Struktura projektu

Rys. 5. Struktura projektu

 

 

Docelowa zawartość pliku board.h powinna wyglądać w następujący sposób:

// MEMS CS line
#define GPIO_CS			GPIOA
#define GPIO_Pin_CS			GPIO_Pin_4
#define GPIO_INT			GPIOA
#define GPIO_Pin_INT1		GPIO_Pin_0
#define GPIO_Pin_INT2		GPIO_Pin_1

// LCD connection
#define PORT_ctrl			GPIOC    
#define RCC_APB2Periph_ctrl	RCC_APB2Periph_GPIOC
#define DATA				GPIO_Pin_4 
#define CLK				GPIO_Pin_5	
#define CS				GPIO_Pin_6
#define RES				GPIO_Pin_7

// Joystick
#define JOY_PORT_OK			GPIOB
#define JOY_OK			GPIO_Pin_5
#define RCC_APB2Periph_JOYOK	RCC_APB2Periph_GPIOB
#define JOY_PORT			GPIOC
#define JOY_UP			GPIO_Pin_0
#define JOY_DOWN			GPIO_Pin_1
#define JOY_LEFT			GPIO_Pin_2
#define JOY_RIGHT			GPIO_Pin_3
#define RCC_APB2Periph_JOY		RCC_APB2Periph_GPIOC

// 2 LEDs
#define LED_PORT			GPIOB
#define LED_1				GPIO_Pin_1
#define LED_2				GPIO_Pin_2
#define RCC_APB2Periph_LEDs	RCC_APB2Periph_GPIOB

Do pobrania

Autor: Jan Szemiet