Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[C, STM32 CM3] - Bardzo wydajne funkcje obsługujące / rekonfigurujące porty.

stanleysts 22 Sep 2013 03:01 1392 5
  • #1
    stanleysts
    Level 27  
    Witam, chciałem się poradzić wyjadaczy (albo każdego kto się zna i może coś doradzić) od STM32F103 nt. wydajnej obsługi portów na tym procku. Nie pisałem dużo rzeczy na te procki a już szczególnie nie takie które wymagały świetnej wydajności. Teraz bardzo zależy mi na tym, zarówno na obsłudze portów typu (odczytaj port/zapisz na port, odczytaj/zapisz bit) jak i na ponownej szybkiej ich rekonfiguracji do innych celów.

    Musi to być nie ukrywam szybkie rozwiązanie dostępne na te uC, ale znów nie kosztem czytelności, dlatego kod jest w C.

    I teraz oto sobie dzisiaj po południu usiadłem do manuala i napisałem coś takiego na szybko, będę wdzięczny, jeśli powiecie mi co można ewentualnie jeszcze przyspieszyć.

    Z góry dziękuję!

    Code: c
    Log in, to see the code


    Code: c
    Log in, to see the code
  • #2
    alagner
    Level 26  
    Właśnie wymyśliłeś przykład ze strony Freddiego ;)
  • #3
    Freddie Chopin
    MCUs specialist
    alagner wrote:
    Właśnie wymyśliłeś przykład ze strony Freddiego ;)

    Ciężko się nie zgodzić (;

    Jedyne czego w przykładach nie ma to konfiguracji większej ilości pinów, ale dorobienie tego nie jest żadną filozofią...

    4\/3!!
  • #4
    stanleysts
    Level 27  
    Huh? :D Śmiesznie, że nie widzialem tego wczesniej na oczy, jeśli mowisz o przykładzie z LEDami bo taki znalazłem.

    Ale jedyne podobieństwo jakie widzę to jest funkcja konfigurująca PIN (nie ma żadnych do sterowania portami).
    I tu mam od razu pytanie, bo moja jest dłuższa niż Freddiego - minaowicie ja dla trybow input /PD-PU jeszcze robie magiczne ustawianie rejestru ODR na odpowiednią wartość a tego u Ciebie Freddie nie ma - w manulau w tej tabelce odnośnie configu portów znalazłem info, że tak ma być - chociaż co ma ODR do trybu input - przecież jak działam w input to wyjście mam wogóle odłączone i ODR chyba nie powinien robić różnicy ??
  • Helpful post
    #5
    Freddie Chopin
    MCUs specialist
    ODR steruje wtedy pullupem jeśli taki tryb działania wybierzesz.

    Co do funkcji działających na portach, to - jak pisałem wyżej - dorobienie takiej która robi konfigurację dla więcej niż jednego pinu to 2 linijki, a taka która wystawia wartość czy ją odczytuje jest bezsensu, bo od tego masz rejestry, więc czemu nie odczytać ich wprost (ewentualnie funkcja inline).

    4\/3!!
  • #6
    stanleysts
    Level 27  
    No jak one są inline (tak jest jw.) to wcale nie jest takie bez sensu :P Zresztą mi się lepiej czyta kod jak mam to jako funkcje a nie gołe odwołania do rejestrów.
    A makr wole do tego unikać bo mi kontrola typów znika.

    Dzięki za info z ODR!