zoukankan      html  css  js  c++  java
  • STM32定时器

    种类

    有高级定时器TIM1和TIM8,通用定时器TIM2~5,基本定时器TIM6、7
    对于F1系列,都是16位。高级和通用有4个捕获通道,基本定时器没有捕获通道。高级定时器可以互补输出

    通用定时器

    位于APB1总线上

    通用定时器使用方法

    定时器时钟使能

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//定时器时钟使能
    

    定时器初始化

    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
    TIM_TimeBaseInitStructure.TIM_Period=arr;//16位的预装载值
    TIM_TimeBaseInitStructure.TIM_Prescaler=psc;//16位的预分频系数
    TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up//向上计数模式;
    //TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1; //时钟分割,可以不用
    TIM_TimeBaseInit(TIM3,&Tim_TimeBaseInitStructure);
    

    使能中断

    TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);//哪个定时器,哪种中断(定时器3,更新中断)
    

    关于中断类型参考

    中断优先级设置,记得要在执行下面这些代码前先设置主优先级分组NVIC_PriorityGroupConfig()

    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;
    NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
    NVIC_Init(&NVIC_InitStructure);
    

    使能定时器

    TIM_Cmd(TIM3,ENABLE);
    

    通用定时器中断服务函数

        void TIM3_IRQHandler(void){
            if (TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET){//判断是不是定时器3更新中断来了
            LED=!LED;//操作
            TIM_ClearITPendingBit(TIM3,TIM_IT_Update);//手动清除定时器3的更新中断标志位
            }
        }
    
    

    溢出时间Tout=(ARR+1)(PSC+1)/Tclk 其中ARR和PSC都是16位的

    Tout:TIM3 溢出时间(单位为 us)

    Tclk:TIM3 的输入时钟频率(单位为 Mhz)

    Tclk/(psc+1):计数器的时钟频率

  • 相关阅读:
    设计模式学习笔记(1)——简单工厂模式
    BarTender怎样同时打印自动日期和流水号?
    BarTender安装常见问题集结
    Windows更新导致的打印问题
    BarTender中如何为称重设备设置秤显示?
    BarTender中如何调整数据输入表单的大小?
    BarTender 2016如何导出模板为pdf文件?
    ABBYY PDF Transformer+安装教程
    ABBYY PDF Transformer+ 给你好看
    ABBYY PDF Transformer+功能概述
  • 原文地址:https://www.cnblogs.com/uestcman/p/9047607.html
Copyright © 2011-2022 走看看