• 【入门-06】系统定时器


    编辑:CrazyRabbit
    日期:2022年7月28日

    本文是英飞凌官方培训的笔记摘录,入门篇第六节课。

    1. 总述

    STM主要包括了64位的Counter,还有两个比较器,时钟输入主要来源于f_STM,会产生两个比较中断,分别是Interrupt-0和Interrupt-1
    image.png
    **亮点:**可以产生OS的时钟基,同时产生触发事件;AURIX有多个STM模块,模块数量跟CPU数量一致,每个CPU可以用一个独立的STM作为时钟基

    2. 64位计数器

    STM有一个64位的计数器,时钟来源于f_STM,而f_STM的时钟源来自CCU(Clock Control Unit),即时钟控制单元。
    image.png
    System Timer可以通过7个32位宽度的寄存器来读取(如右图的Counter1~Counter7),这7个寄存器对应64位的Systerm Timer的不同范围。
    由于计数器是64位宽度,所以需要进行两次读取加载指令(一次读32位)再拼接,两次加载指令期间,计数器仍在计数,所以可能会出现不匹配的现象。为了解决这个问题,引入了(Capture Register)捕捉寄存器。捕捉寄存器在低位被读取时保持高位的值,那么第二个加载指令直接读取捕捉寄存器中的值。

    3. 灵活的中断服务请求

    STM可以跟两个比较器寄存器的值进行比较,如果Match,则产生match事件。并且通过中断配置也可以产生对应的中断服务请求。
    image.png
    每个比较器都是通过两个参数来配置的:① START,开始比较的位 ② SIZE,比较的位数。

    4. 系统集成

    STM的时钟源来自于CCU,是在PLL使能后产生的;STM时钟分频需要用到两个模块:CCU和STM。
    image.png
    必须确保f_STM与f_SPB(系统外设总线)是整数倍关系,否则计数器值可能会错。

    5. 应用案例

    典型的应用案例是操作系统的时钟基的产生。在嵌入式多核系统中可能会跑多个操作系统。每个CPU可以跑单独的RTOS和单独的STM,产生独立的时钟基。
    image.png

  • 相关阅读:
    BOND ~
    CSS - 快速实现悬浮吸顶,当页面滑动一定距离时固定吸附在顶部(position: sticky)
    webpack5 Core-js解决async 函数、promise 对象等兼容问题
    面向对象技术--设 计 模 式
    go语言 中 new能初始化哪些类型?
    直流有刷电机驱动基于STM32F302R8+X-NUCLEO-IHM07M1(一)
    C语言日记——调试篇
    【Django框架】——20 Django视图 02 路由命名和反向解析
    基于tensorflow的cnn文本分类
    在亚马逊正确合理的跟卖
  • 原文地址:https://blog.csdn.net/CrazyRabbit1989/article/details/126035829