当前位置: 首页 > news >正文

第二十节:MCAL GPT理论

通常情况下,定时任务交给 OS Alarm 处理。但如果某个任务需要极其精确的计时,或者系统里的 OS Alarm 已经排得太满了(开销太大),BSW(基础软件)的其他模块就会直接“跳过”OS,直接调用 GPT 驱动来获取定时服务,以保证系统的实时性和效率。

1. 上半部分:硬件模块(定时源)

这四个是 S32K144 内部真实的硬件外设,它们都被封装在 GPT 驱动下:

  • LPIT (Low Power Interrupt Timer):最常用的,精度高,适合常规任务调度。

  • FTM (FlexTimer):功能最强,除了定时还能做 PWM、捕获。

  • LPTMR (Low Power Timer):可以在芯片休眠(Low Power Mode)时继续工作,唤醒系统。

  • RTC (Real Time Clock):专门用来数秒、分、时,做实时日历。

2. 下半部分:时钟源(动力来源)

这部分展示了每个模块可以选用的具体时钟信号。注意其中的命名规律:

  • SOSDIV_CLK (System Oscillator):外部晶振经过分频后的时钟(最稳定)。

  • SIRDIV_CLK (Slow Internal RC):芯片内部的慢速 RC 振荡器(通常为128kHz)。

  • FIRDIV_CLK (Fast Internal RC):芯片内部的快速 RC 振荡器(通常为48MHz)。

  • SPLLDIV_CLK (System PLL):锁相环倍频后的高速时钟(性能最高)。

  • LPO (Low Power Oscillator):极低功耗的128kHz内部时钟,专给 RTC 或 LPTMR 用。

1. 准备阶段:开启“闹钟”提醒

  • 动作:Gpt_EnableNotification

  • 目的:告诉 GPT,当时间到了,请务必调用我预设好的“通知函数”(Callback)。如果不做这一步,时间到了硬件也没反应。

2. 启动阶段:设置并开始计时

  • 动作:Gpt_StartTimer

  • 过程:用户给出一个计数值(Ticks),GPT 驱动将其写入硬件寄存器。

  • 结果:硬件定时器开始从设定值倒计时(或向上累加)。

3. 到期阶段:自动触发回调

  • 触发:硬件时间归零(Timer expired)。

  • 反馈:Gpt_Notification_Channel1()被自动调用。

  • 注意:因为是One-shot模式,闹钟响过一次就自动停止了。如果你想再响一次,必须在通知里再次调用Gpt_StartTimer

4. 查询与关闭阶段:手动介入

  • 查询:Gpt_GetTimeRemaining。在计时还没结束时,用户可以随时查看还剩多少时间。

  • 取消:Gpt_StopTimer。如果你不想等了,可以中途强行关掉闹钟。

  • 卸载:Gpt_DeInit。彻底释放 GPT 模块资源。

http://www.jsqmd.com/news/461458/

相关文章:

  • 2025年最值得收藏的图像处理工具:洋芋田图像工具箱,开源免费无广告
  • 阶梯碳价计算函数
  • Master the Object-Oriented Mindset in Ruby and Rails
  • 全账号聚合,告别切换内耗
  • 初识 OpenClaw:它是什么?它能干什么?
  • 盒马鲜生礼品卡变现:你需要了解的三种实用方法 - 团团收购物卡回收
  • 1688采购卡点破解指南:3步锁定低价性价比货源
  • 2026年最佳EOR名义雇主模式品牌排行榜,海外用工新风尚
  • 403.2亿元!数控加工CAM市场规模刷新纪录,高端制造核心支撑力凸显
  • OpenClaw 多 Agent 协作研发:5 个 AI 员工,从需求到代码自动流转
  • AI 数学的秘密花园:16.语义泡泡(概念不是点,而是会重叠的泡泡区域)
  • AI 数学的秘密花园:17.语义流形(多层折纸,语言被折成好玩形状)
  • 什么是大端和小端字节序?如果你的PHP程序与一个C写的TCP服务通信,传输二进制数据时需要考虑这个问题吗?
  • 小程序——路由API
  • 解决vscode里面Gemini Code Assist插件无法使用的问题!!!
  • 【pfg】
  • ubuntu mujoco安装好以后如何通过python那个它
  • 20260310_170257_渗透测试人员守则:基础知识
  • OpenClaw 从 0 到 1:本地部署 + 飞书机器人(避坑实战)
  • python2自动打卡脚本
  • Minio分布式集群+nginx+keepalived部署
  • 前端八股文面经大全:字节跳动前端二面部分(2026-01-13)·面经深度解析
  • 为什么PHP的浮点数运算(如0.1+0.2)结果不是精确的0.3?IEEE浮点数标准是如何表示小数的?
  • OpenClaw 在 Windows 系统下的完整安装部署指南
  • 2026年3月东莞试验箱厂家靠谱推荐:恒温恒湿、交变湿热热、两箱式冷热冲击、三箱式冷热冲击、盐雾试验箱,艾博仪器解锁东莞试验箱优质之选 - 海棠依旧大
  • 2026实测|8款封神PPT工具,AI博主私藏,职场/学生/技术党直接抄作业
  • GESP / CSP-J入门讲解:题目的 题意分析 + C++题解
  • 2026软考资料,看这一篇就够了
  • 数字遗体化妆师:给去世程序员的代码做美容
  • python字符串、列表介绍