Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 8 lut 2025, o 11:38


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 19 ] 
Autor Wiadomość
PostNapisane: 10 mar 2015, o 11:26 

Pomógł: 0

Wrzucam (nie pełny, trzeba mieć GB :P) kod jak obsłużyć ładnie UART z STM32L152 (łatwo przeportować na inny) callbackami opisanymi w Green Booku.

uart.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


pliku .h nie ma sensu wrzucać, praktycznie to samo, po za dołączeniem iota, można olać, jeżeli wasz IDE wspiera.

Jak widać zmian jest niewiele, usunięte są niezmienione fragmenty skopiowane wprost z biblioteki Mirka z GB.


Tema wklejam jako ciekawostkę, że spokojnie można przeportować praktycznie każdą bibliotekę z książek Mirka bez większych problemów na inne procesory.

Nie udostępniam całej biblioteki, nie pomagam uruchomić całości (od tego jest GB). Nie odpowiadam w tej kwestii na PW.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2015, o 12:07 
Offline
Użytkownik

Dołączył(a): 01 lis 2013
Posty: 301
Pomógł: 32

Witam,

O proszę, sam przenoszę bibliotekę od uartu z GB, a idzie mi to bardzo powoli gdyż początkujący jestem, a tu taka niespodzianka. Świetnie, ale mam straszną awersję do konfigurowania peryferii za pomocą struktur, bo nic nie mogę z tego wywnioskować i jakieś takie ociężałe mi się to wydaje, więc z pomocą datasheeta powolutku skrobię konfigurację na rejestrach.

Pozdrawiam, Paweł

_________________
Pozdrawiam,
sq8mvy, Paweł



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2015, o 12:09 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27354
Lokalizacja: Szczecin
Pomógł: 1042

Widziałem że do procków STM jest takie fajne narzędzie, nazywa się jakoś Cube i tam się graficznie zaznacza z jakich peryferiów się korzysta a ono ładnie generuje cały kod do inicjalizacji ;) może warto tego spróbować ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2015, o 12:12 

Pomógł: 0

Na rejestrach to jest samobójstwo, masochizm w czystej postaci ;), ale co kto lubi.

Dla mnie istotna jest prostota i przenośność kodu, to nie Atiny z 1KB flasha i 64B ramu ;).

Można się sporo nauczyć przy rejestrach, ale j.w łatwo o błąd i dla mnie przynajmniej nie warto się męczyć, też byłem zwolennikiem pracowania na rejestrach, po wypowiedziach elektrodowych "śpeców"
Tylko, że jakoś na świecie panuje całkiem odwrotna tendencja, owszem, jak projekt chcesz wcisnąć w jakiegoś małego L0, to można się pobawić, ale wbrew pozorom, struktury nie takie straszne.
HAL jest przerośniety znaczniej, StdLibs są znośne.

------------------------ [ Dodano po: kilkunastu sekundach ]

Cytuj:
Widziałem że do procków STM jest takie fajne narzędzie, nazywa się jakoś Cube i tam się graficznie zaznacza z jakich peryferiów się korzysta a ono ładnie generuje cały kod do inicjalizacji ;) może warto tego spróbować ?


Dokładnie tak, z tym że on generuje właśnie w HAL, co prawda przy dużych prockach kilka KB w tą czy w tą nie robi różnicy ;).

No i można zobaczyć jak to wszystko jest inicjowane itd.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2015, o 12:38 
Offline
Użytkownik

Dołączył(a): 01 lis 2013
Posty: 301
Pomógł: 32

Witam,

Cytuj:
Na rejestrach to jest samobójstwo, masochizm w czystej postaci ;), ale co kto lubi.


W przypadku UARTA i pracy w trybie 8n1 oczywiście bez DMA to ustawienie zaledwie paru bitów.
Fakt, że na początku datasheet nie opuszcza rąk, ale nie jest to aż taką tragedią, jak to większość opisuje.

Konfigurację zegara też pisałem na rejestrach i bezproblemowo ruszyło. Ważne, aby zrozumieć zasadę i kolejność działania. Dla mnie początkującego, łatwiej jest w taki sposób konfigurować, ktoś inny robi to inaczej.

Cytuj:
Widziałem że do procków STM jest takie fajne narzędzie, nazywa się jakoś Cube....


Tak Mirku jest to STM32CubeMx, działa bezproblemowo również pod linuksem, ale jak popatrzyłem w kod który wygenerował to też wszystko było konfigurowane poprzez struktury. Fakt łatwiej jest, bo tylko się klika i widać jak na dłoni wszystkie ustawienia.

Cytuj:
Dokładnie tak, z tym że on generuje właśnie w HAL....


W HAL to chyba tylko dla procków stm32F4 z tego co zauważyłem, natomiast dla stm32f1 (akurat w nucleo taki mam) generuje w stdlibs. Mogę się oczywiście mylić, gdyż dla innych nie próbowałem generować.

Pozdrawiam, Paweł

_________________
Pozdrawiam,
sq8mvy, Paweł



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2015, o 12:52 

Pomógł: 0

gizmo5418 napisał(a):
W HAL to chyba tylko dla procków stm32F4 z tego co zauważyłem, natomiast dla stm32f1 (akurat w nucleo taki mam) generuje w stdlibs. Mogę się oczywiście mylić, gdyż dla innych nie próbowałem generować.


Mylisz się, dla L1 też generuje w HAL.

gizmo5418 napisał(a):
ale nie jest to aż taką tragedią, jak to większość opisuje.


Na początku może i nie jest, bo j.w pisałem poznajesz procesor, ale w przypadku gdy ważna jest przenośność kodu, czy szybkość implementacji, tragedia to mało powiedziane.

Jak pisałem, "śpeców" którzy twierdzą że na rejestrach jest łatwo, przewala się przez polski internet mnóstwo, tylko spróbuj zapytać o coś, albo znajdź dobre przykłady, nie migania diodą czy właśnie prostej konfiguracji UARTa, a coś bardziej zaawansowanego. Powodzenia.

Ale nie wyższość rejestrów nad CMSIS/HAL jest tematem tego topicu ;).



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2015, o 13:18 
Offline
Użytkownik

Dołączył(a): 02 lut 2014
Posty: 60
Pomógł: 1

Cube generuje kod z użyciem HAL i w dodatku pod pewne środowiska, oczywiście można to sobie potem ręcznie poprzerabiać, przy okazji nauczyć się tego i owego. Niema to jednak jak datascheet i rejestry, na początku ciężko i oczy rozbiegane po rozdziałach ds, ale jak już opanujesz to wiesz co robisz i kod jakiś lżejszy :)

------------------------ [ Dodano po: 2 minutach ]

Cube generuje kod z użyciem HAL i w dodatku pod pewne środowiska, oczywiście można to sobie potem ręcznie poprzerabiać, przy okazji nauczyć się tego i owego. Niema to jednak jak datascheet i rejestry, na początku ciężko i oczy rozbiegane po rozdziałach ds, ale jak już opanujesz to wiesz co robisz i kod jakiś lżejszy :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2015, o 13:28 

Pomógł: 0

rezasurmar napisał(a):
Na rejestrach to jest samobójstwo, masochizm w czystej postaci ;)

Ale za to o ile prościej i mniej pisaniny ;P
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

w porównaniu z tym:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Próba skonfigurowania ciekawszych peryferiów (typu np. FMC/FSMC) z wykorzystaniem bibliotek to jest elaborat na kilka stron ;)

Sprawdzałeś może jak kompilator reaguje na "register" w odniesieniu do zmiennej 8bit?



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2015, o 13:31 

Pomógł: 0

wwojtek napisał(a):
Sprawdzałeś może jak kompilator reaguje na "register" w odniesieniu do zmiennej 8bit?


Nie.

Ani nie prościej, ani mniej ;), bo to tylko kolejne powielanie tych samych bloków, to po pierwsze, po drugie spróbuj to szybko przenieść na inny procek ;).
No i j.w pisałem, to nie jest tematem topicu co lepiej ;).

Już kilka razy były prośby na forum, o przykłady dla STM/Kinetis, na rejestrach, echo.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2015, o 19:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 paź 2014
Posty: 54
Pomógł: 0

Trzeba dodatkowo poruszyć fakt, żeby pisać w tym Std od ST to trzeba przebrnąć przez dokumentację samej biblioteki - czego oczywiście zdecydowana większość nie robi - bo są gotowce w internecie i ot po prostu copy & paste. Powiedz, żeby inaczej skonfigurowali dane peryferium i zaczynają się schody. Czasami takie coś robi, aby podnieść swoją samoocenę (?) że robię na ARM. Każdy niech pisze w tym co lubi, ważne, żeby kod rozumiał i wiedział co tak naprawdę się dzieje.

PS. W firmach zajmujących się systemami wbudowanymi "pisze się po rejestrach".

Moim skromnym zdaniem byłbym skłonny powiedzieć, że dokumentacja do STMów jest tak samo przyjemna jak do AVR, z tą różnicą, że w AVR znajdziemy gotowe kody w dokumentacji, a tutaj how-to, spis rzeczy które trzeba ustawić, żeby ruszyć. Warto spróbować wielu środków, aby wybrać ten dla siebie najodpowiedniejszy.

_________________
Likwidator absolutny.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2015, o 20:48 
Offline
Użytkownik

Dołączył(a): 29 lip 2014
Posty: 195
Pomógł: 44

Witam,

rezasurmar, dzięki. -). Właśnie taką obsługę UART-a miałem sobie napisać, korzystając z GB, zaoszczędziłeś mi pracy, jeszcze raz dzięki.

A co do pisania "po rejestrach", czy korzystania z STDlibs, no cóż, temat wraca jak bumerang. Najlepiej chyba podsumowuje to:
Likwidator napisał(a):
...Każdy niech pisze w tym co lubi, ważne, żeby kod rozumiał i wiedział co tak naprawdę się dzieje.

Ja już chyba się w życiu "po rejestrach" napisałem ( dużo robiłem na '51 w .asm), więc teraz, jeśli tylko mogę, staram się korzystać z STDLibs, "cudzych" bibliotek i czego się tylko da, aby bez potrzeby się nie narobić...
Pozdrawiam, QuadMan.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2015, o 21:43 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27354
Lokalizacja: Szczecin
Pomógł: 1042

A ja powiem tak, jeśli chodzi o porównanie np kolegi wwojtek (wyłuskałem tylko USART)

wwojtek napisał(a):
Ale za to o ile prościej i mniej pisaniny ;P

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


wwojtek napisał(a):
w porównaniu z tym:


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


TYLKO proszę mnie źle nie zrozumieć i proszę cię wwojtek nie odbierz tego jakbym miał coś ci za złe ....

dla mnie ZDECYDOWANIE ten drugi sposób jest lepszy nawet jeśli jest więcej tej pisaniny ;) ... dlaczego? prosta sprawa - bo czytam i widzę co ustawiam, nie potrzebuję sięgać do noty PDF żeby sprawdzić co znaczy który bit i rejestr .... ;) .... Ale ok gdyby chodziło o to że na świecie są TYLKO freelancerzy czyli pojedynczy programiści to czort z tym - każdy sobie rzepkę skrobie - niech piszę jak chce ... I można byłoby na tym temat zamknąć - gdyby nie fakt - że jednak na świecie są też zespoły programistów i chodzi o pewne ułatwienia. Ale PAL PIES na razie zespoły programistów. Jeszcze chwilkę spójrzmy z poziomu pojedynczego freelancera ;) czyli mnie samego. To ja mogę jeszcze jedną rzecz powiedzieć na obronę tego "długiego niby kodu - tej pisaniny" .... co? ... otóż jeśli odłożę go nawet na 10 lat (tak tak - to normalne i tak się może zdarzyć - pomimo to że młodzi ludzie widzą TYLKO to co jest TU i TERAZ i rzadko myślą co będzie za 10 ba! nawet za 5 albo i za 2 lata ;) ....

to jest to o czym piszę i o czym MÓWIĘ wyraźnie i przez całą swoją pierwszą książkę niebieską ale i zieloną i w każdym poradniku ;) ZAWSZE starajmy się pisać kod tak jakbyśmy go pisali dla jakiegoś zespołu programistów a nie dla samego siebie ... dlaczego ? bo PAMIĘĆ ! ... o ile ta elektroniczna bywa niezawodna to ta w głowie zawodzi i to KAŻDEGO .....

spójrz sobie na moje przykłady z Bluebooka gdzie pokazuję jak programuje hmmm (bez urazy nie mówię wwojtek tego teraz do ciebie) ... niedoświadczony programista

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


a jak to samo programuje nieco bardziej doświadczony programista pomimo że musi się więcej rozpisać:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Matko! ... na górze jedna linijka a na dole aż trzy linijki ;) co więcej przez te operacje |= stracimy kilka bajtów! ... o żesz w mordę ;) nio trudno ale wolę tak pisać bo nie tylko ja będę wiedział za 10 lat od razu o co kaman i to nawet gdyby tu komentarzy nie było .... Z drugiej zaś strony gdyby ten początkujący po tym = 0xB2; dodał komentarze a chciał szybko później zmienić preskaler to już widzę jak po 10 latach pamiętałby które bity w tym procku odpowiadają za preskaler ....

Co więcej - ten mój drugi rozpisany sposób - spowoduje - że jeśli przypadkiem będę musiał komuś przekazać ten kod - to czas na jego analizę zajmie minimum czasu ....

REASUMUJĄC - jak zajrzałem sobie do ARM'ów to okazało się, że tu jest sporo fajnych narzędzi które nie tylko ułatwiają i porządkują pracę ale przede wszystkim pozwalają aby kod był bardziej czytelny ....

No ja rozumiem że ludzie przy AVR'kach się wykłócali kto napisze kod o kilka bajtów mniejszy gdy np brali ATtiny5 ! :) .... ale TU?!?!?! ... przy potworach ARM/ach z dużą ilością każdej pamięci .... nadal toczyć boje i kopie o kilkaset nawet bajtów ? o ew czas wykonania i to czego - inicjalizacji procka czy zajmie to już nawet nie ileś ms a us !? ;) nie nie nie ... brrrr to brzmi dla mnie osobiście troszkę jak koshmar ....

Poza tym nie za bardzo mogę zrozumieć tych kilka wypowiedzi niektórych kolegów wyżej - że to programowanie za pomocą struktur jest mniej czytelne - że co ? że mniej czytelne ? JEZU ? no to może hmmm programujemy w całkiem innych językach ? Struktury i długie nazwy przepięknie tu porządkują to co dla OKA! To ma w efekcie końcowym dać co? OSZCZĘDNOŚĆ CZASU!

Ale jak mówię - na szczęście - i tak każdy zrobi jak lubi ;) zresztą kolega mokrowski jak zwykle zresztą z charakterystycznym dla siebie ale jakże fajnym podejściem - jeśli chodzi o mnie - to PRZEŚLICZNIE to opisał. Ja tylko wypowiadam się tu jako gość - który po raz pierwszy dotyka i patrzy na kod ARM'ów i takie tam ma luźne proste przemyślenia

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 mar 2015, o 01:05 

Pomógł: 0

Pięknie... wrzuciłem kod z komentarzem "z przymrużeniem" oka, a się zrobiła wojna o bibliotekę. Nieśmiało chciałbym przypomnieć, że temat nie o tym ;) Koledze Mirkowi odpowiedziałem na PW, jeśli uzna za stosowne to można przenieść dyskusję do osobnego wątku o bibliotekach vs rejestrach - tylko pewnie doprowadzi to do kolejnego tasiemcowatego wątku o wyższości jednych świąt nad innymi ;) Na post kolegi mokrowskiego ciężko odpowiedzieć, bo choć pisze o "polemice", to wszystko zawarł w "sarkazm-mode" i bliżej nie wiadomo do czego się odnieść ;)



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 11 mar 2015, o 03:34 

Pomógł: 0

W sumie miałem zapisane kilka dosadnych odpowiedzi do maruderów w temacie, ale w sumie podsumowanie zrobił Mokrowski i Mirek.
Do reszty się nie ma co odnosić po za przykładem wwojtka (który jako jedyny wkleił kod na poparcie swej tezy), co prawda teza ma dwa końce, bo kod krótszy ale totalnie nieczytelny ;).

Kod wkleiłem dla początkujących, którzy jak ja ze świecą szukają przykładów.
99% dobrych i sprawdzonych kodów jest na Libsach/hal/cmsis
Zachodnie fora pękają w szwach od kodów na libsach, tylko u nas taka jakaś dziwna maniera, pomarudzić że Libsy złe, ale już pokazać jak zrobić przenośny kod bez nich, to nie ma chętnego.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 11 mar 2015, o 07:24 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27354
Lokalizacja: Szczecin
Pomógł: 1042

wwojtek napisał(a):
Pięknie... wrzuciłem kod z komentarzem "z przymrużeniem" oka, a się zrobiła wojna o bibliotekę. Nieśmiało chciałbym przypomnieć, że temat nie o tym ;) Koledze Mirkowi odpowiedziałem na PW, jeśli uzna za stosowne to można przenieść dyskusję do osobnego wątku o bibliotekach vs rejestrach - tylko pewnie doprowadzi to do kolejnego tasiemcowatego wątku o wyższości jednych świąt nad innymi ;) Na post kolegi mokrowskiego ciężko odpowiedzieć, bo choć pisze o "polemice", to wszystko zawarł w "sarkazm-mode" i bliżej nie wiadomo do czego się odnieść ;)

Rzeczywiście nie ma co robić offtopu ani przenosić chyba do oddzielnego wątku i nie ma o co łamać kopii , nie ma co się kłócić ... ja się wypowiedziałem w temacie ARM jako żółtodziób i zakładam że mogę wcale nie mieć racji, opowiedziałem o swoich wrażeniach na pierwszy rzut oka a one mogą być mylące. Pewnie kiedyś wrócę do takich tematów jak będę siedział w tych zagadnieniach ARM głębiej ;) ... I na pewno nie było moim celem podsycanie jakiejś wojny czy burzy "co lepsze" ... wspomniałem na końcu że i tak każdy zrobi tak jak lubi. Więc proponuję zakończmy te spory w tym wątku.

------------------------ [ Dodano po: 2 minutach ]

rezasurmar napisał(a):
Kod wkleiłem dla początkujących, którzy jak ja ze świecą szukają przykładów.

I na tym się skupmy jak już ;) ... Bo doświadczony sobie zawsze poradzi a początkujący będzie długo błądził

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 mar 2015, o 09:45 
Offline
Użytkownik

Dołączył(a): 01 lis 2013
Posty: 301
Pomógł: 32

Witam,

Widzę, że chyba mój post wywołał niepotrzebną wojnę. Nie było to zamierzone. Ale wracając do przewodniego tematu mam pytanie. Tak powoli analizuję sobie tą konfigurację UARTA i czy:

Kod:
          //PA9 - Tx
       GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;
       GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;
       GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
       GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
       GPIO_Init(GPIOA, &GPIO_InitStruct);
 
        //PA10 - Rx
        GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;
        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
        GPIO_Init(GPIOA, &GPIO_InitStruct);


PA10 - Rx nie jest tu ustawiony również jako wyjście alternatywnej funkcji ? Pola struktury
Kod:
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;

po ustawieniu pinu PA9 - TX nie powinny zmienić chyba swojej zawartości, więc są również użyte do konfiguracji PA10- Rx , który powinien być ustawiony, jeśli dobrze myślę, jako wejście o wysokiej impedancji. Proszę mnie naprowadzić na prawidłowy tok myślenia.

Pozdrawiam, Paweł

_________________
Pozdrawiam,
sq8mvy, Paweł



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 mar 2015, o 10:37 

Pomógł: 0

Z moich informacji, po prostu chodzi o to, że jako wejście RX, interesuje cię tylko włączenie pinu jako alternative mode, czyli nie włączasz żadnych podciągań itp.

Dla TX, musisz ustawić tryb pinu czy PP, itp. oraz zegar dla PINU, w tym wypadku masz kontrolę nad "EMI" bo nie potrzeba by czas narastania/opadania przy uarcie był tak krótki = mniejszy czas = większe zakłócenia. Tak łopatologicznie i w telegraficznym skrócie.

Może mnie jakiś bardziej ogarnięty kolega poprawić ;).



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 11 mar 2015, o 11:44 
Offline
Użytkownik

Dołączył(a): 01 lis 2013
Posty: 301
Pomógł: 32

Witam,

Cytuj:
Z moich informacji, po prostu chodzi o to, że jako wejście RX, interesuje cię tylko włączenie pinu jako alternative mode, czyli nie włączasz żadnych podciągań itp.


Tak, rozumiem tryb funkcji alternatywnych. Według dokumentacji, jeżeli ją oczywiście dobrze zrozumiałem, to tryb alternatywnej funkcji ustawia się tylko dla wyjść (tu jako linia TX), bo taką funkcję można ustawić (jak i prędkość czyli szybkość zboczy), natomiast pin pracujący jako wejście (w tym przypadku linia jako RX) nie ma możliwości ustawienia funkcji alternatywnej (również ustawianie prędkości też wejścia nie dotyczy), więc ustawia się ją tylko jako zwykłe wejście pływające, lub ostatecznie pull-up.

Dlatego według mojego rozumowania, tu:
Kod:
//PA10 - Rx
        GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;
        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
        GPIO_Init(GPIOA, &GPIO_InitStruct);


pin 10 został skonfigurowany jako wyjście dla funkcji alternatywnej jako push-pull ( jak wynika z zawartości pola GPIO_OType w strukturze)

Dobrze myślę ?

Pozdrawiam, Paweł

_________________
Pozdrawiam,
sq8mvy, Paweł



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 mar 2015, o 12:16 

Pomógł: 0

Trochę namieszałeś, bo typ PushPull dotyczy tylko wyjść, a nie wejść.

Co do ustawiania podciągania, bo pewnie to miałeś na myśli to nie wnikałem, gdyż w przypadku zgodnego z standardem UART nic nie wymuszam na wejściu bo i po co ;).

Prędkość to to samo, jako wejście nie masz takiej możliwości nawet.

Więc dla wejścia jak zaznaczyłeś, ustawiam tylko tryb GPIO_Mode_AF, czyli wyłącznie tryb alternatywny dla danego w tym wypadku GPIO_Pin_10 pinu.

Tyle.
Dosyć dobrze to jest opisane w Galewskim (taka zielona ;), z BTC).



Góra
  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 19 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO