zoukankan      html  css  js  c++  java
  • STM32 Timer (1) 定时器分类和框图

    1.定时器简单分类

    1. 高级控制定时器 TIM1 TIM8
    2. 通用定时器 TIM2 TIM3 TIM4 TIM5
    3. 基本定时器 TIM6 TIM7

    定时器:
    1. 16/32位 向上 向下 上下 计数模式, 自动重装载计数器 TIMx_CNT
    2. 16位可编程(实时修改) 预分频器(TIMx_PSC) 
    3. 4个独立通道(TIMx_CH1 ~ 4)
        输入捕获
        输出比较
        PWM生成
        单脉冲模式
    4. 可以和外部定时器集联

    2. 定时器结构图

    定时器结构框图分为5部分
    时钟产生部分
    定时器部分
    输入比较部分
    输出比较部分
    寄存器部分

    时钟产生来源:
    1. 内部时钟        APB1(CLK_INT) (*)
    2. TIMx_ETR       外部引脚输入
    3. ITRx            内部触发输入,定时器集联
    4. TL1FP1/2        来自于定时器外部通道
    
    主要是内部时钟,最后输出 [ CK_PSC ]
    时基电路:
    将 CK_PSC 通过 [ PSC预分频器 ] 进行分频得到 [ CK_CNT ] 得到最终时钟
    通过 [ CNT计数器 ] 和 计数模式 进行计数, 当计数结束后触发 [ 自动重装载计数器 ]
    输入捕获:
    输入捕获 每一个通用定时器有4个通道 [ TIMx_CH1/2/3/4 ]
    输出比较:
    比如说现在定时器是从 0-100 向上计数
    如果把 [ 捕获比较寄存器 ] 的值设置为 v = 50;
    如果 当前值 < v 则输出高电平 当前值 > v 则输出低电平
    那么效果就是 0-50 输出高电平, 50-100 输出低电平, 实现通道输出
    通过控制 V 的值 就能改变占空比,  实现PWM。
  • 相关阅读:
    在am中定义消息集束,并在CO中验证之后抛出异常。
    在EORow或者VORow中对数据进行重复性校验
    axis2 webservice jar包使用情况(转)
    std::function以及std::bind
    Qt学习过程
    NULL和nullptr
    清空表且id为0
    C++线程互斥、同步
    warning: deleting 'void *' is undefined 错误
    Classification / Recognition
  • 原文地址:https://www.cnblogs.com/kmist/p/11669232.html
Copyright © 2011-2022 走看看