Action disabled: revisions

Das STM32F0 Discovery

Die STM32 F0 Serie vereint eine Kombination von Echtzeitfunktionen, low-power Operationen und erweiterter Architektur zum STM32 System. Das STM32F0-Discovery hilft Ihnen, die Funktionen des STM32F0 zu entdecken und eigene Anwendungen zu entwickeln. Das Discovery-Board ermöglicht sowohl Anfängern als auch Fortgeschrittenen eine schnelle Einarbeitung in die ARM Technologie. Dabei bieten frei verfügbare Beispielanwendungen auf www.st.com Unterstützung beim Start. Das STM32F0-Discovery nutzt den ARM Cortex M0 Controller STM32F051R8T6 und beinhaltet eingebettet ST-Link/V2 zum Programmieren und Debuggen.

Eigenschaften:

  • Mikrocontroller STM32F051R8T6 im LQFP64 Gehäuse mit
    • 32 Bit ARM Cortex-M0 Kern
    • 64 KByte Flash
    • 8 KByte RAM
  • 4 LEDs
    • 1 für USB Kommunikation
    • 1 Power-LED für 3,3 V
    • 2 für Ausgaben
  • 2 Taster
    • 1 für Reset
    • 1 frei verfügbar für den Anwender
  • ST-Linkk V2 Programmer onboard

Beschaffung:

Schnelleinstieg mit dem STM32F0 Discovery

  1. SiSy starten
  2. neues Projekt anlegen, Profil ARM Vorgehensmodell auswählen
  3. keine Vorlage aus dem Libstore wählen
  4. kleines Programm anlegen, Zielsprache ARM C++, Ziel Hardware STM32F0 Discovery mit JLink
  5. Grundgerüst laden
//----------------------------------------------------------------------
// Titel     : Grundgerüst einer einfachen ARM C Anwendung in SiSy
//----------------------------------------------------------------------
// Funktion  : ...
// Schaltung : ...
//----------------------------------------------------------------------
// Hardware  : STM32F3 Discovery
// MCU       : STM32F051R8T6
// Takt      : 48 MHz
// Sprache   : ARM C
// Datum     : ...
// Version   : ...
// Autor     : ...
//----------------------------------------------------------------------
#include <stddef.h>
#include <stdlib.h>
#include "stm32f0xx.h"
#include "mySTM32.h"
 
void initApplication()
{
	SysTick_Config(SystemCoreClock/100);
	// weitere Initialisierungen durchführen
}
int main(void)
{
	SystemInit();
	initApplication();
	do{
		// Eingabe
		// Ausgabe
		// Verarbeitung
	} while (true);
	return 0;
}
extern "C" void SysTickFunction(void)
{
	// Application SysTick
}

Blinky

//----------------------------------------------------------------------
// Titel     : Einfache digitale Ausgabe mit dem STM32F0-Discovery
//----------------------------------------------------------------------
// Funktion  : lässt die grüne LED blinken
// Schaltung : grüne LED an PC9
//----------------------------------------------------------------------
// Hardware  : STM32F0 Discovery
// MCU       : STM32F051R8T6
// Takt      : 48 MHz
// Sprache   : ARM C
// Datum     : 21.01.2013
// Version   : 1
// Autor     : Alexander Huwaldt
//----------------------------------------------------------------------
#include <stddef.h>
#include <stdlib.h>
#include "stm32f0xx.h"
#include "mySTM32.h"
 
#define LED3 (1<<9)
GPIO_InitTypeDef GPIO_InitStructure;
 
void initApplication()
{
	SysTick_Config(SystemCoreClock/100);
	// weitere Initialisierungen durchführen
 
	/* LED Periph clock enable */
	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
 
	/* Configure PD3 = red LED in output pushpull mode */
	GPIO_InitStructure.GPIO_Pin = LED3;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_3;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
	GPIO_Init(GPIOC, &GPIO_InitStructure);	
}
 
int main(void)
{
	SystemInit();
	initApplication();
	do{
		GPIO_SetBits(GPIOC,LED3);
		waitMs(100);
		GPIO_ResetBits(GPIOC,LED3);
		waitMs(100);
	} while (true);
	return 0;
}
 
extern "C" void SysTick_Handler(void)
{
	// Application SysTick
}

Übersetzen, übertragen und testen

Die Programme sind getestet und können sofort übersetzt (kompilieren, linken) und in den Programmspeicher des Controllers übertragen werden (brennen).

Weitere Beispiele

Weitere Beispiele erhalten sie aus dem SiSy-Libstore.

Das LCD Addon nutzen

Display::configLcd()
//pins konfigurieren
// RS = BUS-PIN01 
lineRs.config(GPIOB,BIT0);
// E  = BUS-PIN2
lineE.config(GPIOB,BIT1);
// 4Bit Daten = BUS-PINs 03..06
dataPort.config(GPIOB,BIT2|BIT3|BIT4|BIT5);
// RW = BUS-PIN 07 not used
// BKLight = BUS-PIN 
lineLight.config(GPIOB,BIT7);
 
 
waitMs(50);
 
// SoftReset
// dataPort.setData(BIT2|BIT3);
dataOut(0x03);
lineE.on();
lineE.off();
waitMs(5);
lineE.on();
lineE.off();
waitUs(100);
lineE.on();
lineE.off();
waitMs(5);
 
// 4-BitModus einschalten
//dataPort.setData(BIT3);
dataOut(0x02);
lineE.on();
lineE.off();
waitMs(5);
 
init();
Display::dataOut()
// DataPort B BIT2-BIT5
// im 4 Bit Modus
// zuerst High-Teil
dataPort.setData( data>>2 );
lineE.on();
lineE.off();
 
// dann Low-Teil übertragen
dataPort.setData( data<<2 );
lineE.on();
lineE.off();
 
// kurz verarbeiten lassen.. kann runter bis 50µs
waitUs(100);
Controller::onStart()
// boot sequence after start SysTick
statusLED.flicker();
// Willkommen auf Display ausgeben
display.clear();
display.write("Wellcome...");
waitMs(1000);
display.light(true);
waitMs(2000);
statusLED.slowBlink();
display.clear();
display.home();
display.write("Line 1 ...");
display.setPos(1,2);
display.write("Line 2 ...");

textlcd_stm32f051_implementation.zip

Videozusammenfassung

Weitere Hinweise