定时器预分频系数好像必须要大于定时计数器值才能正常?

2019-07-14 20:33发布

为什么我用基本定时器6发现,时钟预分频值如果小于定时计数器重载值是会出错,感觉像进入中断的时间特别短,中断函数中灯的闪烁完全常亮。
还有,我用的是上电默认的8mhz时钟,但是定时器进中断的时间跟我预料的差好多,求看看哪里问题。
#include<STM32f10x.h>
int main()
{
        RCC->APB1ENR|=(1<<4);//开启定时器6时钟
        tiM6->CR1|=(1<<7)|(1<<2);//开启预装载,只有计数溢出才产生更新中断/dma请求
        TIM6->DIER|=0x01;//使能中断
        TIM6->PSC=8000;//预分频系数8000
        TIM6->ARR=8000-1;//自动重装载值8000.因内部8mhz,大概进入中断为8s一次
        TIM6->CR1|=1;//启动定时器6

        NVIC->ISER[1]|=(1<<22);//开nvic的定时器6中断,优先级按默认

        RCC->APB2ENR|=(1<<4);
        GPIOC->CRL|=0X22222222;
        GPIOC->BSRR=0XFF;//初始化led灯的io口
        while(1);

}
void TIM6_IRQHandler()
{
        static u16 sec=0;
        if(sec%2!=0)
        {
                GPIOC->BRR=0XFF;
        }
        else
                GPIOC->BSRR=0XFF;
        sec++;
        TIM6->SR=0X00;//清除标志
}

0条回答

一周热门 更多>