Autsch...da werd ich TXE und BSY mal noch fix drehen. Und CS natürlich einbauen. Das Oszi hab ich erst am Mo wieder zur Verfügung, falls das LCD die Arbeit noch verweigert (wovon ich sicherheitshalber mal ausgehe).
- - - Aktualisiert - - -
Nachtrag:
Der STM32 kommt im Debug-Mode immer noch nicht aus der zweiten While-Schleife. Wenn ich einen Haltepunkt am Ende der Funktion setze, wird dieser nie erreicht -> Endlosschleife. 
Was muß denn gemacht werden, um ein Peripherie-Element wie die SPI zu nutzen? Meines Wissens ist dies:
-Takt für Pins aktivieren
-Takt für Peripherie aktivieren
-Pins konfigurieren
-Peripherie konfigurieren
-> Ferig
Hab ich was übersehen in dieser Liste?
Noch was...was macht eigentlich die SystemInit() ? (Hab die grad mal am Anfang des Programms aufgerufen, ändert aber auch nichts.)
Code:
void SndBfhlLCD(char byte){
SPI2->CR1 |= SPI_CR1_SPE; //SPI aktivieren
GPIOC->BSRR |= GPIO_BSRR_BR_2; //RS-Pin zurücksetzen
GPIOC->BSRR |= GPIO_BSRR_BR_3; //CS runterziehen
while (!(SPI2->SR & SPI_SR_TXE)){ //Warten bis Transmit-Register frei ist
}
SPI2->DR = byte; //Byte senden
while (!(SPI2->SR & SPI_SR_TXE)){ //Warten bis Transmit-Register frei ist
}
while (SPI2->SR & SPI_SR_BSY){ //Warten bis laufende Übertragung abgeschlossen ist
}
GPIOC->BSRR |= GPIO_BSRR_BS_3; //CS high
GPIOC->BSRR |= GPIO_BSRR_BS_2; //RS-Pin high
SPI2->CR1 &= ~SPI_CR1_SPE; //SPI deaktivieren
//RS NICHT toggeln
}
Ich wünsche an dieser Stelle mal ein schönes Wochenende
Lesezeichen