Electrokit Buggfix Plus
Aktuellt datum och tid: 00.11 2019-05-23

Alla tidsangivelser är UTC + 1 timme




Svara på tråd  [ 38 inlägg ]  Gå till sida 1, 2, 3  Nästa
Författare Meddelande
InläggPostat: 20.03 2018-11-25 
Användarvisningsbild

Blev medlem: 22.59 2012-09-11
Inlägg: 2855
Ort: The U.S - Chicago
Jag har genererat ett litet projekt med STMCubeMX till mitt STM32 Nucleo kort och hittat ett exempelkod på internet.

Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
while (1)
  {
    /* USER CODE END WHILE */
     HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
     HAL_Delay(500);
    /* USER CODE BEGIN 3 */
  }


Men vad betyder just denna del:
Citera:
GPIOA


?

Jag förstår att STM32 använder något bibliotek vid namn HAL. GPIO_TogglePin är alltså en GPIO som behåller sin status.
På mitt STM32 kort så finns det dock ingen GPIO_PIN_5, utan D5. Borde man inte skriva D5 då istället? Precis som Arduino?

Någon som kan vägleda mig hur man använder GPIO pinnarna? Läsa, skriva digitalt och analogt tänker jag börja med. Där efter blir det SPI, I2C, CAN och UART.


Upp
 Profil  
 
InläggPostat: 20.20 2018-11-25 
EF Sponsor
Användarvisningsbild

Blev medlem: 15.29 2005-05-10
Inlägg: 37431
Ort: Söderköping
"D5", "GPIO_PIN_5" (o.s.v.) är ju bara symboler som sannolikt har ett
värde som pekar ut pinnen i fråga. De (symbolerna) kan ju heta precis
vad f-n som helst och det finns absolut ingen som helst anledning att
de skulle råka heta samma sak i olika miljöer. Du får väl helt enkelt
lära dig och hålla dig till den miljö/processor som du använder just nu.

Så varför nämna Arduino alls då du ju faktiskt använder STM32 !?

> GPIO_TogglePin är alltså en GPIO som behåller sin status.

Låter som en väldigt märklig tolkning! Min spontana gissning är att
det är en funktion som togglar en pinne...

> Men vad betyder just denna del: "GPIOA"

http://embedded-lab.com/blog/stm32-gpio-ports-insights/

"In any microcontroller there is at least one general purpose input-output port.
STM32 is a not different breed and as expected it also has several GPIO ports.
These ports are usually named GPIOA, GPIOB, etc. but unlike most 8/16-bit micros
these ports are 16 bit wide. Thus, in general, every port has 16 IO pins. Port pins
have several modes of operation and this is what that makes them both robust and
complex at first. In development boards the IO port pin naming is cut short and so
we’ll find PA0, PB12, etc. instead of GPIOA0, GPIOB12, etc. Even in the reference
manuals this short naming is used widely. In the end every I/O pin is general
purpose in nature."


Upp
 Profil  
 
InläggPostat: 21.15 2018-11-25 
Användarvisningsbild

Blev medlem: 22.59 2012-09-11
Inlägg: 2855
Ort: The U.S - Chicago
Finns det ingen referensmanual till att använda pinnarna? När jag menar referensmanual så menar jag en tydlig välskriven lista med exempel. Inte massa teori och bortförklaringar ;)


Upp
 Profil  
 
InläggPostat: 21.35 2018-11-25 
EF Sponsor
Användarvisningsbild

Blev medlem: 15.29 2005-05-10
Inlägg: 37431
Ort: Söderköping
Det var ju en tråd om STMCubeMX för ett par månader sedan.
http://elektronikforumet.com/forum/viewtopic.php?f=7&t=92907
Jag utgår från att du såg det och har läst det. Om inte, gör det.
Sen kan du ställa frågor. Det var en intressant tråd, för övrigt.


Upp
 Profil  
 
InläggPostat: 21.44 2018-11-25 
Användarvisningsbild

Blev medlem: 18.17 2004-02-11
Inlägg: 9113
Ort: Knivsta
Registrena du behöver sätta för att styra funktioner i uc finns beskrivna i referensmanualen.

Sen har väl din kompilator leverantör exempel på hur du sätter register hanterar interrupt osv? Den kompilator jag använder för stm32 har det i alla fall (iar's)

Halen är beskriven i en separat dokumentation, personligen tycker jag den strular till mer än underlättar... men jag kommer ju så att säga underifrån, och inte från någon abstrakt windowsutveclling....


Upp
 Profil  
 
InläggPostat: 22.06 2018-11-25 

Blev medlem: 13.07 2005-12-30
Inlägg: 439
Det är inte så svårt:
  HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);

första argumentet är porten A och argumentet är pinne 5. Dvs pinne A5 tooglar...


Jag tror det står i kommentar ovanför funktionen om jag inte minns fel...


Upp
 Profil  
 
InläggPostat: 23.40 2018-11-25 

Blev medlem: 21.06 2011-01-29
Inlägg: 833
> Jag tror det står i kommentar ovanför funktionen om jag inte minns fel...

Måste man läsa?!
Jag föredrar mitt TI-kort. Jag viftar lite med armarna och sjunger besvärjelser och då händer det grejer.

Men för att vara on-topic..
Description of STM32F4 HAL and LL drivers
Kapitel 29.2.2 How to use this driver


Upp
 Profil  
 
InläggPostat: 14.35 2018-11-26 
Användarvisningsbild

Blev medlem: 22.59 2012-09-11
Inlägg: 2855
Ort: The U.S - Chicago
Rick81 skrev:
Det är inte så svårt:
  HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);

första argumentet är porten A och argumentet är pinne 5. Dvs pinne A5 tooglar...


Jag tror det står i kommentar ovanför funktionen om jag inte minns fel...


Men är inte A5 själva anslog pin 5 på kortet mitt?


Upp
 Profil  
 
InläggPostat: 14.40 2018-11-26 
Användarvisningsbild

Blev medlem: 18.17 2004-02-11
Inlägg: 9113
Ort: Knivsta
Det är väl Arduino som kallar analoga ingångar för An och digitala för Dn

De namn som nämns här är på själva processorn, vad ditt kort kallar de sen för är svårt för oss att veta...


Upp
 Profil  
 
InläggPostat: 15.52 2018-11-26 

Blev medlem: 15.23 2007-04-24
Inlägg: 1073
Ort: Göteborg
Dylika namnkonventioner brukar finnas i headerfilerna.

I min dator ligger de i förljade:
~/projf4/Drivers/STM32F4xx_HAL_Driver/Inc
~/projf4/Inc
...
Man bör konfigurerar sin editor/IDE så att man snabbt kan hitta i dessa.
I Linux har man etags. Jag känner inte till hur man konfigurerar Kiel och liknade IDE,
men antar att det går även där.

Det är bra att bekanta sig med headerfilerna innan man startar; väl igång tittar man i dem
allt som oftast.


Upp
 Profil  
 
InläggPostat: 15.54 2018-11-26 
Användarvisningsbild

Blev medlem: 22.59 2012-09-11
Inlägg: 2855
Ort: The U.S - Chicago
AndLi skrev:
Det är väl Arduino som kallar analoga ingångar för An och digitala för Dn

De namn som nämns här är på själva processorn, vad ditt kort kallar de sen för är svårt för oss att veta...


Men jag valde mitt kort i STMCubeMX för att generera ett projekt. Se första bild. Jag rörde inget annat.

Mitt STM32 kort har också Arduino liknande namngivningar på kortet. Digital 5 är alltså D5. Analog 0 är A0 osv.


Upp
 Profil  
 
InläggPostat: 16.08 2018-11-26 
Användarvisningsbild

Blev medlem: 16.33 2012-07-08
Inlägg: 978
Det borde ju framgå nånstans i dokumentationen av ditt Nucleokort vilken port och vilken bit som styr det som kallas "D5" i Arduinokontakteringen. På mitt kort med STM32F207 är PE11 dragen till D5.


Upp
 Profil  
 
InläggPostat: 16.11 2018-11-26 
Användarvisningsbild

Blev medlem: 18.17 2004-02-11
Inlägg: 9113
Ort: Knivsta
Det framgår av schemat för kortet vilken pinne på processorn D0 och A5 osv är anslutna till.


Upp
 Profil  
 
InläggPostat: 16.39 2018-11-26 
EF Sponsor
Användarvisningsbild

Blev medlem: 17.53 2010-01-04
Inlägg: 5273
Ort: Skogen mellan Uppsala-Gävle
Jag brukar skriva ut en pinout-karta och sätta bredvid skärmen när jag pysslar med liknande kort.

Sök på ditt specifika kort och "pinout" så borde du hitta något som tex nedan. Där ser du vilken pinne som går vart samt lite annat smått och gott.

Bilaga:
nucleo_f303k8_2017_10_10.png


Logga in för att visa de filer som bifogats till detta inlägg.


Upp
 Profil  
 
InläggPostat: 17.54 2018-11-26 
Användarvisningsbild

Blev medlem: 22.59 2012-09-11
Inlägg: 2855
Ort: The U.S - Chicago
Nu hittar jag pinnarnas definitioner :) Fattas bara vilka HAL-funktioner det finns:

HAL_GPIO_ReadPin() / HAL_GPIO_WritePin(), HAL_GPIO_TogglePin ().

Dem finns här på sidan 57. https://www.st.com/content/ccc/resource ... 105879.pdf

Men jag hittar inte argumenten för att passera in dem i funktionerna. Finns det inget bättre dokument att läsa ifrån?


Logga in för att visa de filer som bifogats till detta inlägg.


Upp
 Profil  
 
Visa inlägg nyare än:  Sortera efter  
Svara på tråd  [ 38 inlägg ]  Gå till sida 1, 2, 3  Nästa

Alla tidsangivelser är UTC + 1 timme


Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 8 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
   
Drivs av phpBB® Forum Software © phpBB Group
Swedish translation by Peetra & phpBB Sweden © 2006-2010