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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren