第二十节: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 模块资源。

相关推荐
说不得明天28 分钟前
网络管理:AutoarNM部分
c语言·网络·mcu·汽车·autosar
lularible38 分钟前
PTP协议精讲(4.4):从时钟程序实现——时间的“追随者“
网络·网络协议·开源·嵌入式·ptp
小凡子空白在线学习1 小时前
汽车点火各状态
汽车·uds
飞凌嵌入式1 小时前
工业运维救星!飞凌嵌入式 FCU1501 自带物理复位键,IP 输错再也不用跑现场
嵌入式
CHENKONG_CK2 小时前
恶劣环境下 RFID 在汽车焊接产线的应用与实践
自动化·汽车·制造·rfid
汽车仪器仪表相关领域2 小时前
Debron OVM 1052 光学关门速度仪:汽车门盖检测的高精度便携工具 + 生产线适配 + 耐久性监测,整车制造与质量控制的黄金标准
人工智能·功能测试·单元测试·汽车·制造·可用性测试
青天喵喵2 小时前
Linux WiFi 架构解析:从用户态到驱动与硬件(基础篇)
linux·运维·arm开发·架构·wifi·嵌入式
lularible2 小时前
PTP协议精讲(4.2):消息结构与编码——PTP报文的“DNA“
网络·网络协议·开源·嵌入式·ptp
FreakStudio16 小时前
开源分享|用MicroPython 做了个 AI 小鸡,它会长大,还记得我所有的情绪
python·单片机·嵌入式·面向对象·并行计算·电子diy·电子计算机
莱歌数字17 小时前
汽车外流场仿真+深度学习预测:风阻优化的“秒级革命”
人工智能·科技·汽车·电脑·制造·散热