Skocz do zawartości

Kurs STM32 - #4 - Sterowanie portami GPIO w praktyce


Komentator

Pomocna odpowiedź

To w takim razie musisz zajrzeć do dokumentacji swojego mikrokontrolera lub poszukać odpowiednich przykładów. Na przykład w Twoim przypadku szyna, do której podłączony jest port GPIOA, nie nazywa się APB2 - pewną wskazówkę masz w komunikatach kompilatora u dołu programu (AHB). Analogicznie, w używanym przez Ciebie sprzęcie mogą nie istnieć pewne tryby (GPIO_mode) działania pinów układu, które istnieją w F103.

  • Lubię! 1
Link do komentarza
Share on other sites

Ogólnie w dokumentacji (F303) masz taki rysunek:

image.thumb.png.58809b91dd3c4e6629f622396dab5345.png

W dokumentacji F103 (takiej, jak w kursie) masz inny rysunek:

image.thumb.png.d358b0090e78c132c227bf4bdb46da63.png

Możesz jeszcze zajrzeć do dokumentu opisującego różnice między seriami:

https://www.st.com/content/ccc/resource/technical/document/application_note/8e/c8/8d/e3/ee/ff/44/e6/DM00073522.pdf/files/DM00073522.pdf/jcr:content/translations/en.DM00073522.pdf

Znajdziesz tam na przykład takie informacje:

image.thumb.png.74515923685ea56e4b504baae0dc37df.png

Twój kompilator zresztą Cię o tym poinformował:

image.thumb.png.1c1ec352013f3017302272443dcf7077.png

Po prostu powinieneś wstawić AHB w miejsce APB2 w kodzie programu. To powinno zlikwidować pierwszy błąd. (Przyznam szczerze, że nie chce mi się szukać dlaczego funkcja ma w nazwie AHB zamiast AHB2 - możesz poszukać.) Mam nadzieję, że z kolejnymi błędami sobie poradzisz. Decydując się na przerobienie zadań z kursu na innym niż dedykowanym zestawie, musisz liczyć się z tego typu różnicami pomiędzy różnymi seriami stmów.

Przez pomyłkę poniższy rysunek dodał się dwa razy - nie umiem go usunąć:

image.png

Edytowano przez piotr96
Zdublowany rysunek (na dole wiadomości) - brak możliwości usunięcia.
  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

dzięki za odpowiedz ale chodzilo mi o to jak znalezc jakis dokument ze spisem komend do mojego mikroprocesora bo oczywiscie po poprawieniu tych bledow pojawiaja sie kolejne, przegladanie plikow z biblioteki niestety nie na wszystko daje odpowiedz

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Jeśli chodzi Ci o opis biblioteki StdPeriph dla Twojego mikrokontrolera, to zapoznaj się z tym dokumentem:

https://www.st.com/content/ccc/resource/technical/document/user_manual/d1/02/f0/b6/1a/8a/43/de/DM00068049.pdf/files/DM00068049.pdf/jcr:content/translations/en.DM00068049.pdf

Jeżeli chcesz zapoznać się z rejestrami stma, to odpowiedni będzie reference manual.

Link do komentarza
Share on other sites

A ja mam pytanie odnośnie linijki LED: załóżmy, że chcielibyśmy podłączyć sobie linijkę led trochę inaczej, tj. w taki sposób, że anody led podłączylibyśmy do pinu 3.3 V na płytce, czyli musielibyśmy załączać diody zerem z pinów GPIO. I tu pytanie, jak dostosować w takim wypadku kod, a zwłaszcza linijkę: 

gpio.GPIO_Mode = GPIO_Mode_Out_PP;

Jak to sensownie zrobić?:c

Link do komentarza
Share on other sites

dlaczego w programie zawarte sa piny 

gpio.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|

GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;

do , których przewody nie sa podpięte tylko są podpięte do wejsc analogowych to jest A5, A4, A3 , czy nie można byłoby podpiąć wszystkie przewody do wejść cyfrowych jęsli tak to jak wyglądałby wtedy kod?

 

Link do komentarza
Share on other sites

 * @file    main.c
  * @author  Ac6
  * @version V1.0
  * @date    01-December-2013
  * @brief   Default main function.
  ******************************************************************************
*/

#include "stm32f10x.h"

int main(void)
{
	GPIO_InitTypeDef gpio;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD, ENABLE);


	GPIO_StructInit(&gpio);
	gpio.GPIO_Pin=GPIO_Pin_4;
	gpio.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_Init(GPIOA,&gpio);
	gpio.GPIO_Pin=GPIO_Pin_7;
	gpio.GPIO_Mode=GPIO_Mode_IPU;
	GPIO_Init(GPIOC,&gpio);
	while(1)
	{
		if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_7)==0)
		{
			GPIO_SetBits(GPIOA,GPIO_Pin_4);

		}else{
			GPIO_ResetBits(GPIOA,GPIO_Pin_4);
		}
	}
}



mam pytanie, chciałam napisac program , który polega na tym, że gdy wcisne przycisk dioda LED na płytce stykowej zapali się, program napisałam taki jaki jest powyżej jest do bry ale to nie działa, co robie źle?

IMG_20210901_234857775.jpg

Link do komentarza
Share on other sites

I czy ktoś jest mi w stanie wytłumaczyć to ?

dlaczego w programie zawarte sa piny 

 

gpio.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|

 

GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;

 

do , których przewody nie sa podpięte tylko są podpięte do wejsc analogowych to jest A5, A4, A3 , czy nie można byłoby podpiąć wszystkie przewody do wejść cyfrowych jęsli tak to jak wyglądałby wtedy kod?

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.