2017-03-08 23 views
0

我想在STM32F103C8T6上使用TIM6來生成時間和閃爍的LED,但計時器沒有看到工作,還有什麼其他參數需要初始化以便能夠使用定時器?代碼如下?TIM6,基本時間生成功能不工作

#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

測試與計時器值的相等性是一個壞主意。使用'> ='比較。除非定時器運行非常緩慢,否則當定時器處於精確值時進行比較的可能性很小。 –

+0

我剛剛糾正,但它仍然無法工作..... –

+0

你能看到定時器的寄存器在調試器,斷點,看看定時器是否正在計數。這會告訴你它是否被正確初始化。 –

回答

2

STM32F103C8T6只有TIM1-TIM4,所以試圖使用TIM6註定要失敗。請參閱the datasheet(第17頁)中的「表4.定時器功能比較」。