• 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):计数器的时钟频率

  • 相关阅读:
    解决nginx启动后进程存在但访问不到的问题
    验证nginx配置文件遇到的路径问题
    前端npm run build打包和tar压缩示例讲解
    安装vuecodemirror支持SQL可视化
    redis学习之安装
    nginx版本升级详解
    前端二次非对称RSA加密密文太长的问题
    听《Node服务线上故障》分享的思考
    fastdfs部署及官网
    vue踩坑
  • 原文地址:https://www.cnblogs.com/uestcman/p/9047607.html
Copyright © 2020-2023  润新知