->返回总目录<-
前言
PIT(Periodic Interrupt Timer),可以用来作为周期性的定时器中断,比如1ms定时器,2ms定时器之类的。本专栏并不注重讲S32K关于PIT的原理,而且直接基于配置,结合代码,能够让大家快速地配制出功能来。
Mcu
在配置定时器之前,我们要为定时器选择一个时钟
1.McuModeSettingConf
a.McuPeripheral
勾选上PIT_0,当然你也可以选择PIT_1....不同通道的功能具体参考S32K3芯片手册
2.McuClockSettingConfig
a.McuClockReferencePoint
选择一个参考时钟
为什么选择这个clock,具体要参考PeripheralClockView
以上时钟就配置好了,接下来配置time
GPT
1.ConfigTimeSupport
2.GptChannelConfigSet
Name:起一个名字,生成一个宏,后面会用到。(图片中的注释“不用管”写错了)
3.GptHwConfiguration
这里主要就是把PIT_0的ch0中断打开
4.GptConfigurationOfOptApiServices
5.GptDriverConfiguration
6.GptPredefTimerConfiguration
S32K可能不支持这类功能
CODE讲解
1.中断回调函数
在上面我们配置了一个中断回调函数,生成的代码里面并没有将它实体化。
&Gpt_PitNotification:中断触发的时候,会自动去调用这个中断回调函数。
我们需要自己将它实体化,在函数里面,我用了一个count++来计时。
2.初始化
a.Platform_Init()
初始化中断。
b.Gpt_Init()
初始化Gpt里的PIT模块
c.Gpt_StartTimer
第一个参数,就是在上面【2.GptChannelConfigSet】中起的Name,生成的宏
第二个参数:定时时间。 上面有说我们时钟选择了31.25M; 定时1ms的话就是
(1ms/1000) / (1/31.25/10^6) = 31250, 也就是计数1ms,需要计数31250个count
注:PIT是减计数,也就是从31250开始,每次减1,直到为0触发中断。 因为选择了连续模式,下面会继续从31250开始,每次减1。。。。
d.Gpt_EnableNotification
使能中断回调函数,每次中断之后就会调用中断回调函数,函数里的cnt会一直++
没加1就相当于1ms。
e.Gpt_DisableNotification
关闭中断回调函数,执行之后,中断回调函数不会再被执行。
上述PIT就讲完了。