- De vereiste ontwikkelplatforms voor Nucleo64-boards selecteren en downloaden
- Schakelschema en hardware-instellingen
- Aan de slag met STM32CubeMX voor STM32 Nucleo64 Development Boards
- Programmering STM32 Nucleo64 Development Board met TrueSTUDIO
- STM32 Nucleo64 Programma om LED te bedienen met drukknop
- Foutopsporing en code uploaden naar STM32 Necleo64 Development Board met TrueSTUDIO
Velen van ons zouden bekend moeten zijn met de populaire microcontrollers en ontwikkelingsborden zoals Arduino, Raspberry Pi, ESP8266, NoduMCU, 8051, enz. In feite zou Arduino voor de meeste mensen hun eerste ontwikkelingsbord zijn geweest, maar als we diep graven en beginnen professionele ontwerpen, zullen we ons binnenkort de beperkingen van Arduino realiseren (zoals kosten, veelzijdigheid, stabiliteit, snelheid, enz.) en de noodzaak begrijpen om over te schakelen naar een meer native Microcontroller-platform zoals PIC, STM, Renesas, enz.
We hebben al een reeks PIC Microcontroller-tutorials behandeld, die beginners begeleiden bij het leren van PIC-microcontrollers. Evenzo zullen we, te beginnen met dit artikel, ook een reeks STM32 Nucleo64 Development Board-zelfstudies plannen die absolute beginners kunnen helpen bij het leren en ontwikkelen met behulp van het STM32-platform. Nucleo64 Development Boards zijn goedkoop en gebruiksvriendelijk platform voor zowel professionele ontwikkelaars als hobbyisten. Als je helemaal nieuw bent bij de STM32 Nucleo64 Development Boards, bekijk dan eerst deze Nucleo64 Review-video om de basisprincipes van dit board te begrijpen voordat je verder gaat. De video laat ook zien hoe je STM32 programmeert met ARM Mbed Platform maar voor deze tutorial zullen we een ander gratis te gebruiken platform van ST Microelectronics genaamd TrueSTUDIO gebruiken.
Opmerking: er zijn veel versies van STM32 Nucleo64 Development Boards, het specifieke bord dat in deze tutorial wordt gebruikt, is NUCLEO-F030R8. We hebben dit bord voornamelijk geselecteerd vanwege de lage kosten. Zelfs als u een andere versie heeft, zijn de meeste dingen die in de zelfstudie worden besproken voldoende om aan de slag te gaan.
De vereiste ontwikkelplatforms voor Nucleo64-boards selecteren en downloaden
Om te beginnen met een microcontroller heb je een programmeer-IDE nodig, zoals we hebben Arduino IDE voor Arduino-boards, Atmel Studio voor AVR-microcontroller, MP Lab voor PIC, enz. Dus hier hebben we ook een IDE nodig voor onze STM32 Nucleo64-boards om te programmeren en debuggen. De STM32-familie bestaat uit 32-bits microcontrollers die de volgende IDE's en toolchains ondersteunen:
- IAR Embedded Workbench® voor ARM® (EWARM).
- MDK-ARM Keil
- TrueSTUDIO
- System Workbench voor STM32
Hier voor onze tutorials zal TrueSTUDIO worden gebruikt voor het schrijven, compileren en debuggen van code, omdat het gratis te downloaden en te gebruiken is, zelfs voor commerciële projecten zonder enige licentievereiste. Vervolgens wordt STM32CubeMX gebruikt om stuurprogramma's voor randapparatuur voor STM32-kaarten te genereren om het programmeren gemakkelijk te maken. Om ons programma (hex-bestand) te uploaden naar ons ontwikkelbord, gebruiken mensen normaal gesproken de STM32 ST-LINK Utility- tool, maar in plaats daarvan zullen we TrueSTUDIO zelf gebruiken om dit te doen. TrueSTUDIO heeft een debug-modus waarmee programmeurs het hex-bestand rechtstreeks naar het STM32-bord kunnen uploaden. Zowel TrueSTUIO als STM32CubeMX zijn eenvoudig te downloaden, volg gewoon de onderstaande link, meld u aan en download de installatie. Installeer ze vervolgens op uw laptop.
- Download STM32Cube MX
- Download TrueSTUDIO
Schakelschema en hardware-instellingen
Voordat we verder gaan met het softwaregedeelte en de codering, moeten we ons bord voorbereiden op dit project. Zoals eerder in dit artikel vermeld, gaan we een led aansturen met een drukknop. Als je de bovenstaande video hebt gezien, zou je al moeten weten dat je STM32 Development Board aan weerszijden twee sets connectorpinnen heeft, de zogenaamde ST Morpho-pinnen. We hebben een drukknop en een LED op deze pinnen aangesloten zoals weergegeven in het onderstaande schakelschema.
Circuitverbindingen zijn eenvoudig voor dit project, we moeten een LED aansluiten op PA5 van PORTA en een schakelaar op PC13 van PORTC met betrekking tot GND. Toen de verbindingen eenmaal waren gemaakt, zag mijn testopstelling er als volgt uit.
Als alternatief kunnen we ook de ingebouwde LED en drukknop op het bord gebruiken. Deze ingebouwde LED's en drukknop zijn ook aangesloten op dezelfde pin zoals weergegeven in het schakelschema. We hebben alleen externe componenten toegevoegd om te oefenen. Het onderstaande pin-diagram van het STM32 Development Board is handig om te weten waar elke morpho-pinnen aan boord zijn aangesloten.
Aan de slag met STM32CubeMX voor STM32 Nucleo64 Development Boards
Stap 1: Start na de installatie STM32CubeMX en selecteer vervolgens de toegangskaart-selector om de STM32-kaart te selecteren.
Stap 2: Zoek nu op het bord op je STM32 bordnaam zoals NUCLEO-F030R8 en klik op het bord dat in de afbeelding te zien is. Als je een ander bord hebt, zoek dan naar de respectievelijke naam. De software ondersteunt alle STM32-ontwikkelborden van ST Microelectronics.
Stap 3: Klik nu op ja zoals weergegeven in de onderstaande afbeelding om alle randapparatuur in hun standaardmodus te initialiseren. We kunnen later de vereiste wijzigen als dat nodig is voor ons project.
Nadat u op 'Ja' hebt geklikt, ziet het scherm eruit als de onderstaande afbeelding en de groene kleurpin geeft aan dat ze standaard worden gestart.
Stap 4: Nu kunnen gebruikers de gewenste instelling uit de categorieën selecteren. Hier in deze tutorial gaan we een LED schakelen met een drukknop. We moeten dus de LED-pin als output maken en de pin als INPUT schakelen.
Je kunt elke pin selecteren, maar ik selecteer PA5 en verander de status in GPIO_Output om het te laten werken als een outputpin, zoals weergegeven in de onderstaande afbeelding.
Evenzo selecteer ik PC13 als GPIO_Input zodat ik de status van mijn drukknop kan lezen.
Als alternatief kunnen we ook pinnen configureren vanaf het pinout- en configuratietabblad, zoals hieronder weergegeven.
Stap 5: In de volgende stap kan de gebruiker de gewenste frequentie voor de microcontroller en pinnen instellen volgens externe en interne oscillator. Standaard is een interne 8 MHz kristaloscillator geselecteerd en door middel van PLL wordt deze 8 omgezet naar 48 MHz. Dit betekent dat standaard STM32-bord of microcontroller en pinnen werken op 48 MHz.
Stap 6: Ga nu naar de projectmanager en geef een naam aan uw project, projectlocatie en selecteer toolchain of IDE. Hier gebruiken we TrueSTUDIO, dus ik heb hetzelfde geselecteerd als hieronder weergegeven.
Stap 7: Klik nu op Genereer codemarkering bij de rode cirkel in de onderstaande afbeelding.
Stap 8: Nu ziet u een pop-up zoals gegeven en klikt u op project openen. Maar zorg ervoor dat u TrueSTUDIO hebt geïnstalleerd vóór deze stap.
Programmering STM32 Nucleo64 Development Board met TrueSTUDIO
Nu wordt uw code of project automatisch geopend in TrueSTUDIO als TrueSTUDIO om een werkruimtelocatie vraagt, geef dan een werkruimtelocatie op of ga met de standaardlocatie.
De gebruiker ziet het onderstaande scherm en moet vervolgens op de hoekmarkering in rode kleur klikken.
En nu kunnen we code zien in onze TreuSTUDIO IDE. Aan de linkerkant onder de map 'src' kunnen we andere programmabestanden zien (met.c extensie) die al voor ons gegenereerd zijn vanuit STM32Cube. We hoeven alleen het bestand main.c te programmeren. Zelfs in het main.c-bestand zullen we al een paar dingen voor ons hebben ingesteld door de CubeMX, we hoeven het alleen maar te bewerken om bij ons programma te passen. De volledige code in het main.c-bestand staat onderaan deze pagina.
STM32 Nucleo64 Programma om LED te bedienen met drukknop
Omdat alle benodigde driver en code wordt gegenereerd door STM32CubeMX, hoeven we alleen een LED-pin als uitgang en een drukknop als ingang te configureren. Het programma voor het aansturen van led met behulp van de drukknop moet in het main.c bestand worden geschreven. Het volledige programma vindt u onderaan deze pagina. De uitleg ervan is als volgt
We hebben alleen code geschreven voor het schakelen van de LED met de drukknop. Om dit te bereiken, definiëren we eerst pinnen voor LED en drukknoppen. Hier hebben we een LED gedefinieerd op Pin 5 nummer van PORTA
# definiëren LED_PORT GPIOA # definiëren LED_PIN GPIO_PIN_5
En definieer schakelaar op pincode 13 van PORTC.
# definiëren SW_PORT GPIOC # definiëren SW_PIN GPIO_PIN_13
Vervolgens hebben we in de hoofdfunctie alle gebruikte randapparatuur geïnitialiseerd.
/ * Initialiseer alle geconfigureerde randapparatuur * / MX_GPIO_Init (); MX_USART2_Init ();
En lees dan de drukknop met behulp van de if-instructie en indien gevonden, druk op (LOW), dan zal de LED van status wisselen.
While (1) {/ * USER CODE END WHILE * / If (! HAL_GPIO_ReadPin (SW_PORT, SW_PIN)) {HAL_GPIO_TogglePin (SW_PORT, LED_PIN); HAL_Delay (200); } / * GEBRUIKERSCODE BEGIN 3 * /}
Hier heeft de HAL_GPIO_ReadPin (SW_PORT, SW_PIN) functie twee argumenten, de ene is PORT en de andere is een pin waarop de schakelaar is aangesloten en deze pin is geconfigureerd als INPUT tijdens het configureren van randapparatuur in STM32CubeMX.
Foutopsporing en code uploaden naar STM32 Necleo64 Development Board met TrueSTUDIO
Verbind nu je bord met de computer met behulp van de programmeer kabel. Zodra je het hebt aangesloten, zou het stuurprogramma dat nodig is voor het bord automatisch moeten worden gedownload, je kunt dit controleren met de apparaatbeheerder.
Druk vervolgens op het foutopsporingspictogram gemarkeerd door de rode cirkel in de onderstaande afbeelding om het programma te compileren en de foutopsporingsmodus te openen.
In de foutopsporingsmodus wordt de code automatisch geüpload. Nu moeten we de code uitvoeren door op 'Hervatten' of F8 te drukken (gemarkeerd in het rode circuit in de onderstaande afbeelding).
Nu kunnen we de besturing van LED testen door op de drukknop te drukken. Volgens de code moet de LED elke keer dat u op de drukknop drukt van status veranderen. De volledige werking is ook te vinden in de video die onderaan deze pagina is gelinkt.
Na het testen kunnen we het programma ook beëindigen door op het beëindigingspictogram te drukken, gemarkeerd door de rode cirkel in de onderstaande afbeelding.