Niedawno rozpocząłem przygodę z mikrokontrolerami z rdzeniem Cortex M3. W związku z tymn na początek, chciałbym przedstawić sposób obsługi portów wejścia wyjścia tego układu.
Programy zamieszczone w tym poście zostały przetestowane na płytce Nucleo F103RB.
Podstawową rzeczą od jakiej należy zacząć programowanie linii GPIO jest ich odpowiednia inicjalizacja. W tym mikrokontrolerze każdy pin może zostać zdeklarowany jako wyjście typu Push Pull lub jako Open Drain. W przypadku deklaracji pinu wejściowego możliwe jest ustawienie rezystora podciągającego (Pull Up lub Pull Down) lub całkowite jego wyłączenie. Kolejną możliwością jest deklaracja pinu jako wejście alternatywne (Alternate Function). Ta opcja stosowana jest w przypadku stosowania interfejsów komunikacyjnych takich jak np. SPI.
Ostatnim elementem jest częstotliwość działania GPIO. Od tego parametru zależy jak często będzie możliwa zmiana stanu na linii. Im częściej taki stan będzie zmieniany, tym większy będzie poziom emitowanych zakłóceń elektromagnetycznych (EMC).
Inicjalizacja
Podstawową rzeczą od jakiej należy zacząć programowanie linii GPIO jest ich odpowiednia inicjalizacja. W tym mikrokontrolerze każdy pin może zostać zdeklarowany jako wyjście typu Push Pull lub jako Open Drain. W przypadku deklaracji pinu wejściowego możliwe jest ustawienie rezystora podciągającego (Pull Up lub Pull Down) lub całkowite jego wyłączenie. Kolejną możliwością jest deklaracja pinu jako wejście alternatywne (Alternate Function). Ta opcja stosowana jest w przypadku stosowania interfejsów komunikacyjnych takich jak np. SPI.
Ostatnim elementem jest częstotliwość działania GPIO. Od tego parametru zależy jak często będzie możliwa zmiana stanu na linii. Im częściej taki stan będzie zmieniany, tym większy będzie poziom emitowanych zakłóceń elektromagnetycznych (EMC).