Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

STM32F100 - jak włączyć piny PD0, PD1?

el2010tmp 24 Sty 2014 15:07 945 4
  • #1 24 Sty 2014 15:07
    el2010tmp
    Poziom 25  

    Witam.

    Od niedawna staram się zapoznać z uC STM32 i chciałbym skorzystać z pinów PD0,PD1 uC stm32f100.

    Mój kod wygląda następująco:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Jednak zawartość bitu GPIO_Remap_PD01 w rejestrze AFIO->MAPR pozostaje bez zmian a wejście nie działa.
    Bezpośrednie ustawienie bitu
    Kod: c
    Zaloguj się, aby zobaczyć kod

    również jest bezskuteczne.
    Nie mam już pomysłu jak te piny uruchomić.
    Korzystam oczywiście z wewnętrznego RC, konfiguracja zegara to:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Będę wdzięczny za podpowiedź.

    0 4
  • #2 24 Sty 2014 16:36
    Freddie Chopin
    Specjalista - Mikrokontrolery

    el2010tmp napisał:
    AFIO->MAPR|=GPIO_Remap_PD01;

    W tym momencie do rejestru przypisałeś jakąś tam wartość sensowną jedynie dla funkcji z biblioteki SPL (bezsensowną/błędna z punktu widzenia rejestru)...

    4\/3!!

    0
  • #3 24 Sty 2014 16:52
    el2010tmp
    Poziom 25  

    Freddie Chopin napisał:
    el2010tmp napisał:
    AFIO->MAPR|=GPIO_Remap_PD01;

    W tym momencie do rejestru przypisałeś jakąś tam wartość sensowną jedynie dla funkcji z biblioteki SPL (bezsensowną/błędna z punktu widzenia rejestru)...

    4\/3!!


    GPIO_Remap_PD01==0x8000

    czyli AFIO->MAPR|=GPIO_Remap_PD01; powinno ustawić 15 bit rejestru AFIO->MAPR który w dokumentacji jest opisany jako:
    PD01_REMAP: Port D0/Port D1 mapping on OSC_IN/OSC_OUT
    Jednak w żaden sposób nie mogę ustawić tego bitu i nie wiem co robię nie tak. Pewnie wcześniej należy coś gdzieś jeszcze przestawić jednak nie mogę znaleźć tego w dokumentacji.

    0
  • Pomocny post
    #4 24 Sty 2014 17:03
    Freddie Chopin
    Specjalista - Mikrokontrolery

    el2010tmp napisał:
    GPIO_Remap_PD01==0x8000

    Może i w tym akurat przypadku się zgadza, ale wcale nie musi tak być... W nagłówku stm32f1x.h masz wszystkie potrzebne definicje, właściwa nazywa się AFIO_MAPR_...

    el2010tmp napisał:
    Pewnie wcześniej należy coś gdzieś jeszcze przestawić jednak nie mogę znaleźć tego w dokumentacji.

    Gdy chcesz używać GPIO należy je właczyć w RCC. Gdy chcesz używać AFIO, należy zrobić to samo.

    4\/3!!

    0
  • #5 24 Sty 2014 17:09
    el2010tmp
    Poziom 25  

    Freddie Chopin napisał:
    Gdy chcesz używać GPIO należy je właczyć w RCC. Gdy chcesz używać AFIO, należy zrobić to samo.


    To znaczy że chcąc użyć PD0,PD1 należy włączyć RCC dla AFIO ?
    Bo dla portu D mam załączone.

    Faktycznie pomogło. Dzięki.

    Poprawna wersja dla SPL:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    0