嵌入式C语言--GPT通用定时器

嵌入式C语言–GPT通用定时器

嵌入式C语言--GPT通用定时器

  • 嵌入式C语言--GPT通用定时器
    • 一. GPT基本概念
    • 二. GPT的作用
    • 三. GPT通道的四个状态
    • 四. Continuous/One-Shot模式
      • 3.1)Continuous模式
      • 3.2)One-Shot模式

一. GPT基本概念

GPT即General Purpose Timer(s) ,通用定时器模块,该模块通过使用硬件定时器通道为操作系统或其他需要定时器功能的模块提供定时功能,通常可提供从微秒级到毫秒级的定时时钟功能。

二. GPT的作用

1)启动及停止硬件定时器;
2)获取定时器已过去及剩余的定时器数值;3)控制定时器的定时数值;
4)控制时间触发的中断
总而言之,其作用就是一个定时器,为需要的模块提供定时功能
例如对于需要进行周期性处理的动作通常可通过定时器功能来实现。
定时器一旦启动后,将持续进行计数,一旦到达所设置的定时值时将会以中断的方式予以告知。

三. GPT通道的四个状态

GPT通道的状态有:Initialized/Running/Stopped/Expired四个状态
1)Initialized
在GPT Driver初始化完成后状态为Initialized状态;
2)Running
调用Gpt_Startimer()后状态变为Running,开始计时;
3)Expired
计时达到目标后变为Expired
4)Stopped
调用Gpt_Stoptimer()后状态变为Stopped

四. Continuous/One-Shot模式

GPT根据计时模式可以分为Continuous及One-Shot模式,其中Continuous在开始计时达到设定时间后会自动开始下一轮计时,但对于One-Shot模式则需要调用API Gpt_Startimer()重新开始定时。根据不同的使用场景在MCAL中进行灵活配置。

3.1)Continuous模式

周期性定时器(continuous):定时时间终止时,定时器会自动重新开始,若产生中断的话,每隔一个定时周期就会产生一次。
到达目标时间后,计时器再次以值“0”继续运行。
Continuous模式采集过程如下:
1)调用Gpt_EnableNotification() API使能对应通道的中断服务函数;
2)调用Gpt_Startimer()开始定时;
3)在GPT Timer达到设定时间后会进入对应的中断服务函数,同时开启下一轮的定时,如此循环往复;
4)当不需要再继续定时调用Gpt_Stoptimer(),关闭定时器,停止计时。

3.2)One-Shot模式

单次性定时器(one-shot):定时时间终止时,定时器中止不再计数,若产生中断的话,也仅产生一次中断。one shot mode timer
One-Shot模式采集过程相对比较直白,即触发一次定时就工作一次,下一次需要重新去启动,其大致工作过程如下:
1)调用Gpt_EnableNotification() API使能对应通道的中断服务函数;
2)调用Gpt_Startimer()开始定时;
3)在GPT Timer达到设定时间后会进入对应的中断服务函数;
4)当需要再次定时时重新调用Gpt_Startimer()开始定时;
4)当不需要再继续定时调用Gpt_Stoptimer(),关闭定时器,停止计时。

相关推荐

  1. 嵌入C语言--GPT通用定时器

    2024-04-01 15:24:04       28 阅读
  2. C语言-STM32:初始定时器(通用定时器)

    2024-04-01 15:24:04       16 阅读
  3. 嵌入C语言(6)——数组

    2024-04-01 15:24:04       41 阅读
  4. 怎样学习嵌入C语言编程

    2024-04-01 15:24:04       53 阅读
  5. 嵌入——C语言】动态内存申请

    2024-04-01 15:24:04       55 阅读
  6. 嵌入Linux C语言介绍

    2024-04-01 15:24:04       35 阅读
  7. 嵌入C语言(十三)

    2024-04-01 15:24:04       19 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-01 15:24:04       5 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-01 15:24:04       5 阅读
  3. 在Django里面运行非项目文件

    2024-04-01 15:24:04       4 阅读
  4. Python语言-面向对象

    2024-04-01 15:24:04       5 阅读

热门阅读

  1. vue3中watch详解

    2024-04-01 15:24:04       24 阅读
  2. Node.js常用命令

    2024-04-01 15:24:04       27 阅读
  3. 获取 PostgreSQL 某个表的定义

    2024-04-01 15:24:04       23 阅读
  4. Python笔记|列表对象方法

    2024-04-01 15:24:04       20 阅读
  5. day14-二叉树part01(递归法/迭代法)

    2024-04-01 15:24:04       28 阅读
  6. How to use pandoc in Ubuntu 22.04

    2024-04-01 15:24:04       23 阅读
  7. 缓存的常见问题及其解法

    2024-04-01 15:24:04       16 阅读
  8. 巧克力(蓝桥杯)

    2024-04-01 15:24:04       28 阅读
  9. 本学期学习计划

    2024-04-01 15:24:04       31 阅读