Autosar MCAL-GPT配置及使用

前言

GPT属于MCAL中比较常用且不是很复杂的模块。它初始化和控制微控制器内部的通用定时器(GPT)。Internal General Purpose Timer(s) 。一般用它作为定时器来触发指定的功能。对于Tc27x来说,一般会关联到GTM中的ATOM或TOM通道
GPT

GptChannelConfigSet

配置GPT通道
1.jpeg
GptChannelId



2.jpeg
一般配置通道会自动生成Id号
cfg配置:
3.png


GptChannelMode



4.jpeg
GPT_CH_MODE_CONTINUOUS:到达目标时间后,计时器再次以值“0”继续运行
GPT_CH_MODE_ONESHOT:到达目标时间后,定时器自动停止(定时器过期)。
下面两张图很好的说明了两种模式的运行机制:


5.jpeg
单次模式时调用Gpt_StartTimer后,到达目标时间时会保持,除非再次调用Gpt_StartTimer



6.jpeg
连续模式时调用Gpt_StartTimer后会重复运行,除非调用Gpt_StopTimer
cfg配置:
7.png


GptChannelTickFrequency

定时器通道的滴答频率,单位为Hz。此处Tc27x不支持,因为频率在GTM模块中已经设定好了


8.jpeg

cfg配置:
9.png


GptChannelTickValueMax

以tick为单位的最大值,计时器通道能够计数。随着下一次tick,计时器转到零。此处Tc27x不支持,因为频率在GTM模块中已经设定好了


10.jpeg

cfg配置:
11.png


GptEnableWakeup

使能通道的唤醒功能。没有用过这个功能
12.jpeg


cfg配置:
13.png
GptNotification

指向回调函数的函数指针(用于非唤醒通知)


14.jpeg
在调用Gpt_StartTimer后到达对应时间,会触发该回调函数。在回调函数中可以继续调用Gpt_StartTimer以继续定时触发


15.jpeg

cfg配置:
16.jpeg


GptChannelClkSrcRef

配置关联的时钟
cfg配置:
17.png


GptAssignedHwUnit

配置关联的硬件通道
cfg配置:
18.png
需要确保配置的通道没有被占用,此处我们还使用了中断功能,需要配置对应的回调函数及OS中配置中断源
GptConfigurationOfOptApiServices

配置API函数
GptDeinitApi



19.jpeg
使能Gpt_DeInit函数。
cfg配置:
20.png


GptEnableDisableNotificationApi



21.jpeg
启用Gpt_EnableNotification和Gpt_DisableNotification,用来启用/禁止通道中断通知(与正常模式相关)。
cfg配置:
22.png


GptTimeElapsedApi



23.jpeg
使能Gpt_GetTimeElapsed函数,该函数返回已经过的时间。
cfg配置:
24.png


GptTimeRemainingApi

25.jpeg
使能Gpt_GetTimeRemaining函数,该函数返回到达目标时间之前剩下的时间。

cfg配置:
26.png


下图很好的说明了两个函数的作用:
27.jpeg


GptDriverConfiguration

这里面的配置默认即可
GptClockReferencePoint

配置时钟

cfg配置:
28.png
此处我们的计数频率为选择的ATOM/TOM通道的频率,需要确认对应的频率,例如我们使用的是ATOM2的通道0,我们使用的时钟为
29.png
由CMU模块可知,CLK0分频系数为9,则此处我们使用的通道频率为100/(9+1)=10MHz.
GPT的使用

在初始化时,使用Gpt_EnableNotification函数使能通道的回调功能,使用Gpt_StartTimer开始计数
/** Start GPT */ Gpt_EnableNotification(GPT_CHANNEL); Gpt_StartTimer(GPT_CHANNEL,GPT_TIMER);此处的GPT_TIMER是计数的个数,例如,我们此处的频率为10MHz,计数为50000,则触发Notification的时间为0.005s,我们可以在Notification函数中再次调用Gpt_StartTimer,以达到周期触发的作用
FUNC(void, CDD_E52141_CODE) Cbk_GptNotification(void){   Gpt_StartTimer(GPT_CHANNEL,GPT_TIMER);}总结

至此,MCAL中除了memory之外,其他常用功能都已经介绍完了。后面会继续更新memory相关的内容,包括Nvm,Memif,Fee,Fls等。


若你觉得本文对你有帮助,欢迎点赞,关注,收藏,转发~~~ 你的鼓励是对小弟的最大支持~~~ 建了一个WX公众h,《汽车电子学习笔记》感兴趣可以关注一下~~~文章都会同步更新
收藏者
0
被浏览
359

2 个回答

davie67 LV

发表于 2025-4-23 03:18:04

前言:

GPT是Autosar MCAL中用于控制微控制器内部通用定时器的模块。本指南将指导您如何配置和使用GPT模块。

一、GptChannelConfigSet

首先,配置GPT通道。通道的自动生成的ID号为GptChannelId。可以通过此ID对通道进行配置和操作。具体的配置包括设置通道的初始值、中断优先级等。具体配置方法请参考相关手册或API文档。

二、GptChannelMode配置说明

GptChannelMode配置指定定时器的工作模式,包括连续模式和单次模式。在连续模式下,定时器会在达到目标时间后自动重新开始运行;在单次模式下,定时器会在达到目标时间后自动停止。具体配置方法请参考相关手册或API文档,调用GptStartTimer或GptStopTimer进行定时器的启动和停止操作。

三、GptChannelTickFrequency配置注意事项

对于定时器通道的滴答频率,Tc27x并不支持直接配置该参数。通常情况下,需要根据具体硬件平台的特性以及应用的实际需求来选择适合的滴答频率。在进行配置时,请注意查看相关的硬件手册和软件开发指南,以确保正确配置和使用GPT模块。如果遇到问题,建议查阅官方文档或联系技术支持获取帮助。通过本文档内容应该可以帮助你很好的理解和配置AUTOSAR中的MCAL GPT模块了。

aylue LV

发表于 2025-4-23 03:23:00

Autosar MCAL中的GPT模块是用于微控制器内部通用定时器的初始化和控制。对于Tc27x,GPT常与GTM中的ATOM或TOM通道关联。关于GPT的配置及使用,以下是简要说明:

一、GPT通道配置(GptChannelConfigSet)

配置GPT通道时,会自动生成一个ID(GptChannelId)。
选择通道模式(GptChannelMode)时,可以选择连续模式(GPTCHMODECONTINUOUS)或单次模式(GPTCHMODEONESHOT)。连续模式下,定时器会重复运行,除非手动停止;单次模式下,定时器在达到目标时间后自动停止。
滴答频率(GptChannelTickFrequency)定义了定时器的运行速率,单位为Hz。不过,对于Tc27x,此功能可能不支持。

二、如何使用

1. 根据需求配置GPT通道的相关参数。
2. 调用GptStartTimer启动定时器。
3. 对于单次模式,定时器达到目标时间后会自动停止,若要再次启动,需再次调用GptStartTimer。
4. 对于连续模式,定时器会不断运行,除非调用GptStopTimer来停止它。

在实际应用中,请根据具体的MCU型号和MCAL版本进行配置和使用,确保功能的正确实现。如有更多疑问或需求,建议查阅相关文档或咨询专业人士。

您需要登录后才可以回帖 登录 | 立即注册