STM32 USB HID und Timer

Gast #1984539
Lesenswert?
• ▲
▼
Hallo,

ich habe das Phytec nanomodul Stm32F103 mit zugehöriger Basisplatine und 
programmiere mit Keil uvision4.
Ich möchte ein Programm schreiben, welches eine Kommunikation des 
Microcontrollers mit dem PC über USB ermöglicht und gleichzeitig noch 
mehrere ADC-Kanäle auslesen und eine PWM erzeugen kann.

Die einzelnen Programmteile laufen einzeln einwandfrei, also das USB HID 
Programm von Keil läuft einwandfrei, genauso wie eine PWM mit Timer 1 
oder das Auslesen der ADCs.
Versuche ich die Programmteile aber nun zu verbinden funktioniert der 
USB nicht mehr (Meldung: USB Gerät kann nicht erkannt werden).
Der einzige Timer der zusammen mit dem USB Programm funktioniert ist 
Timer 8. Sobald ich einen anderen Timer aktivieren möchte funktioniert 
der USB nicht mehr. Es reicht aus das Enable Bit des Timers zu setzen 
ohne dass irgendein anderes Register gesetzt wurde um den USB 
lahmzulegen.

Hat von euch jemand eine Idee an was das hängen kann??
Ich wäre euch sehr dankbar für eure Hilfe.

Gruß Tobias
Gast #1985081
Lesenswert?
• ▲
▼
Gast #1987482
Lesenswert?
• ▲
▼
Hallo,

also hier habe ich mal meine Konfiguration der Timer, bin extra noch 
einmal alles durchgegangen konnte aber keine Fehler finden.
Mittlerweile benutze ich auch das USB-Programm von STM, es ergeben sich 
aber die gleichen Fehler.

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);  //Erlauben der 
Clock
    TIM1->RCR = 0x0000;
      TIM1->PSC = 0x0047;                               // set prescaler
      TIM1->ARR = 0x03E7;                               // set 
auto-reload
    TIM1->CCR1  = 0x00F0;                            //    0x02EE 
//
      TIM1->CCMR1 |= 0x00F0;                           //
      //TIM1->CCMR2 = 0x0000;                           //
      TIM1->CCER  |= 0x0005;                            // set 
capture/compare enable register
      TIM1->SMCR  |= 0x0040;                            // set slave 
mode control register
      TIM1->BDTR  |= 0xC000;                            // set break and 
dead-time register

      TIM1->CR1 = 0x0005;                               // set command 
register 1
      TIM1->CR2 = 0x0040;                               // set command 
register 2
                           // interrupts used
      TIM1->DIER |= 0x0003;                             // enable 
interrupt
      NVIC->ISER[0] |= (1 << (TIM1_UP_IRQChannel & 0x1F));  // enable 
interrupt

      TIM1->CR1 |= 0x0001;                              // enable timer

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, 
ENABLE);
    GPIOA->CRH = 0x0000000B;              //PA 8  auf Alternate 
Function, 50Mhz
    GPIOB->CRH = 0x00B00000;

Ich habe mittlerweile auch einmal versucht den Timer zu remappen.
Dabei passiert aber dann am Ausgang entweder garnichts wenn ich 
folgenden Programmtext nehme:

GPIO_PinRemapConfig( GPIO_FullRemap_TIM1, ENABLE );

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
    GPIOE->CRH =0x000000BB;

oder ich habe auf dem negierten Ausgang 3,3 V und auf dem normalen 
Ausgang 0V wenn ich folgenden Programmtext benutze:

GPIO_PinRemapConfig( GPIO_FullRemap_TIM1, ENABLE );

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
    GPIOE->CRH =|0x000000BB;

Irgendwo muss da ja etwas sein das mir entweder den Timer oder die 
Ausgangspins verändert, das muss aber dann schon im ursprünglichen 
stm-Programm für USB oder im ursprünglichen Keil-Programm für die 
USB-HID vorhanden sein.

Leider finde ich den Punkt einfach nicht.
So langsam verliere ich den Durchblick

Gruß Tobias

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.