第二十一节:MCAL GPT实操

介绍一下主要容器

1. GptHwConfigurations (硬件基础)

  • 作用: 它是**"选设备"**。

  • 内容: 在这里定义芯片上有哪些真实的硬件定时器模块(比如 LPIT, FTM)要被驱动使用。

  • 关键任务: * 指定硬件 ID(比如 LPIT_0_CH_0)。

    • 开启硬件中断(ISR)。

    • 正如我们之前聊过的,它是最底层的配置,直接决定了你用哪块电路。

2. GptChannelConfigSet (逻辑频道设置)

  • 作用: 它是**"分配任务"**。

  • 内容: 这是你作为开发者最常打交道的地方。你在这里创建一个个"逻辑通道",并给它们起名字。

  • 关键任务:

    • 关联硬件: 把这里的一个逻辑通道(比如 MyTimer_1ms)指向 GptHwConfigurations 里的一个硬件单元。

    • 设置通知: 填写 GptNotification 函数名(闹钟响了该调哪个 C 函数)。

    • 设置模式: 决定是 One-shot (响一次)还是 Continuous(一直响)。

    • 设置 Tick 频率: 规定这个通道每秒跳动多少次(Prescaler)。

3. GptDriverConfiguration (全局开关)

  • 作用: 它是**"公司管理制度"**。

  • 内容: 这里不针对某个具体的通道,而是针对整个 GPT 驱动模块的全局属性。

  • 关键任务:

    • API 开关: 是否允许使用 Gpt_DeInitGpt_GetTimeRemaining 等功能(为了节省代码空间,不用的可以关掉)。

    • 开发错误检测: 是否开启 GptDevErrorDetect(如果代码传参错了,驱动会不会报错提示你)。

    • 运行模式: 设置驱动是在 Normal 模式下工作,还是在 Sleep 模式下省电。

添加GPT模块

GPT 硬件资源配置如图,注意每个通道的id一定不能重合

GptHwConfiguration (对象名): 这是 GPT 驱动内部定义的硬件实体配置。

Isr Enable (中断使能): 如果你勾选了(图中目前全是没勾选状态),那么这个硬件通道触发时,会进入对应的 ISR(中断服务程序)

Isr Hw Id (硬件标识): 这是最关键的一列。 你可以看到第一个对应的是 LPIT_0_CH_0(LPIT第0个模块的第0个通道)

接下来是通道具体配置

首先配置时钟

再MCU模块点击这个

配置如下

新建一个时钟参考

配制如下

现在可以在GPT那边引用配置好的时钟啦!

channl配置如下

下图这个勾取消

最后别忘了在ECUM中初始化

新建

简单来说,这里是在排**"开机启动项"**。当你的汽车 ECU 上电启动时,哪些底层驱动(MCAL 模块)需要最先被初始化,以及按照什么顺序初始化,都在这里规定。

1. 核心作用:定义初始化序列

在 AUTOSAR 架构中,硬件必须在 OS(操作系统)启动之前就准备好。EcuM_Init 会根据这个列表,依次调用各个模块的初始化函数。

图中展示了四个初始化步骤:

  • Mcu_Init: 初始化微控制器的基本功能(如内部寄存器、分频器等)。

  • Mcu_Init_AdditionalCode: 这是一个自定义步骤。看右边的 Additional Init Code 列,这里手动写了:

    1. Mcu_InitClock: 初始化时钟树。

    2. while(...): 等待 PLL(锁相环)锁定,确保时钟稳定。

    3. Mcu_DistributePllClock: 正式将时钟分发给整个芯片。

  • Port_Init: 初始化引脚配置(决定哪些针脚是 GPIO,哪些是 ADC 或通信引脚)。

  • Spi_Init: 初始化 SPI 通信模块。

2. 为什么要把 GPT 的初始化加到这里?

如果你要使用 GPT(通用定时器),你必须在这个列表里添加一个新的 Item(点击左上角的"+"号):

  • 顺序很重要: 通常 GPT 会放在 Mcu_InitPort_Init 之后。

  • 关联性: 只有在这里配置了,EcuM 模块生成的代码才会去调用 Gpt_Init。如果不加在这里,即便你在 GPT 模块里配置得再完美,程序跑起来后 GPT 硬件也不会被启动。

新建

因为这里是定时中断,所以我们还要配置中断,在OS

具体中断的名字要去代码里找,这里打开vscode

复制这个名字去vscode这个c文件夹下查询

用这个名字

所以配置如下,其中中断源查询得知是64,参考本节视频的第14分钟

genarate生成代码

打开IAR添加工程文件夹

添加MCL文件夹

添加GPT文件夹,这些是静态代码,恩智浦公司给的驱动

在source下添加配置文件,这些在gendata下的是动态代码,也就是由配置工具生成的代码

可以在option里看到gpt的头文件路径已经被包含

这是 IAR Embedded Workbench 中的 项目选项设置(Options) 界面,具体定位在 C/C++ Compiler(编译器)Preprocessor(预处理器) 配置页。

简单来说,这个界面是用来告诉编译器:"去哪里找头文件" 以及 "开启哪些全局开关"

去改vscode运行代码

1. Gpt_EnableNotification(0);
  • 字面意思:开启 0 号定时器通道的"通知"功能。

  • 深层作用 :在 AUTOSAR 架构中,Notification(通知)等同于硬件中断的回调函数

  • 必要性说明 :默认情况下,定时器计满溢出时仅仅是在硬件寄存器上置一个标志位。通过调用此函数,当定时器达到设定的计数值时,系统会自动触发并在软件层调用你在配置工具(如 DaVinci 或 EB Tresos)中关联的那个 Callback 函数

  • 常见应用:用于周期性触发特定任务,例如 LED 灯闪烁、定时触发 ADC 采样或维持系统心跳。

2. Gpt_StartTimer(0, 240000);
  • 字面意思:启动 0 号定时器,并设置计数的终点值为 240,000。

  • 参数详细解释

    • 0:代表通道 ID(Channel ID)。

    • 240000 :这是计数值(Ticks),它是一个无单位的数值,而不是直接的毫秒或微秒。

  • 时间换算逻辑 : 实际计时的时长取决于你在配置工具中为 GPT 模块设置的时钟频率(Clock Reference)

    • 计算公式:时间 = 计数值 / 频率

    • 实例计算 :假设你的 GPT 模块配置频率为 24 MHz (即每秒跳动 24,000,000 次),那么 240,000 个 Ticks 换算出来的时间正好是 0.01 秒 ,也就是 10 毫秒 (10ms)

1. 函数触发频率

根据函数名 GPT_10ms 和之前的配置,这个函数每隔 10 毫秒会被硬件定时器自动调用一次。

2. 代码逐行解析

  • Cbkcnt++; 每次进入函数,计数器 Cbkcnt 就加 1。因为每 10ms 进来一次,所以这个计数器记录了经过了多少个 10ms。

  • if( Cbkcnt >= 1000 ) 这是一个判断条件。当 Cbkcnt 达到 1000 时,意味着时间过去了: 10ms * 1000 = 10,000ms = 10 秒

  • LedState ^= 0x01; 这是一个位运算(异或)。它的作用是翻转 LED 的状态:如果原来是 0(灭),就变成 1(亮);如果原来是 1,就变成 0。

  • Dio_WriteChannel(112, LedState); 这是 AUTOSAR 的标准接口,用来控制硬件引脚。

    • 112:是 LED 连接的引脚(Channel)编号。

    • LedState:将上面翻转后的状态(亮或灭)写到引脚上。

  • Cbkcnt = 0; 清空计数器,重新开始下一轮 10 秒的计时。

3. 最终效果总结

  • 动作:LED 灯会每隔 10 秒钟改变一次状态(亮或灭)。

  • 周期:一个完整的亮灭周期是 20 秒。

相关推荐
良许Linux1 天前
汽车电子技术和汽车网络
网络·单片机·嵌入式硬件·汽车·嵌入式·制造
listhi5201 天前
基于MATLAB的汽车电动助力转向系统(EPS)转向特性分析
开发语言·matlab·汽车
正午游巳1 天前
第二十节:MCAL GPT理论
汽车·嵌入式·autosar·车载嵌入式
Luminbox紫创测控1 天前
汽车零部件的阳光模拟试验研究:技术原理、测试标准与试验特点
汽车
Hiwin13291 天前
汽车传感器装配用上银KK130高负载(100kg)模组合适吗?
汽车·hiwin·kk模组
GlobalInfo1 天前
汽车域控制模块市场增长率(CAGR)为10.4%:发展方向的启示
大数据·人工智能·汽车
NewCarRen1 天前
天玑汽车平台亮相MWC,小鹏飞行汽车和Robotaxi GXR产能爬坡,固态电池2026产业化加速
自动驾驶·汽车
汽车仪器仪表相关领域2 天前
ZRT-V 机器人减速器寿命测试系统:以长效智能,破局可靠性验证困局
功能测试·安全·机器人·汽车·压力测试·可用性测试
ws2019072 天前
迈向新纪元:AUTO TECH China 2026 广州国际汽车内外饰技术展即将启幕
科技·汽车
虚拟仿真教学研究员2 天前
基于数字孪生与 VR/AR 技术的新能源汽车实训系统架构与实践
汽车·ar·vr