- ST-LINK V2
- STM32CubeMX
- Vereiste materialen
- Schakelschema en aansluitingen
- Een programma maken en in STM32 branden met Keil uVision en ST-Link
- Uitgang van Keil Geprogrammeerde STM32-kaart
- Programma
STM32-microcontrollers die ARM Cortex M- architectuur gebruiken, worden nu populair en worden in veel toepassingen gebruikt vanwege de functie, kosten en prestaties. We hebben STM32F103C8 geprogrammeerd met de Arduino IDE in onze vorige tutorials. Het programmeren van STM32 met Arduino IDE is eenvoudig, omdat er veel bibliotheken beschikbaar zijn voor verschillende sensoren om elke taak uit te voeren, we hoeven alleen die bibliotheken in het programma toe te voegen. Dit is een gemakkelijke procedure en u zult misschien niet diepgaand leren over de ARM-processors. Dus nu beginnen we met het volgende niveau van programmeren: ARM-programmering. Hierdoor kunnen we niet alleen onze structuur van de code verbeteren, maar kunnen we ook geheugenruimte besparen door geen onnodige bibliotheken te gebruiken.
STMicroelectronics introduceerde een tool genaamd STM32Cube MX, die basiscode genereert op basis van de randapparatuur en het geselecteerde STM32-bord. We hoeven ons dus geen zorgen te maken over codering voor basisdrivers en randapparatuur. Verder kan deze gegenereerde code worden gebruikt in Keil uVision om naar behoefte te bewerken. En tot slot wordt de code in STM32 gebrand met behulp van de ST-Link-programmeur van STMicroelectronics.
In deze tutorial zullen we leren hoe je STM32F103C8 programmeert met Keil uVision & STM32CubeMX door een eenvoudig project uit te voeren door een drukknop en LED te koppelen aan het STM32F103C8 Blue Pill-bord. We genereren de code met STM32Cube MX en bewerken en uploaden de code naar STM32F103C8 met Keil uVision. Voordat we in detail treden, zullen we eerst de ST-LINK-programmeur en de STM32CubeMX-softwaretool leren kennen.
ST-LINK V2
De ST-LINK / V2 is een in-circuit debugger en programmeur voor de STM8 en STM32 microcontroller families. We kunnen code uploaden naar STM32F103C8 en andere STM8 & STM32 microcontrollers met behulp van deze ST-LINK. De single wire interface module (SWIM) en JTAG / serial wire debugging (SWD) interfaces worden gebruikt om te communiceren met elke STM8 of STM32 microcontroller die zich op een applicatiebord bevindt. Omdat STM32-toepassingen de USB-interface op volledige snelheid gebruiken om te communiceren met geïntegreerde ontwikkelomgevingen van Atollic, IAR, Keil of TASKING, kunnen we deze hardware gebruiken om de STM 8- en STM32-microcontrollers te programmeren.
Hierboven ziet u de afbeelding van de ST-LINK V2-dongle van STMicroelectronics die het volledige scala aan STM32 SWD-foutopsporingsinterfaces ondersteunt, een eenvoudige 4-draads interface (inclusief voeding), snel en stabiel. Het is verkrijgbaar in verschillende kleuren. Het lichaam is gemaakt van een aluminiumlegering. Het heeft een blauwe LED-indicatie omdat het wordt gebruikt om de werkstatus van de ST-LINK te observeren. De pinnamen zijn duidelijk gemarkeerd op de schaal zoals we kunnen zien in de bovenstaande afbeelding. Het kan worden gekoppeld aan de Keil-software, waar het programma naar de STM32-microcontrollers kan worden geflitst. Laten we dus in deze tutorial kijken hoe deze ST-LINK-programmeur kan worden gebruikt om STM32-microcontroller te programmeren. Onderstaande afbeelding toont de pinnen van de ST-LINK V2-module.
Opmerking: Als u ST-Link voor de eerste keer met de computer verbindt, moeten we de apparaatdriver installeren. Apparaatstuurprogramma's zijn te vinden in deze link, afhankelijk van uw besturingssysteem.
STM32CubeMX
STM32CubeMX-tool maakt deel uit van STMicroelectronics STMCube. Deze softwaretool maakt de ontwikkeling eenvoudig door de ontwikkelingsinspanning, tijd en kosten te verminderen. STM32Cube bevat STM32CubeMX, een grafische softwareconfiguratietool waarmee C-initialisatiecode kan worden gegenereerd met behulp van grafische wizards. Die code kan worden gebruikt in verschillende ontwikkelomgevingen zoals keil uVision, GCC, IAR enz. U kunt deze tool downloaden via de volgende link.
STM32CubeMX heeft de volgende kenmerken
- Pin-out-conflictoplosser
- Een helper voor het instellen van een klok
- Een rekenmachine voor energieverbruik
- Een hulpprogramma dat MCU-randapparatuurconfiguratie uitvoert, zoals GPIO-pinnen, USART enz
- Een hulpprogramma dat MCU-randapparatuurconfiguratie uitvoert voor middlewarestacks zoals USB, TCP / IP enz
Vereiste materialen
Hardware
- STM32F103C8 Blauw pilbord
- ST-LINK V2
- Druk op de knop
- LED
- Breadboard
- Doorverbindingsdraden
Software
- STM32CubeMX-tool voor het genereren van codes (link)
- Keil uVision 5 (link)
- Drivers voor ST-Link V2 (link)
Schakelschema en aansluitingen
Hieronder ziet u het schakelschema om eenvoudig een LED met een STM32-kaart te verbinden met behulp van een drukknop.
Verbinding tussen ST-LINK V2 & STM32F103C8
Hier wordt het STM32 Blue Pill-bord gevoed door de ST-LINK die is aangesloten op de USB-poort van de computer. We hoeven de STM32 dus niet apart van stroom te voorzien. De onderstaande tabel toont de verbinding tussen ST-Link en Blue pillboard.
STM32F103C8 |
ST-Link V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3.3V |
LED & drukknop
De LED wordt gebruikt om de output van het Blue Pill-bord aan te geven wanneer een drukknop wordt ingedrukt. De anode van de LED is verbonden met de pin PC13 van het Blue Pill-bord en de kathode is geaard.
Een drukknop is aangesloten om invoer te leveren aan de pin PA1 van het Blue Pill-bord. We moeten ook een pull-up-weerstand met een waarde van 10k gebruiken, omdat de pin zonder input kan zweven wanneer de knop wordt losgelaten. Het ene uiteinde van de drukknop is verbonden met aarde en het andere uiteinde met pin PA1 en een pull-up-weerstand van 10k is ook verbonden met 3.3V van Blue Pill-bord.
Een programma maken en in STM32 branden met Keil uVision en ST-Link
Stap 1: - Eerste Installeer alle stuurprogramma's voor ST-LINK V2, software tools STM32Cube MX & Keil uVision en te installeren die nodig zijn pakketten voor STM32F103C8.
Stap 2: - Tweede stap is Open >> STM32Cube MX
Stap 3: - Klik vervolgens op Nieuw project
Stap 4: - Na deze search & selecteren onze microcontroller STM32F103C8
Stap 5: - Nu verschijnt de pin-out sketch van STM32F103C8, hier kunnen we de pinconfiguraties instellen. We kunnen onze pinnen ook selecteren in de sectie randapparatuur volgens ons project.
Stap 6: - U kunt ook direct op de pin klikken en er verschijnt een lijst, selecteer nu de gewenste pinconfiguratie.
Stap 7: - Voor ons project hebben we PA1 geselecteerd als GPIO INPUT, PC13 als GPIO OUTPUT & SYS debuggen als SERIAL WIRE, alleen hier verbinden we de ST-LINK SWCLK & SWDIO pinnen. De geselecteerde en geconfigureerde pinnen verschijnen in een GROENE kleur. U kunt dat in onderstaande afbeelding opmerken.
Stap 8: - Selecteer vervolgens onder het tabblad Configuratie GPIO om GPIO-pinconfiguraties in te stellen voor de pinnen die we hebben geselecteerd.
Stap 9: - Next in deze pin configuratie vak kunnen we configureren gebruikerslabel voor pinnen die we gebruiken, dat wil zeggen door de gebruiker gedefinieerde pin namen.
Stap 10: - Klik daarna op Project >> Code genereren .
Stap 11: - Nu verschijnt het dialoogvenster met projectinstellingen. Kies in dit vak je projectnaam en locatie en selecteer de ontwikkelomgeving. We gebruiken Keil, dus selecteer MDK-ARMv5 als IDE.
Stap 12: - Volgende onder Code Generator tab, selecteer Copy alleen de benodigde library bestanden en klik op OK.
Stap 13: - Nu verschijnt het dialoogvenster voor het genereren van codes. Selecteer Project openen om het project automatisch de gegenereerde code in Keil uvsion te openen.
Stap 14: - Nu wordt de Keil uVision-tool geopend met onze gegenereerde code in STM32CubeMx met dezelfde projectnaam met de benodigde bibliotheek en codes die zijn geconfigureerd voor de pinnen die we hebben geselecteerd.
Stap 15: - Nu hoeven we alleen nog maar de logica op te nemen om een actie uit te voeren op de output-LED (pin PC13) wanneer de knop wordt ingedrukt en losgelaten op de GPIO-ingang (pin PA1). Dus selecteren onze main.c programma om een aantal codes bevatten.
Stap 16: - Voeg nu de code toe in de while (1) -lus, zie de onderstaande afbeelding waar ik die sectie heb gemarkeerd om de code continu uit te voeren.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => DETECTS-knop wordt ingedrukt {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Om de output hoog te maken wanneer de knop indrukt} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Om de uitvoer laag te maken wanneer de knop wordt ingedrukt}}
Stap 17: - Nadat u klaar bent met het bewerken van de code, klikt u op het pictogram Opties voor doel onder het tabblad foutopsporing en selecteert u ST-LINK Debugger
Klik ook op de knop Instellingen en vink vervolgens onder het tabblad Flash-download het selectievakje Opnieuw instellen en uitvoeren aan en klik op 'ok'.
Stap 18: - Klik nu op Rebuild icon om alle doelbestanden opnieuw op te bouwen.
Stap 19: - Nu kunt u de ST-LINK op de computer aansluiten terwijl de circuitverbindingen gereed zijn en op het DOWNLOAD-pictogram klikken of op F8 drukken om de STM32F103C8 te laten knipperen met de code die u hebt gegenereerd en bewerkt.
Stap 20: - U ziet de knipperende indicatie onderaan het keil uVision-venster.
Uitgang van Keil Geprogrammeerde STM32-kaart
Wanneer we nu op de drukknop drukken, gaat de LED aan en wanneer we hem loslaten, gaat de LED uit.
Programma
Het belangrijkste onderdeel dat we hebben toegevoegd in het gegenereerde programma wordt hieronder weergegeven. Deze onderstaande code moet worden opgenomen in while (1 ) van het main.c- programma gegenereerd door de STM32CubeMX. U kunt teruggaan naar stap 15 tot stap 17 om te zien hoe het moet worden toegevoegd in het main.c- programma.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => DETECTS-knop wordt ingedrukt {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Om de output hoog te maken wanneer de knop indrukt} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Om de uitvoer laag te maken wanneer de knop wordt ingedrukt}}
Het volledige proces van het maken en uploaden van een project naar het STM32-bord wordt ook uitgelegd in de video aan het einde. Ook wordt de volledige code van het main.c-bestand hieronder gegeven, inclusief de hierboven gegeven code.
Verder kunt u hier onze complete set STM32-projecten vinden.