当前位置: 首页 > news >正文

S32K144外设实验(五):FTM周期中断

文章目录

  • 1. 概述
    • 1.1 时钟系统
    • 1.2 实验目的
  • 2. 代码的配置

1. 概述

1.1 时钟系统

FTM的CPU接口时钟为SYS_CLK,在RUN模式下最高80MHz。模块的时钟结构如下图所示。
时钟结构
从上图中可以看出,FTM模块的功能时钟为SYS_CLK,计数器的时钟源可以来源于三条路:

  • SYS_CLK
  • 固定时钟
  • 外部时钟

此处需要注意,虽然外部时钟源的可选范围较广,但是配置工具提示,其值不可超过SYS_CLK的4分频,为了追求更高的时钟分辨率,笔者配置计数器的时钟为SYS_CLK。

1.2 实验目的

本次实验的内容比较简单,设置FTM模块的基础参数,设置MOD值,当计数器到达MOD值时则产生溢出中断,在中断中对一个静态变量计数,整个计数值到达1秒时翻转一个LED的状态。

2. 代码的配置

由于配置计数器的时钟源为SYS_CLK,那么PCC中的时钟配置则随便配置,笔者采用默认的设置,如下图:
PCC时钟
FTM的配置如下:
FTM配置
在这里设置分频值后,计数器的时钟会被配置工具自动计算并显示。计数模式使用向上计数,这里的计数模式没有其他品牌的单片机灵活,只有向上和上下计数两个模式。
计数值的计算和其他单片机差不多,都要预留一个反应的时钟周期,所以MOD值要减1。
初始化代码如下:

ftm_state_t ftmState;
//周期溢出中断初始化
void FtmMcInit(void)
{
	//初始化FTM模块参数
	FTM_DRV_Init(INST_FLEXTIMER_MC_1, &flexTimer_mc_1_InitConfig_0, &ftmState);
	//配置计数器
	FTM_DRV_InitCounter(INST_FLEXTIMER_MC_1, &flexTimer_mc_1_TimerConfig_0);
	//设置中断优先级
	INT_SYS_SetPriority(FTM0_Ovf_Reload_IRQn, 6);
	//开始计数
	FTM_DRV_CounterStart(INST_FLEXTIMER_MC_1);
}

中断服务程序仍然使用启动文件中定义好的函数名,在中断中要注意将溢出中断的标志位清除。
中断部分代码如下:

//FTM0周期溢出中断
void FTM0_Ovf_Reload_IRQHandler(void)
{
	static uint16_t i = 0;
	if (++i >= 1000)
	{
		i = 0;
		PINS_DRV_TogglePins(LED_BLUE_PORT, 1 << LED_BLUE_PIN);
	}
	//清除中断标志位
	FTM_DRV_ClearStatusFlags(INST_FLEXTIMER_MC_1, FTM_TIME_OVER_FLOW_FLAG);
}

相关文章:

  • 右击没有Word、PPT、Excel功能
  • 大模型架构记录【RAG优化】
  • 机器视觉工程师如何看机器视觉展会,有些机器视觉兄弟参加机器视觉展会,真的是参加了?重在参与?
  • Java高频面试之集合-17
  • 常见的表单元素
  • 信息学奥赛一本通 1239:统计数字(禁STL及相关调用)
  • 创建位姿和显示三维物体模型
  • Walrus 经济模型 101
  • 类与对象(中)(详解)
  • 前端框架学习路径与注意事项
  • Python技术栈与数据可视化创意实践详解(三)
  • requestAnimationFrame和requestIdleCallback分别是什么,是用在什么场景下
  • ComfyUI反推提示词工作流
  • 指针:C语言的灵魂之刃(一)
  • 全面适配iOS 18.4!通付盾加固产品全面升级,护航App安全上架
  • node-red
  • NLP 面试细碎知识点 ① Transformer模型Q、K、V参数的作用
  • CI/CD(六) helm部署ingress-nginx(阿里云)
  • Netty和Project Reactor如何共同处理大数据流?
  • pytorch构建线性回归模型
  • 法治日报:炮制师生日常剧本,校园怎么成了短视频流量秀场?
  • 四姑娘山一游客疑因高反身亡,镇卫生院:送到时已很严重
  • 江西省司法厅厅长张强已任江西省委政法委分管日常工作副书记
  • 数说母亲节|全球11亿女性进入更年期,“不是忍忍就好”
  • 外交部发言人就印巴局势升级答记者问
  • 宇树科技王兴兴:第一桶金来自上海,欢迎上海的年轻人加入