SPI1 beim STM32F103

OP #1408944
Lesenswert?
• ▲
▼
Hallo

ich bin neu was das Programmieren der STM32 anbelangt...

Da ich gerne alles von grundauf verstehe habe ich die Angewohnheit bei 
einem Mikrocontroller nicht auf vorgefertigte Funktionen zurückzugreifen 
sondern selbst direkt ind die Register zu schreiben...

Ich möchte gerne das SPI1 welches am APB2 hängt in betrieb nehmen...
Dazu habe ich folgendes Programm gerüst geschrieben
doch leider klappt es nicht...
Ich habe auch schon einmal einen Code welchen ich hier im Forum gefunden 
habe zum SPI1 ausprobiert jedoch auch ohne erfolg, deshalb bin ich 
wieder zum ursprünglichen code zurückgekehrt...

Ich hoffe ihr sieht meinen Fehler...

Besten Dank schonmal
1
int main(void)
2
{
3
  
4
#ifdef DEBUG
5
  debug();
6
#endif
7

8
  /* System Clocks Configuration **********************************************/
9
  RCC_Configuration();   
10

11
  /* NVIC Configuration *******************************************************/
12
  NVIC_Configuration();
13

14
  /* SysTick end of count event each 1ms with input clock equal to 9MHz (HCLK/8, default) */
15
  SysTick_SetReload(9000);
16

17
  /* Enable SysTick interrupt */
18
  SysTick_ITConfig(ENABLE);
19

20
  /* Initial LED PB[8..15] */
21
  
22

23
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO_LED, ENABLE);
24
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
25
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
26
  GPIO_InitStructure.GPIO_Pin = LED1_PIN |
27
                                LED2_PIN |
28
                                LED3_PIN |
29
                                LED4_PIN |
30
                                LED5_PIN |
31
                                LED6_PIN |
32
                                LED7_PIN |
33
                                LED8_PIN;
34

35

36
  GPIO_Init(LED_PORT, &GPIO_InitStructure);  
37

38
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
39
  SPI1->CR1 = 0x0B7C;   //Konfigurieren 
40
  SPI1->CR2 = 0x0063;   //Konfigurieren
41

42
  while(1)                          
43
  {
44
    GPIOB->ODR = (SPI1->SR & 0x00FF) << 8; //Ausgabe des SR an den LED's
45
    SPI1->DR = 0xFF00; //Test Daten Schreiben
46
    SPI1->DR = 0x00FF; //Test Daten Schreiben
47
    
48
  }  
49
}
#1408963
Lesenswert?
• ▲
▼
Ich bin ebenfalls ein Freund von direkten Registern. Aber ich bin kein 
Freund von Hexwerten in Steuerregistern mit vielen kleinen Bits, die ich 
als Leser jetzt erst einmal auseinander nehmen müsste um das zu 
verstehen. So hatte STM zu diesem Behufe den Bits doch extra Namen 
verpasst und die sogar ins *.h File reingeschrieben.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.