2017-03-08 4 views
0

Ich versuche TIM6 auf STM32F103C8T6 zu verwenden, um Zeit zu generieren und eine LED zu blinken, aber der Timer sieht nicht, zu arbeiten, welche anderen Parameter muss ich initialisieren, um verwenden zu können der Timer? Code unten?TIM6, grundlegende Zeitgenerierungsfunktion funktioniert nicht

#include "stm32f10x.h" 

int main(void) 
{ 
RCC->APB1ENR |= 0x00000010 ; // CLOCK SIGNAL TO BASIC TIMER 6 IS INITIALIZED 

RCC->APB2ENR |= 0x00000004 ; //CLOCK SIGNAL TO GPIO PORT A IS INITIALIZED 

GPIOA->CRL |= 0x33333333 ; // LOWER PINS OF GPIO PORT A ARE DEFINED AS PUSH AND PULL OUTPUT 

TIM6->CR1 |= 0x0081 ; // COUNTER AND AUTO RELOAD BUFFER ENABLED 

TIM6->PSC |= 0x1F40 ; // PRESCALER SET AS 8000 

TIM6->ARR |= 0x05DC ; // AUTO RELOAD REGISTER SET AT 1000 

while(1) 
{ 
    if (TIM6->CNT == 1000) 
    { 
     GPIOA->BSRR |= 0X0044 ; //SET PINS 2 AND 6 OF GPIOA TO HIGH 
    } 

    if (TIM6->CNT == 0x05DC) 
    { 
     GPIOA->BRR |= 0X0044 ; //SET PINS 2 AND 6 OF GPIOA TO HIGH 
    } 
} 

} 
+0

Testen auf Gleichheit mit dem Timer-Wert ist eine schlechte Idee. Verwenden Sie einen '> =' Vergleich. Wenn der Zeitgeber nicht sehr langsam läuft, sind die Chancen gering, den Vergleich durchzuführen, wenn der Zeitgeber auf einem genauen Wert ist. –

+0

Ich habe das gerade korrigiert, aber es funktioniert immer noch nicht ... –

+0

Kannst du die Timer-Register in einem Debugger, Breakpoint sehen und sehen, ob der Timer hochzählt. Das wird Ihnen sagen, ob es richtig initialisiert ist. –

Antwort

2

STM32F103C8T6 hat nur TIM1 - zum Scheitern verurteilt TIM4, ist zum Scheitern verurteilt, so versucht TIM6 zu verwenden. Siehe "Tabelle 4. Timer-Funktionsvergleich" in the datasheet (Seite 17).

Verwandte Themen