本文将通过在S32DS中导入官方Gpt例程并进行适配,实现开发板LED的控制,通过这个工程我们将了解开发板的Gpt模块的使用。
软件环境
- S32DS For S32 Workplace;
- S32K3 RTD AUTOSAR 4.4 SDK
硬件环境
- Knight S32K312 评估版
- J-Link Debug 烧录器
打开S32DS,点击“File” “New” “S32DS Project from Example”,选择出现的对话框中的“S32K3 RTD AUTOSAR 4.4 2.0.1 D2207 Example Projects”,在下面找到“Gpt S32K3xx Examples”,选择 “Gpt_Example_S32K312”,点击“Finish”完成项目导入。

和之前一样我们先打开项目文件夹下的“Gpt_example_DS.mex
![]()
”,进入到项目的配置页面,再次页面点击
![]()
更改芯片封装为100pin。


选择后更新源代码,外设模块会报错。

我们可以先选择熟悉的模块比如 Port 模块解决问题。打开 Port 模块后,可以看到 PortPin Mscr 是错误的,这里和之前博文提到的情况相同,是切换封装后,官方开发板的LED在Knight评估板上不对应了。这里我们改为 PTB10,即 Mscr = 42.

此时我们更新源代码,没有错误了。Port这一部分在之前博文已经介绍。接下来我们来了解下Gpt模块。在外设中点击Gpt模块查看配置。

在GPT所有配置页中选择GptChannelConfigSet,这个是主要配置Gpt参数的一页。如上图,初始为1个Gpt channel配置,Hwlp选择为PIT,即依赖的硬件模块为PIT周期中断定时器)。计数模式GptChannelMode为持续计数模式,计数频率为24000000Hz,即24MHz,这个数字是固定的,因为我们在紧接着的选择的时钟配置,Gpt的模块的始终实际为AIPS_SLOWCLK,在Mcu模块被分频成了24MHz。
同时我们也可以配置Gpt的计数完成的回调函数,起个名字为“Gpt_PitNotification”,以便于在回调函数中实现LED的闪烁。
接下来是选择Gpt的外设源,选择GptHwConfiguration选项卡,可以选择Gpt的硬件触发源,这里默认选择为PIT模块的CH0.

在下一个选项卡GptConfigurationOfOptApiServices里勾选“GptEnableDisableNotificationApi”,以生成回调函数。

选择GptDriverConfiguration选项卡,可以看到Driver层的Gpt的一些配置,重要的是下方“GptClockReferencePoint”,这里会指向Mcu模块的时钟配置。

外设中选择Mcu模块,在“McuModuleConfiguration”->“McuClocksettingConfig”->“McuClockReferencePoint”可以看到我们在Gpt模块中引用的时钟源。

回到项目代码,打开“main.c”,查看代码。可以看到相较于之前Port项目的函数,还多出三个Gpt模块的函数,依次为1初始化函数,2定时器启动函数和3回调函数初始化函数。

只有2定时器初始化函数的第二个参数,可以有我们自己来定。前面得到Gpt的ReferenceClock为24MHz,因此此处我们可以填入的最大计数值为24000000,即为1秒重装倒计时,并触发回调函数。如果我们想要实现1秒LED灯翻转,此处应修改为24000000.
While循环部分的含义几位10次LED翻转,翻转时机“toggleLED”可以在回调函数中置位。

将例程编译下载到Knight评估板后,就可以看到蓝色LED灯1秒翻转闪烁10次了。

文章来自“S32K312 开发板评测活动”测评者:阚準
欢迎在博文下方留言评论,我们会及时回复您的问题。

152

被折叠的 条评论
为什么被折叠?



