NXP S32K144 FTM 模块中断调试

简介:在客户业务中,有位客户根据业务需求需要在 S32K144 FTM 模块中产生并输出几个中断。

具体要求如下:

1.实现溢出中断;

2.实现输入捕获中断;

3.实现通过输出比较触发产生中断。

一、工作基本环境为:

  • 软件:S32 Design Studio for ARM Version 2.2

  • 硬件:NXP S32K144开发板



二、操作步骤

1. 例程导入

(1)打开S32 Design Studio,点击:“File”->“New”->“S32DS Project from Example”。

 

 

(2)在弹出的窗口选取 S32K144 目录下的 FTM_s32k144例程,点击“Finish”,然后编译并运行例程。

 

 

 

(3)示例程序如下图所示。

 

 

2. 为能使用模块中断,模块的基本配置流程如下:

(1)模块的基本初始化

(2)模块配置模式和使能中断

(3)使用对应的中断编号并实现中断函数

 

3. 对应中断的具体实现如下

(1)输出比较的中断实现

Step 1:  FTM 模块的初始化实现

 

 

直接使用 DEMO 自带的即可,这边不做修改,主函数中的调用如下:

 

 

Step 2:输出比较模式的配置和中断使能如下:

 

 

 

启动 FTM0 模块的计数

 

 

Step 3: 使能对应的中断编号并实现中断函数

 

主函数中调用函数使能该编号的中断

 

 

注释掉输出比较的 Function 并实现该中断实体程序内容

 

 

 

注意中断函数名称与中断编号的宏是一种对应的关系,中断函数名称只能按照这种方式定义

至此,关于输出比较的中断已实现。

 

(2)输入捕获的中断实现

同样关于输入捕获的中断实现参考输出比较的中断实现即可,该部分主要内容如下:

 

 

中断部分函数实现如下:

 

 

(3)计数溢出的中断实现

计数溢出部分也可使用 FTM 部分的其他模块来实现,这边使用 FTM1 作为实现的模块。

修改 FTM0_对应的初始化内容修改为 FTM1,并注释掉不需要的部分:

 

 

 

中断部分的实现如下所示:

 

 



三、总结
本文档实为了实现在 FTM模块中添加两个中断,共进行了如下操作:

1.在S32K144 FTM 模块中修改示例代码。

2.在 FTM0通道的基础上加入 FTM1 通道:

FTM1_Ovf_Reload_IRQHandler (void)

3.加入两个中断,分别为:

1)Enable_Interrupt(FTM0_Ch6_Ch7_IRQn);

2)Enable_Interrupt(FTM1_Ovf_Reload_IRQn);

4.使用 FTM0_CH6_input_capture(void)对GPIO输入边沿进行Input Capture,每个捕获事件产生一个中断。

5.使用FTM0_CH0_output_compare(void)控制GPIO输出产生脉冲,每次触发产生一个中断。

到此,三种类型的中断实现就完成了,关于更加具体的参数要求,客户可在此基础上进行开发,本次开发的 DEMO 提供链接如下:

链接:https://pan.baidu.com/s/19ZnPmB9tcbaXJFD4xyXlWQ

提取码:6knc

四、参考文档:
S32K144官方参考文档:
1、S32K144RM_Reference
2、S32K144EVB-SCH

技术文档

类型标题档案
硬件Schematics

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论

百万伏特

百万伏特

2021年9月24日
内容说明很详细