Hier findet sich eine Liste mit allen Librarys die für den STM32F4 online sind. Einfach auf den Link klicken um eine nähere Beschreibung und das entsprechende ZIP-File zu finden.
Die einzelnen source files (ohne Beispiel) findet ihr auch in meiner Dropbox :
Link : DropBox_F407
Die ZIP-Files beinhalten den Source-Code (in C), ein Beispiel-Programm (in C) wie die Library angewendet wird, und (falls es das Beispiel notwendig macht) noch zusätzliche Librarys von hier.
Liste :
01 = LED (für die 4 LEDs auf dem STM32F4-Discovery-Board)
02 = Button (für den User-Button auf dem STM32F4-Discovery-Board)
03 = Dig-Out (um Digitale Ausgangspins mit der CPU zu steuern)
04 = Dig-In (um Digitale Eingangspins mit der CPU auszuwerten)
05 = ADC-Single (um den ADC im Single-Conversation-Mode zu benutzen)
06 = LCD_ST7783 (um ein Grafik-Display mit dem ST7783 Chip anzusteuern)
07 = LCD_Graphic (Grafikfunktionen für das LC-Display, Bilder aus dem Flash)
08 = LCD_Font (um Schrift auf dem LC-Display darzustellen)
09 = Touch_ADS7843 (um einen Touch mit dem ADS7843-Chip auszuwerten)
10 = Systick (für Pausenzeiten, Software-Timer und Software-Counter)
11 = RNG (um Zufallszahlen zu erzeugen)
12 = UART (zum benutzen der 6 UARTs der CPU)
13 = FATFS-SDIO (zum benutzen von SD-Karten mit FAT-Dateisystem)
14 = ADC_DMA (um die AD-Wandler per DMA zu verwalten)
15 = SPI-LoLevel (zum benutzen der 3 SPI-Schnittstellen)
16 = SPI-MAX5250 (um ein 4fach DAC MAX5250 anzusteuern)
17 = SPI-LIS302DL (für den 3Achs-Beschleunigungs-Sensor auf dem Discovery)
18 = I2C-LoLevel (zum benutzen der 3 I2C-Schnittstellen)
19 = I2C_M24C02 (für ein 256Byte EEprom M24C02/PCF8582 anzusteuern)
20 = FATFS_Picture (BMP-Files, JPG-Files und Images von SD-Karte anzeigen)
21 = ADC_Injected-Group (zum betreiben der AD-Wandler im Injected-Group-Mode)
22 = SysCheck (System-Clock-Test und Assert-Fehler Auswertung)
23 = DAC (zum benutzen der beiden DA-Wandler der CPU)
24 = DAC_DMA (zum ausgeben von Kurvenformen per DA-Wandler der CPU)
25 = PWM (zum ausgeben von PWM-Signalen per Timer)
26 = Logview (um eine Grafische Datenanzeige mit dem PC zu machen)
27 = DCMI_OV9655 (um Bilder von einem Camera-Modul anzuzeigen)
28 = EXT_Interrupt (um die externen Interrupts zu benutzen)
29 = PS2_Keyboard (um eine PS2-Tastatur auszuwerten)
30 = PS2_Mouse (um eine PS2-Maus auszuwerten)
31 = USB_CDC (zum Betrieb der USB-OTG-Buchse im CDC-Mode)
32 = USB_MSC_HOST (zum anschließen von USB-Sticks an die CPU)
33 = LCD_SSD1289 (um ein Grafik-Display mit dem SSD1289 Chip anzusteuern)
34 = LCD_2x16 (um ein Text-LC-Display anzusteuern)
35 = VGA_Screen (um einen VGA-Monitor anzusteuern 320×240, 8bit Farbe)
36 = VGA_Graphic (Grafikfunktionen für den VGA-Screen, Bilder aus dem Flash)
37 = VGA_Font (um Schrift auf dem VGA-Monitor darzustellen)
38 = PWM_DMA (um 8 bzw. 16 PWM-Kanäle auszugeben)
39 = IRMP (zum Auswerten von IR-Signalen per IRMP-Lib)
40 = HTTP_Server (Webserver mit externem PHY : DP83848C)
41 = RTC (zum benutzen der internen RealTimeClock der CPU)
42 = IWDG (zum benutzen des internen Watchdog der CPU)
43 = LCD_EADOG (für Grafik-Display der EA-DOG-Serie)
44 = UDP_Server (UDP-Server mit externem PHY : DP83848C)
45 = CS43L22 (WAV-Files per Audio-DAC vom Discovery-Modul)
46 = IRSND (zum senden von IR-Daten per IRSND-LIB)
47 = MP45DT02 (für den Audio Sensor auf dem Discovery-Modul)
48 = USB_HID (zum Betrieb der CPU als USB-HID-Device)
49 = FRQ_IN (zum messen von Frequenzen per Timer)
50 = SRAM (für ein externes SRAM am Discovery-Modul)
51 = PWM_IN (zum messen von PWM-Signalen per Timer)
52 = Encoder (zum auswerten eines Drehgebers per Timer)
53 = CS43L22_MP3 (MP3-Files per Audio-DAC vom Discovery-Modul)
54 = CS32L22_MP3_USB (MP3-Files vom USB-Stick abspielen)
55 = Timer (Timer-Funktionen der CPU)
56 = USB_HID_HOST (zum betreiben von USB-Maus/Tastatur an der CPU)
57 = EE_Flash (virtuelles EEprom per Flash der CPU)
58 = Backup-RAM (zum Betrieb des internen 4kByte Backup-RAM)
59 = CAN-LoLevel (zum benutzen der 2 CAN-Schnittstellen)
60 = CAN_MCP25050 (8Kanal CAN IO-Expander)
61 = LCD-Nokia5110 (für Graphic-Display Nokia-5110)
62 = OneWire-LoLevel (zum benutzen eines OneWire-Bus)
63 = OneWire-DS18XX (zum auslesen von OneWire Temperatur Sensoren)
64 = I2C_Slave (zum benutzen des STM32F4 als I2C-Slave)
65 = SPI-LoLevel-HalfDuplex (SPI im Half-Duplex Betrieb)
66 = SPI_HD_TM1638 (für IO-Platine mit TM1638-Chip)
67 = LCD_ILI9341_SPI (für Grafik-Dispaly mit ILI9341-Chip per SPI)
68 = RN42 (zum benutzen eines Bluetooth-Moduls als UART)
69 = L298-Stepper (zum ansteuern eines Schrittmotors per L298)
70 = STemWin ( für eine Windows ähnliche GUI per Touch)
71 = AM2301 (Temperatur und Luftfeuchtesensor vom Aosong)
72 = HC_SR04 (Ultraschall-Abstands-Sensor)
73 = FreeRTOS (Echtzeit Betriebssystem)
74 = SPI_Slave (zum benutzen des STM32F4 als SPI-Slave)
75 = String (zum umwandeln von Zahlen in Strings und umgekehrt)
76 = LCD-Nokia-N95-8GB (für ein Grafik-Display mit LDS285-Chip)
77 = UART_DMA (zum benutzen einer UART im DMA-Mode)
78 = WS2812 (zum Betrieb von RGB-LEDs mit WS2812-Chip)
79 = ScopeScreen (zum benutzen eines Oszis als Bildschirm)
80 = LIN-Master (zum benutzen des STM32F4 als LIN-Master)
81 = LIN-Slave (zum benutzen des STM32F4 als LIN-Slave)
82 = OLED-SSD1331 (für ein OLED-Graphic-Display mit SSD1331-Chip)
83 = KeyMatrix (zum anschließen einer Tastatur-Matrix an die CPU)
84 = SPI-LIS3DSH (für den 3Achs-Beschleunigungs-Sensor auf dem Discovery)
85 = Modplayer (zum abspielen von Modul-Files “.MOD” oder “.S3M”)
86 = DigIn-DMA (zum einlesen von Digital-Pins per DMA)
87 = Dual_FATFS (zum gleichzeitigen benutzen von SD-Karte und USB-Stick)
88 = WS2812_8CH (zum Betrieb von bis zu 8 LED-Ketten mit WS2812-Chip)
89 = FATFS-SPI (zum benutzen von SD-Karten mit FAT-Dateisystem per SPI)
90 = I2C_GY-271 (3Achs Kompass-Modul mit HMC5883-Chip per I2C)
91 = SPI_DMA (zum betreiben der SPI-Schnittstelle per DMA)
92 = ID-Check (zum auslesen der unique-ID der CPU)
93 = OTP (zum nutzen der One-Time-Programmable-Bytes der CPU)
94 = SGUI (simple-GUI für den STM32F407 mit ST7783)
95 = uBasic (minimal Version vom uBasic für den STM32F4)
96 = DCF77 (zum anschließen eines DCF77-Moduls an die CPU)
97 = ILI9325 (um ein Grafik-Display mit dem ILI9325 Chip anzusteuern)
98 = FPGA [HAL] (zum programmieren eines Xilinx-FPGAs)
99 = LCD-Text-I2C (um ein Text-LC-Display via I2C anzusteuern) NEW!
Show Projekte:
Show-01 = USB to UART Bridge mit dem STM32F4 (von UB)
Show-02 = Steuerung des STM32F4 per Terminal (von UB)
Show-03 = USB MP3-Player per STM32F4-Discovery-Board (UB)
Show-04 = HTML-Webserver mit SD-Karten Unterstützung (Nik & Joerg)
Show-13 = Mini-SPS für STM32F4 (von UB)
Show-15 = Scope-Clock per STM32F4 (von UB)
Hi
vielen Dank für deine Lib.
Gibt es auch ein Zip indem alle Files der aaktuellen Libs vorhanden sind?
Cheers
Rabbit
Hallo,
nein, eine ZIP mit allen Files gibt es im Moment noch nicht. Ist aber ne gute Idee, werd mich drum kümmern.
Jetzt gibt es eine ZIP !
wo finde ich dieses ZIP-File?
das habe ich wieder gelöscht…war zu viel Aufwand zum pflegen.
Thanks
Deine Lib ist wirklich klasse! Vielen Dank dafür.
Hast Du zufällig schon einmal die RTC in Betrieb genommen?
Gerne.
Nein, für RTC hab ich noch nichts gemacht. Aber meine ToDo ist jetzt eh fast leer, ich setze es mal drauf. Muss mir aber noch einen Quarz besorgen (der ist glaube ich beim Discovery nicht bestückt). Und wie das mit der Batterie-Funktioniert muss ich auch erst mal nachlesen. Sag bescheid wenn du was bestimmtest damit machen willst, damit ich das event. berückstichtigen kann.
Die Ansprüche sind, glaube ich, eher gering:
1s-Interrupt, Setzen von Zeit/Datum, Auslesen von Zeit/Datum, Backup-Funktionalität.
Vielen Dank für Deine Mühen!
So, die LIB ist fertig. Die Alarm-Funktion habe ich jetzt mal nicht mit reingenommen. Probier mal ob du damit zurechtkommst.
…das ging ja schnell!!!
Zur Zeit läuft meine Uhr mit Deiner LIB leider um etwa Faktor 6 zu schnell. Ich komme im Moment leider noch nicht dahinter, an welcher Konfiguration ich Veränderungen vornehmen muß, damit es mit meinem Board zusammenpaßt. Ich verwende das Xynergy-Board von Silica mit einem STM32F217 und dem externen 32.786kHz Quartz. So sehen die Einstellungen der “system_stm32f2xxx.c” aus:
*——————————————————
* System Clock source | PLL (HSE)
*——————————————————
* SYSCLK(Hz) | 120000000
*——————————————————
* HCLK(Hz) | 120000000
*——————————————————
* AHB Prescaler | 1
*——————————————————
* APB1 Prescaler | 4
*——————————————————
* APB2 Prescaler | 2
*——————————————————
* HSE Frequency(Hz) | 25000000
*——————————————————
* PLL_M | 25
*——————————————————
* PLL_N | 240
*——————————————————
* PLL_P | 2
*——————————————————
* PLL_Q | 5
*——————————————————
die Clock Einstellungen müssten egal sein, du hast ja den 32kHz Quarz drann,
im Code gibt es die zwei Vorteiler “RTC_AsynchPrediv” und “RTC_SynchPrediv” der eine steht auf 128 der andere auf 256 damit ergibt sich 1Hz für den RTC.
Vlt muss der F2 hier anders behandelt werden als der F4…da kenn ich mich leider nicht aus.
…die Vorteiler habe ich auch schon überprüft. Eigentlich sollte so alles richtig laufen. Ich habe den Verdacht, daß es ein Hardware-Problem ist. Die Kondensatoren sind meiner Meinung nach mit 10pF zu hoch ausgelegt. Ich gehe da am Montag mal mit ‘nem Oszi dran.
Vielen Dank erst einmal für Deine LIB! Die hat mir in jedem Fall sehr weitergeholfen.
Du kannst dir den LSE Clock am MCO1-Pin ausgeben lassen und per Oszi nachmessen.
So, nun läuft es! Es war tatsächlich der Quarzt, der nicht richtig lief. Neuer drauf und alles gut.
Dir noch einmal vielen Dank!!!
ist also nicht immer die Software schuld Viel spass damit.
Hallo,
danke schön für dein lib.
Du hast ein lib für DCMI mit ov9655 gemacht. Ist es möglich die DCMI interface zu benutzen mit die STM32F4 discovery Karte?
Es sieht nicht möglich aus weil Speicher ist angeschlossen aus die Pin mit DCMI.
Ist es möglich dieses Pin zutauschen?
Danke für alles. Schönes Tag.
Es ist nicht notwendig Pins zu tauschen. Es sind zwar einige Pins schon belegt, aber wenn CS43L22 und LIS302 nicht benutzt werden geht es auch so. Siehe : http://mikrocontroller.bplaced.net/wordpress/?page_id=1115 . Die Pinbelegung steht im C-File.
Hi Uwe,
ich finde deine Librarys echt spitze, sauber übersichtlich programmiert und gut kommentiert.
Hab schon einige am laufen (USB_CDC , Can, ADC, Uart, ExtiI … )
Vielen Dank für deine tolle Arbeit
Ich möchte mich für deine Bemühungen bedanken. Ich finde es großartig, dass du uns deine Libs zur verfügung stellst. Selbst wenn ich sie nicht immer direkt verwende, helfen sie doch ungemein bei manchen Verständnisproblemen.
Vielen Dank
Hello,
Great job,
Could you give an example about sdcard via spi?
Regards,
i dont have a spi library for sd-cards yet…i can try to write one.
but i dont see any benefit to my 1bit SDIO version
this needs even one pin less than a 4wire spi.
I’ll use when SDIO pins are blocked or for stm32f0
the new lib Nr.89 is now with SPI.
Warum benutzt du nicht xpcc?
https://github.com/roboterclubaachen/xpcc/tree/develop/examples/stm32f4_discovery
Hello, thank you again for “spi-fat lib”.
RFID and enc28j60 libraries will be very good though.
Happy new year,
Hallo Uwe,
Ich hab dir eine E-mail geschrieben und die Befürchtung sie könnte vielleicht im Spamordner gelandet sein. Wäre super wenn du mal nachschauen könntest.
Liebe Grüße
Frederik Löw
hab schon geantwortet
Moin, erstmal großes Lob für die vielen Libs, benutze einige davon in eigenen Projekten. Hilft auch gut beim Verständnis neuer Hardware.
Ich wollte mal fragen, ob du zufällig schon Erfahrungen mit UMTS/GPS-Modulen hast, da ich momentan in der Richtung recherchiere. Ich tendiere momentan zu einem R-GM862-G4, hast du da eine Meinung zu?
Schönen Gruß,
Kris
uhh…da kenne ich mich gar nicht aus, sorry.
Hello,
This examples are very good. I have learnt a lots from them. Thanks… But I would like to ask that can I use the PS2 example program for STM32F0xx_DISCOVERY board.
Best Regards,
Subi Jo
of course..why not ?
you need one external interrupt gpio and one normal gpio
thats all.
Hello,
Thank so much for your quick answer. I tryed to translate your ps2 program to stm32f0xx-DISCOVERY board but I loged. I got the the mistake “Error[Pe020]: identifier “RCC_AHB1Periph_GPIOA” is undefined to be connected with to enable clock with “RCC_AHB1PeriphClockCmd(PS2_KEY_DATA_GPIO_CLK, ENABLE);” command. I am very bushed. Please help me if it is possible. I welcome any advice with pleasure.
Best regards,
Subi Jo
you must include the GPIO and RCC header files for a F0 cpu
these are different to my F4 includes.
Then check the “xx_gpio.h” and “xx_rcc.h” files for the right
defines und function names.
Or copy&paste the lines from a st example for the F0.
here is a link to a F0 GPIO tutorial :
http://hsel.co.uk/2014/05/31/stm32f0-tutorial-1-gpio/
change : “RCC_AHB1Periph_GPIOA” to : “RCC_AHBPeriph_GPIOA”
change : “RCC_AHB1PeriphClockCmd” to : “RCC_AHBPeriphClockCmd”
and so on
Hello,
Sorry for my late answer. Thank you for your advice. I will try it after I will write to you.
Best regards,
Subi Jo
Hi,
Is there any implementation of LWIP? Can you please send me the link for that.
Regards,
Syed
all ethernet demos on this pages (HTTP, UDP) uses LWIP.
Hi
How do I run stm32f051 + stm32f030
5 days I could not help please
change
#include “stm32f0xx.h”
#include “stm32f0xx_gpio.h”
#include “stm32f0xx_rcc.h”
#include “stm32f0xx_spi.h”
#include “stm32_ub_spi2.h”
RCC_AHB1PeriphClockCmd(LCD_WRX_GPIO_CLK, ENABLE);
RCC_AHBPeriphClockCmd(LCD_WRX_GPIO_CLK, ENABLE);
RCC_AHBPeriphClockCmd(LCD_CS_GPIO_CLK, ENABLE);
#define LCD_WRX_GPIO_CLK RCC_AHBPeriph_GPIOB
LCD_CS_GPIO_PORT->BSRR = LCD_CS_PIN;
LCD_CS_GPIO_PORT->BRR = LCD_CS_PIN;
LCD_WRX_GPIO_PORT->BSRR = LCD_WRX_PIN;
LCD_WRX_GPIO_PORT->BRR = LCD_WRX_PIN;
{GPIOB,GPIO_Pin_13,RCC_AHBPeriph_GPIOB,GPIO_PinSource13}, // SCK
RCC_AHBPeriphClockCmd(SPI2DEV.SCK.CLK, ENABLE);
GPIO_PinAFConfig(SPI2DEV.SCK.PORT, SPI2DEV.SCK.SOURCE, GPIO_AF_0);
SPI_I2S_SendData16(SPI2, wert);
I made the changes did not work
please help me
STM32F051R8 disco spi ili9341
Thank you.
my libs only work on STM32F4 (not on F0)
please check demo files from st for the F0 series.
i dont have a F0 so i cant help.
Danke fuer die super LIB’s.
Bin Neueinsteiger bei den ARM’s.
Bitte weiter so!!!!
Hallo Uwe,
Sind deine Bibliotheken grundsätzlich auf dem stm32f415 lauffähig?
Ich habe nämlich im ‘RM0090 Reference manual’ gelesen, dass es doch grundsätzliche Unterschiede zwischen den 405/415 und 429/429 gibt.
Die UART Bibliothek zB funktioniert bei mir nicht auf Anhieb, sprich es werden Daten ausgegeben, die jedoch im seriellen Monitor keinen Sinn machen.
Könnte das eventuell an unterschiedlichen Timern liegen?
Viele Grüße,
Christophe
Ich bin sehr froh, dass Ihre Website wieder erschienen!!!! Danke !
Tolle Arbeit!
Es gibt von NXP einen neuen PHY (BroadR-Reach) für Automotive Ethernet. Glauben Sie, dass man es mit dem STM32 zum laufen kriegen kann? Im Bereich Ethernet bin ich noch ein Anfänger.
Ich möchte nur kurz fragen, ob es nicht schon vkm Hersteller Bibliotheken gibt? Deine eigenen bauen ja auch auf bereits fertige Header auf, daher meine Frage
du kannst STM-Cube und die HAL von STM benutzen, das deckt die LoLevel Sachen grob ab.
Vielen Dank!
Endlich konnte ich den Umstieg von AVR zu STM32F4 vornehmen.
Dank diesen tollen Beispielen fast ein Kinderspiel.
Ohne Deine gute Vorarbeit, wär’s ein harten Brocken geworden! Danke!!!
Konnte das eine oder andere Beispiel, mit aufwändigem Manual-Studium erweitern.
So z.B. PWM mit Puls-breite und Frequenz-anpassung für jeden einzeinen Puls im TIM1_UP_TIM10_IRQHandler().
Natürlich mit PreloadConfig und TIM_CounterMode_CenterAligned1
Ich hab da aber glich noch nen Frage:
Welche Vorlage nimmst (oder würdest) Du für Realisierung eines PID-Reglers?
Eigentlich wollte ich meine “next genrations” mit dem ESP32 realisieren. Klappt sehr schön!!
Bin aber bei den Timern, an die Grenzen gestossen ( keine PreLoadRegister)
(OHNE RTOS in meinem Fall, eine der beiden CPUs dedicated
Was hast Du zu diesen Dingern zu sagen?
Gruss Kendo