LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
Artykuły

[1] Tworzenie aplikacji .NET MF dla STM32F429I-DISCOVERY

 

Dla kogo przeznaczony jest ten cykl artykułów?

Artykuły zostały przygotowane z myślą o programistach mikrokontrolerów posługujących się językiem C i niemających dotychczas doświadczeń z nowocześniejszymi językami/platformami jak C#/.NET czy Java. Korzystając z taniej płytki startowej – STM32F429I-Discovery – stworzymy kilka prostych aplikacji wprowadzających w zagadnienie. Nie ma znaczenia, jeśli nie masz doświadczeń z mikrokontrolerami STM32 czy ARM w ogóle, ponieważ szczegóły sprzętowe są przed nami ukryte (przynajmniej w początkowej fazie nauki).

Przygotowanie środowiska

Najpierw należy pobrać środowisko Microsoft Visual Studio 2012 i zainstalować je na swoim komputerze. Drugim potrzebnym składnikiem jest .NET Micro Framework w wersji 4.3, po pobraniu rozpakowujemy archiwum i instalujemy framework. Ostatni potrzebny element to zestaw narzędzi umożliwiających uruchomienie platformy .NET MF na płytce STM32F429I-Discovery, komplet tych narzędzi znajduje się w pliku STSW-STM32141, plik musimy rozpakować na swój dysk. W katalogu NETMF_Binary_Image znajdują się trzy pliki hex, które należy wgrać do pamięci Flash mikrokontrolera przy użyciu programatora ST-Link wbudowanego w płytkę (zagadnienie na tyle podstawowe, że nie będę go opisywał). Po zaprogramowaniu mikrokontrolera nasza płytka jest gotowa do pracy, musimy ją dołączyć teraz do komputera przez gniazdo micro-USB. Płytka musi być dodatkowo zasilana (np. przez gniazdo mini-USB), ponieważ konstrukcja płytki uniemożliwia zasilanie od strony gniazda micro-USB. Po dołączeniu płytki do komputera musimy zainstalować sterowniki, znajdują się w katalogu USB_Drivers pobranego wcześniej archiwum STSW-STM32141.

Pobrana w chwili pisania artykułu wersja środowiska Visual Studio 2012 Express podczas uruchamiania w systemie Windows 7 x64 wyświetla komunikat o niezgodności z systemem operacyjnym, radą na to jest instalacja poprawki KB2781514 (do pobrania na stronie firmy Microsoft) i automatyczna instalacja późniejszych aktualizacji.

Podstawowe pojęcia

Aby rozpocząć programowanie w C# konieczne jest poznanie chociaż zarysu przedstawionych poniżej pojęć. Jeśli po jedno- czy dwukrotnym przeczytaniu pojęcia nadal nie będą do końca jasne, radzę nie przejmować się tym i przejść dalej, praktyczne przykłady powinny wszystko wyjaśnić. Jeśli masz chociaż mgliste pojęcie o programowaniu obiektowym możesz od razu przejść do drugiej części cyklu.

Klasa jest jednym z podstawowych pojęć programowania obiektowego, czyli także w języku C#. Aby w najprostszy sposób przedstawić programiście języka C to pojęcie można powiedzieć, że klasa jest definicją zbioru zmiennych (tu zwanych polami) i funkcji (tu zwanych metodami). Klasą może być np. przycisk (taki ze środowisk graficznych, jak np. Windows), który ma pola: szerokość, wysokość, etykieta, i metodę Narysuj. Przykładowa klasa:

class Przycisk 
{
	int Szerokosc;
	int Wysokosc;
	string Etykieta;
	void Narysuj(void)
	{
	}
}

Obiekt jest konkretnym egzemplarzem klasy, czyli mając przykładową aplikację, która wyświetla w swoim oknie dwa przyciski tej klasy mamy dwa obiekty klasy przycisk. W przykładzie poniżej tworzone są dwa przyciski i ustawiane są ich szerokości:

class Okno 
{
	public static void Main()
	{
		Przycisk przycisk1 = new Przycisk();
		Przycisk przycisk2 = new Przycisk();
		przycisk1.Szerokosc = 100;
		przycisk2.Szerokosc = 120;
	}
}

Co istotne w przypadku obiektów nie wystarczy deklaracja jak w języku C, obiekt należy stworzyć używając słowa kluczowego new.

Program w języku C# po pierwsze nie może zawierać funkcji poza klasami, a po drugie musi zawierać funkcję Main, w której zaczyna się wykonywanie programu (podobnie jak main w języku C). Stąd musimy w którejś z klas zdefiniować tę funkcję. Dodatkowym warunkiem jest to, że funkcja ta musi być zadeklarowana jako statyczna (słowo kluczowe static). Funkcje statyczne charakteryzują się między innymi tym, że aby je wywołać nie musi istnieć obiekt klasy je zawierającej.

Przestrzeń nazw (namespace) to swego rodzaju pojemnik, w którym dla uporządkowania logicznego aplikacji możemy umieścić klasy i inne elementy, również inne przestrzenie nazw (przykład z MSDN):

namespace SampleNamespace
{
    class SampleClass { }

    interface SampleInterface { }

    struct SampleStruct { }

    enum SampleEnum { a, b }

    delegate void SampleDelegate(int i);

    namespace SampleNamespace.Nested
    {
        class SampleClass2 { }
    }
}

Co oczywiste dla doświadczonych w programowaniu obiektowym powyższe zarysy pojęć są skrajnie uproszczone, ale na początek nam wystarczą. W kolejnym artykule przedstawimy pierwszą aplikację.

Polski portal branżowy dedykowany zagadnieniom elektroniki. Przeznaczony jest dla inżynierów i konstruktorów, projektantów hardware i programistów oraz dla studentów uczelni technicznych i miłośników elektroniki. Zaglądają tu właściciele startupów, dyrektorzy działów R&D, zarządzający średniego szczebla i prezesi dużych przedsiębiorstw. Oprócz artykułów technicznych, czytelnik znajdzie tu porady i pełne kursy przedmiotowe, informacje o trendach w elektronice, a także oferty pracy. Przeczyta wywiady, przejrzy aktualności z branży w kraju i na świecie oraz zadeklaruje swój udział w wydarzeniach, szkoleniach i konferencjach. Mikrokontroler.pl pełni również rolę patrona medialnego imprez targowych, konkursów, hackathonów i seminariów. Zapraszamy do współpracy!