2017-03-08 4 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. 타이머 기능 비교"를 참조하십시오.