STM32 Porty GPIO — dla opornych 1

STM32 Porty GPIO — dla opornych 1
Razem głosów: 18 co stanowi: 98.89% całości.

 

imagesPorty GPIO to jedno z ważniejszych zagadnień niezależnie od rodziny mikrokontrolerów oczywiście obsługa ich i słynne Blink LED każdego nudzi, a każdy początkujący omija szerokim łukiem ten temat. Bo przecież co to jest miganie dioda prawda …. NUDA …  i od razu rzutem na taśmę będziemy budować stację kosmiczną MIRv2 …

no tak , ale potem nagle zaczynają się kłopoty… dlaczego ano dlatego, że jednak to jakże nudne mruganie diodą , a właściwie jego brak  powoduje brak umiejętności obsługi portów a co za tym idzie ich odpowiedniego dla zastosowania ustawienia.

Najprostszą formą właśnie jest blink LED ….  teoretycznie bardzo proste zagadnienie wystarczy użyć dowolnego pinu mikrokontrolera ustawić jako wyjście i zmieniać cyklicznie jego stan …..  a podłączona doń dioda led zacznie radośnie zapalać się i gasnąć ….

 

awesomeflashinglight

Tak … tylko problemem czasem jest jednak taki prosty kod napisać. Nie mniej właśnie tym się zajmiemy tyle że nie dla prostego AVR, a dla ARMA ….

Użyjemy sobie Bibliotek CMSIS, których wielu nie lubi … a co .. niema to jak cisnąc się po rejestrach , a potem samemu nie wiedzieć co co robi :)

na początek kod : dla STM32F407  bo mam pod ręką akurat..

Uff  przebrnęliśmy przez kod w którym nauczyliśmy się jak ustawiać GPIO , należy pamiętać że zegar włączamy zawsze dla każdego peryferium w ARM , tak jak tu widzicie wyżej … obwody RCC włączyłem zarówno dla GPIOD jak i dla GPIOA .

Warto po zaglądać do biblioteki stm32f4xx_gpio.h i .c by zapoznać się z dobrodziejstwami biblioteki oraz z dokumentacją dla zarówno procesora jak i samej discovery , gdzie znajdziemy wiele informacji…

Kolejna odmienność to parametr funkcji delay :)

mamy np w kodzie delay(1000000L) co to jest ?? jaka to wartość ??

W sumie 1000000L to ilość cykli instrukcji, ponieważ porównanie wartości 0 zajmuje dokładnie 1cykl, czyli przy 50Mhz  1000000 to ok 0,02s lub jak wolicie 20ms.

Co do taktowania/prędkości 50Mhz dla naszego GPIO to tutaj wystarczy nam aż nadto. w STM32F4 możemy jednak wybrać częstotliwość dla GPIO na poziomie :

2/25/50 i 100MHz

Ponadto możemy dowolnie całkowicie osobno i indywidualnie konfigurować dowolny pin w danym porcie np częśc portu C może być IN a cześć OUT :)

Dla informacji .. używam bibliotek CMSIS i STD dostarczanych przez Keil-a choć pod kompilatorem używanym przez CoIDE , ale to z przyzwyczajenia w sumie  i dlatego  sprawdźcie sobie inkludowane pliki , mogą mieć inne nazwy.

Tymczasem to tyle … pobawcie się miganiem , a  niebawem do tematu wrócimy.. gdyż w drugiej częśći co nieco omówimy dokładniej rejestry GPIO

Podziel się na:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay