TIM6,基本时间生成功能不起作用

时间:2017-03-08 14:06:42

标签: c++ timer arm embedded stm32

我正在尝试在STM32F103C8T6上使用TIM6来生成时间并使LED闪烁,但是定时器看不到工作,我需要初始化什么其他参数才能使用定时器?代码如下?

#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
    }
}

}

1 个答案:

答案 0 :(得分:2)

STM32F103C8T6只有TIM1 - TIM4,因此尝试使用TIM6注定要失败。参见"表4.定时器功能比较"在the datasheet(第17页)。