Ta strona używa ciasteczek (plików cookies), dzięki którym może działać lepiej. Dowiedz się więcejRozumiem i akceptuję

Kurs STM32 - #4 - Sterowanie portami GPIO w praktyce

Autor Wiadomość
Treker 




Posty: 8520
Pomógł: 126 razy
Otrzymał 526 piw(a)
Skąd: Gdynia
Programuję w:
C, Arduino
Moje roboty:
Spectrum, Fuzzy

Wysłany: 10-12-2017, 11:55   

dzami97, witam na forum :) Czego dokładnie nie rozumiesz? Czy chodzi o operator "<<"? To jest przesunięcie bitowe.


Na udzielam odpowiedzi na pytania techniczne zadawane kanałami prywatnymi (maile, komunikatory, PW).
Sprawdź » Kurs ARDUINOKurs podstaw elektronikiZbuduj swojego robota - kurs!
Postaw piwo autorowi tego posta
 
 
dzami97 



Posty: 4
Wysłany: 10-12-2017, 12:50   

Treker, Ok, czyli mam rozumieć że GPIOx_SetBits(GPIOC ,1) ustawia pin zero portu x w stan wysoki, (GPIOx,"10") pin pierwszy, "100" pin drugi itd? Oczywiście jest to zapis binarny więc pewnie nie można go użyć w kompilatorze tak jak ja to zrobiłem czyli "10000" lub "10" stąd ta funkcja przesunięcia bitowego od "1" czyli jedynki na najmłodszym bicie. Z czego to wynika? Czy jest to odwołanie do rejestru? Kiedyś czytałem o rejestrze GPIOx_ODR. Czy on działa właśnie tak tzn jedynka na odpowiednim miejscu 16bitowego rejestru wyzwala stan wysoki w przypadku skonfigurowania portu wcześniej jako wyjście? Pytanie jeszcze o dokumentacje, gdzie najlpiej szukać opisu pinów i ich funkcji alternatywnych(który dokumnet ew. strona)? Czy w Eclipsie da się rozwinąć liste funkcji biblioteki na pasku po prawej lub lewej stronie? W Keilu była taka możliwość, w zakładce GPIO po rozwinięciu miałeś wszystkie funkcje dotyczące portów.

dzięki i pozdrawiam

Postaw piwo autorowi tego posta
 
 
Treker 




Posty: 8520
Pomógł: 126 razy
Otrzymał 526 piw(a)
Skąd: Gdynia
Programuję w:
C, Arduino
Moje roboty:
Spectrum, Fuzzy

Wysłany: 14-12-2017, 23:41   

dzami97 napisał/a:
Oczywiście jest to zapis binarny więc pewnie nie można go użyć w kompilatorze tak jak ja to zrobiłem czyli "10000" lub "10" stąd ta funkcja przesunięcia bitowego od "1" czyli jedynki na najmłodszym bicie. Z czego to wynika?


Jeśli wpisujesz "10000" to jest to traktowane jako liczba dziesiętna. Zapis binarny musi być poprzedzony stosownym przedrostkiem. Najczęściej korzysta się jednak z przesunięć bitowych, ponieważ jest to najwygodniejsze :)


Na udzielam odpowiedzi na pytania techniczne zadawane kanałami prywatnymi (maile, komunikatory, PW).
Sprawdź » Kurs ARDUINOKurs podstaw elektronikiZbuduj swojego robota - kurs!
Postaw piwo autorowi tego posta
 
 
dejmieno 



Posty: 71
Otrzymał 5 piw(a)
Programuję w:
Java, C
Wysłany: 13-02-2018, 22:57   

Udało mi się zrobić licznik Johnsona.

Kod programu: Zaznacz cały
    uint32_t counter = 0;

    int setBits = 0b0000000001;
    int resetBits = 0b0000000000;
    while (1) {
        GPIO_SetBits(GPIOC, setBits << counter);
        GPIO_ResetBits(GPIOC, resetBits << counter);

        counter++;
        if (counter >= 10) {
            setBits = setBits ^ 0b0000000001;
            resetBits = resetBits ^ 0b0000000001;
            counter = 0;
        }
        delay_ms(1000);
    }


Brakowało mi ustawiania pinów tak jak w AVR gdzie jeśli podałem 0 to zapisywał do rejestru 0 a jeśli 1 to zapisywał jeden. Dzięki temu mógłbym tylko negować zbiór bitów.

Ale tutaj mamy dwie procedury jedną do ustawiania 1 i jedną do ustawiania 0 więc musiałem zrobić dwa zbiory bitów.

Czy da się to zrobić jakoś lepiej?

[ Dodano: 14-02-2018, 17:34 ]
I mam jeszcze pytanie odnośnie przerwań.

Po co na początku konfigurować numer linii:

exti.EXTI_Line = EXTI_Line13;

Skoro później i tak muszę podać port i numer pinu?

GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13);

Rozumiem, że numer linii 13 jest dlatego że przycisk jest pod pinem 13 tak?

Ostatnio zmieniony przez dejmieno 14-02-2018, 17:53, w całości zmieniany 4 razy  
Postaw piwo autorowi tego posta
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Wersja do druku

Skocz do:  

Nie rozwiązałeś swojego problemu? Zobacz podobne tematy: Kurs STM32 - #2 - Po... Kurs STM32 - #1 - Za... Kurs STM32 - #3 - Pł... Kurs STM32 - #5 - Ko...
lub przeszukaj forum po wybranych tagach: artykuly, elektronika, majsterkowanie, robotyka, wiadomosci


Powered by phpBB modified by Przemo © 2003 phpBB Group
Popularne kursy: Arduinopodstawy elektroniki