微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 定时器预分频系数好像必须要大于定时计数器值才能正常?

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

时间:10-02 整理:3721RD 点击:
为什么我用基本定时器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;//清除标志
}

共同研究,正在看stm32

你要确认一下你的系统时钟是8MHZ?你没有使用HSE?如果没有装外部晶振,则系统启动后使用HSI为8MHZ,如果有使用HSE,则系统启动默认72MHZ

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top