为什么我用基本定时器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;//清除标志
}
一周热门 更多>