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

W poprzedniej części stworzyliśmy aplikację, która wykorzystując bibliotekę dostarczoną przez ST sterowała diodami LED. Teraz zrobimy to samo, ale bez użycia tej biblioteki.

Sterowanie liniami GPIO

Aby mieć dostęp do klas niezbędnych do wykonania zadania musimy dodać do aplikacji przestrzeń nazw Microsoft.SPOT.Hardware, chodzi konkretnie o klasę OutputPort, która pozwala sterować linią GPIO. Diody dołączone są do linii PG13 i PG14, musimy utworzyć obiekty klasy OutputPort, a jako argumenty podajemy numer linii oraz stan jaki ma przybrać linia po jej inicjalizacji (true dla jedynki lub false dla zera). Numer linii podajemy licząc od PA0, czyli: PA0 to linia 0, PA1 – 1 … PB0 – 16, PB1 – 17 itd., czyli dla linii PG13 i PG14 będą to linie 6 * 16 + 13 i 6 * 16 + 14. Po utworzeniu obiektu możemy sterować stanem linii używając metody Write. Oto kod programu:

 

Odczytywanie stanu linii GPIO

Aby odczytać stan linii GPIO mikrokontrolera tworzymy obiekt typu InputPort podając trzy argumenty:

  • numer linii (liczony analogicznie jak przy linii wyjściowej),
  • wartość true jeśli chcemy aby drgania styków zostały wyeliminowane, w przeciwnym przypadku false,
  • jedną z wartości Port.ResistorMode określającą konfigurację rezystora podciągającego, dostępne wartości to: Disabled, PullDown i PullUp.

Po utworzeniu obiektu wartość zwracana przez metodę Read odwzorowuje stan linii. Poniżej znajduje się kod programu, który zaświeca diodę LED1 jeśli naciśnięty jest przycisk USER.

Obsługa przerwań zewnętrznych

Do obsługi przerwań zewnętrznych służy klasa InterruptPort, obiekty tej klasy tworzymy podobnie jak w przypadku InputPort, ale podajemy jeszcze jeden argument, który określa w jakiej sytuacji ma być wygenerowane przerwanie, dostępne wartości to: InterruptNone, InterruptEdgeLow, InterruptEdgeHigh, InterruptEdgeBoth, InterruptEdgeLevelHigh i InterruptEdgeLevelLow. Dodatkowo musimy dodać obsługę zdarzenia OnInterrupt, ta operacja wygląda następująco:

OnButtonPress to nazwa funkcji, która zostanie wywołana po wygenerowaniu przerwania, musimy ją zdefiniować. Kod programu, który na zmianę zaświeca i gasi diodę LED1 po naciśnięciu przycisku USER przedstawiono poniżej:

O autorze