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

S32K144FTM定时器中断

目录FTM定时器概念定义定时器运用常用概念S32DS添加FTM库S32DSFTM外设配置S32DS添加库冲突概念理解FTM_DRV_Init函数定义FTM_DRV_InitCounter外设函数FTM_DRV_InitCounter外设函数FTM_DRV_CounterStart外设函数INT_SYS_InstallHandler外设函数INT_SYS_InstallHandler定义INT_SYS_EnableIRQ外设函数编写对应定时器代码FTM定时器概念定义FTM是NXP芯片上MCU中内置的片上外设FTM的全称是FlexTimer然后跟其他芯片外设中的定时器一样通常用于输入捕获ICU跟输出比较OC还有生成pwm以及时间延迟、逻辑调度等功能。FTM可以选择时钟源包括输入时钟、固定频率时钟、外部时钟、FTM定时器有16位递增、递减计数器计数器可以设置自由运行或者用户设置起始值跟结束预分频系数也可以设定然后芯片内置了四路FTM资源分别是FTM0、FTM1、FTM2、FTM3 具体表格如下所示。S32K144芯片FTM实例通道FTM0CH0-CH7FTM1CH0-CH7FTM2CH0-CH7FTM3CH0-CH7定时器运用常用概念hz频率计算的是电平翻转修复的次数其默认隐藏时间是1s如果某定时器频率是1hz即代表意思是在1s时间内发生1000次电平翻转。然后FTM的定时器hz如果是375khz也就是1s中发生375000次电平翻转按照这个比例如果想要0.1s触发一种中断那么定时器需要设置37500计数值也就是定时器的十分之一的频率即可。然后如果需要1s以上的时间触发定时器中断需要使用1s触发一次内置变量在中断函数里面通过判断函数触发次数来判断时间同时判断是否调用启动内容。S32DS添加FTM库这里添加FTM库到工程中然后配置对应的外设。S32DSFTM外设配置添加对应的库到工程中具体如下所示。然后配置对应的参数具体如下所示。参数里面定时器溢出中断是必须开启的开启这个定时器在计数溢出的时候才会开启中断吗然后是时钟源、分频系数等参数然后需要设置定时器初始化值跟定时器触发中断数据值这些参数根据自己需要进行配置。S32DS添加库冲突概念理解如果你在S32DS的库中添加了其他外设库并且在两个不同的外设库中配置了同一个引脚这个时候就会发生外设库冲突因为生成的Generate_Code代码中同时使用了这两个引脚然后因为又被配置也就是发生的资源冲突这个时候会发现程序跑不起来需要将对应的库进行删除才能进行运行。这个是有看门狗外设库的生成代码具体如下所示。然后当给看门狗库删除之后再生成代码代码中该部分会被生成然后覆盖掉具体如下所示。FTM_DRV_Init函数定义该函数用于将定时器外设生成结构体配置代码初始化进芯片中函数原型如下所示。status_t FTM_DRV_Init(uint32_t instance, const ftm_user_config_t * info, ftm_state_t * state)然后再函数参数中第一个参数 instance 是选择初始化那个芯片外设然后第二个参数是将定时器配置界面配置参数生成的结构体定义进行取地址ftm_user_config_t 也就是用户配置定时器配置结构体将用户的配置初始化到instance选择的芯片外设中然后state结构体中定义了大量的定时器外设状态成员属性。在运行的过程中state的成员属性会实时进行更新同时如果需要查询定时器频率或者中断等状态可以通过state的这个结构体边量来进行查询。FTM_DRV_InitCounter外设函数这个函数用来开启定时器计数模式这个函数只用来配置定时器的定时模式舍弃了定时器的pwm ICU等功能。FTM_DRV_InitCounter外设函数这个函数中两个参数其中instance是对应的系统硬件编号然后ftm_timer_param_t这个结构体是对应的系统配置中生成的硬件结构体参数。status_t FTM_DRV_InitCounter(uint32_t instance, const ftm_timer_param_t * timer) #define INST_FLEXTIMER_MC1 0U /* Timer mode configuration for flexTimer_mc1 */ ftm_timer_param_t flexTimer_mc1_TimerConfig { FTM_MODE_UP_TIMER, /* Counter mode */ 0U, /* Initial counter value */ 37500U, /* Final counter value */ };然后将这些系统初始化配置初始化对应的定时器定时模式中进去。FTM_DRV_CounterStart外设函数开启定时器计数模式函数在完成配置定时器计数模式的函数初始化之后需要调用这个函数来开启计数模式具体函数原型如下所示。status_t FTM_DRV_CounterStart(uint32_t instance)这里需要注意的是该函数顺序必须在函数定时器模式配置之后在调用这个函数。INT_SYS_InstallHandler外设函数首先这个函数中INT是中断的缩写然后SYS是系统的意思Intasll是安装的意思然后Handler是第一个意思也就是处理程序的意思除此之外handler还有一个意思在程序中也经常使用也就是句柄的意思这意思通常指的是程序资源或者对象标识符通常一个函数返回值也能够称为句柄进行使用。INT_SYS_InstallHandler定义首先这个函数是S32DS中的中断注册函数这个函数能够修改中断向量表将自己定义的函数newHandler绑定到系统的硬件资源上去具体函数原型如下所示。void INT_SYS_InstallHandler(IRQn_Type irqNumber, const isr_t newHandler, isr_t* const oldHandler)其中irqNunber是对应的硬件外设中断然后newhandler是新的处理函数oldhandler是旧的程序如果没有这里通过(isr_t * )0也就是空指针来进行处理。同时在初始化完成之后系统就会调用自己定义的中断处理函数来相应对应的中断事件发生了。INT_SYS_EnableIRQ外设函数在完成中断外设的初始化配置之后还有进行Enable来进行使能使能的目的是开启NVIC中断嵌套向量控制器 的中断编号如果不开启当外设硬件中断响应之后NVIC因为没有开启中断通道依然会被屏蔽掉。void INT_SYS_EnableIRQ(IRQn_Type irqNumber)编写对应定时器代码/* ################################################################### ** Filename : main.c ** Processor : S32K1xx ** Abstract : CAN例程 发送接收CAN报文 ** Main module. ** This module contains users application code. ** Settings : ** Contents : ** No public methods ** ** ###################################################################*/ /*! ** file main.c ** version 01.00 ** brief ** Main module. ** This module contains users application code. */ /*! ** addtogroup main_module main module documentation ** { */ /* MODULE main */ /* Including necessary module. Cpu.h contains other modules needed for compiling.*/ #include Cpu.h #include delay.h //#include key.h volatile int exit_code 0; volatile int Flag 0U; void ftmisr(void) { Flag; if(Flag 10U) { PINS_DRV_TogglePins(PTD,(10)|(11)); Flag 0; } PINS_DRV_TogglePins(PTD,(115)|(116)); FTM_DRV_ClearStatusFlags(INST_FLEXTIMER_MC1,FTM_TIME_OVER_FLOW_FLAG); } /*! \brief The main function for the project. \details The startup initialization sequence is the following: * - startup asm routine * - main() */ int main(void) { /* Write your local variable definition here */ //记得初始化变量 ftm_state_t ftm_state; /*** Processor Expert internal initialization. DONT REMOVE THIS CODE!!! ***/ #ifdef PEX_RTOS_INIT PEX_RTOS_INIT(); /* Initialization of the selected RTOS. Macro is defined by the RTOS component. */ #endif /*** End of Processor Expert internal initialization. ***/ /* Write your code here */ /* For example: for(;;) { } */ //时钟初始化 CLOCK_SYS_Init(g_clockManConfigsArr, CLOCK_MANAGER_CONFIG_CNT,g_clockManCallbacksArr, CLOCK_MANAGER_CALLBACK_CNT); CLOCK_SYS_UpdateConfiguration(0U, CLOCK_MANAGER_POLICY_AGREEMENT);//更新时钟 delay_init(); PINS_DRV_Init(NUM_OF_CONFIGURED_PINS, g_pin_mux_InitConfigArr); //初始化IO FTM_DRV_Init(INST_FLEXTIMER_MC1, flexTimer_mc1_InitConfig,ftm_state); INT_SYS_InstallHandler(FTM0_Ovf_Reload_IRQn,ftmisr,(isr_t*)0); INT_SYS_EnableIRQ(FTM0_Ovf_Reload_IRQn); FTM_DRV_InitCounter(INST_FLEXTIMER_MC1, flexTimer_mc1_TimerConfig); FTM_DRV_CounterStart(INST_FLEXTIMER_MC1); while(1) { } /*** Dont write any code pass this line, or it will be deleted during code generation. ***/ /*** RTOS startup code. Macro PEX_RTOS_START is defined by the RTOS component. DONT MODIFY THIS CODE!!! ***/ #ifdef PEX_RTOS_START PEX_RTOS_START(); /* Startup of the selected RTOS. Macro is defined by the RTOS component. */ #endif /*** End of RTOS startup code. ***/ /*** Processor Expert end of main routine. DONT MODIFY THIS CODE!!! ***/ for(;;) { if(exit_code ! 0) { break; } } return exit_code; /*** Processor Expert end of main routine. DONT WRITE CODE BELOW!!! ***/ } /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/ /* END main */ /*! ** } */ /* ** ################################################################### ** ** This file was created by Processor Expert 10.1 [05.21] ** for the NXP S32K series of microcontrollers. ** ** ################################################################### */

相关文章:

S32K144FTM定时器中断

目录 FTM定时器概念定义 定时器运用常用概念 S32DS添加FTM库 S32DSFTM外设配置 S32DS添加库冲突概念理解 FTM_DRV_Init函数定义 FTM_DRV_InitCounter外设函数 FTM_DRV_InitCounter外设函数 FTM_DRV_CounterStart外设函数 INT_SYS_InstallHandler外设函数 INT_SYS_Ins…...

CentOS服务器上VNC连接总出问题?这份保姆级排错手册(含端口混乱、服务重启、密码修改)

CentOS服务器VNC连接全流程排错指南:从端口混乱到服务恢复当你正埋头调试一个关键的仿真任务,突然VNC连接断开,所有工作界面瞬间消失——这种场景对使用CentOS服务器的工程师和科研人员来说绝不陌生。VNC作为远程桌面的生命线,一旦…...

2026年了,还在为电力负荷预测发愁?基于XGBoost的多变量单步预测全栈实战!

大家好,我是你们的技术伙伴。👋在2026年的今天,随着“双碳”目标的推进,智能电网和能源互联网成为了技术的热点。而这一切的基础,就是精准的电力负荷预测。很多初学者觉得负荷预测很难,觉得需要复杂的深度学…...

012-java精品项目-淘客系统源码(安卓+IOS+php后端)

本文介绍了一个完整的淘宝客App开发项目,包含Android端、iOS端、后端服务和数据库系统。项目提供了详细的接口文档(淘宝客App接口文档.doc)和客户申请资料(淘宝客客户需要申请资料.doc),并包含完整的淘宝客…...

Graph Fusion:一张 512 节点的图怎么压到 120 个以内

Operator Fusion 解决单点算子合并,Graph Fusion 在更大范围做整图级别的融合。GE 图引擎收到 ATC 编译好的图后,不是直接拿去执行——它先跑一遍图优化流水线,常量折叠、算子替换、模式匹配、Buffer 复用,把几百个节点的"散…...

用labview制作的上位机界面的多语言显示

在工控系统中,特别是有国外项目的时候,多语言显示必不可少。labview的控件的显示项里,有一个“标题”项,用标题就可以实现多语言显示,因为在labview中,标签是唯一的,而标题是可以重复的。首先&a…...

AArch64缓存架构解析与性能优化实践

1. AArch64缓存架构基础解析AArch64架构作为ARMv8指令集的64位执行状态,其缓存系统设计体现了现代处理器架构的典型特征。缓存作为CPU与主存之间的高速缓冲存储器,通过存储频繁访问的数据和指令来减少内存访问延迟。在AArch64中,缓存被组织为…...

量子通信技术突破:量子处理器如何提升经典通信容量

1. 量子通信技术的新范式:量子处理器辅助经典通信在传统通信领域,香农极限长期被视为不可逾越的理论边界。然而,量子计算技术的快速发展正在颠覆这一认知。我们团队最新研究发现,通过量子处理器辅助的经典通信系统,可以…...

Agent Harness 系列:为什么你的 Agent 演示很顺、上线就崩?

导读: 同样的模型,换一套外围基础设施,排名从第 30 开外直接冲到第 5——没有改动任何模型权重,没有换更贵的 API。这不是玄学,这是 Agent Harness 的威力。本文是三篇系列的第一篇,从"为什么需要 Har…...

打印机:解决windows打印任务卡死或者打印纸张喷墨不清晰的问题

问题概述买了一台型号较老的HP喷墨打印机,不知道是驱动问题还是打印机有问题,Windows在打印时老出现任务卡死或打印质量不佳(如喷墨不清晰)的问题。解决windows打印任务卡死试过很多种解决方案,大多都是浪费时间&#…...

别急着重装系统!记一次 Ubuntu 22.04 上 gcc 与 cpp 版本依赖冲突的排查与修复实录

从依赖地狱到编译自由:Ubuntu 22.04下gcc与cpp版本冲突的深度修复指南那天下午,当我正准备为新的C项目搭建开发环境时,终端里那行刺眼的红色错误提示让我的咖啡瞬间不香了。作为一个自诩"Linux老司机"的开发者,我没想到…...

统信UOS 20.1060专业版美化全攻略:从桌面到开机GRUB,一张图搞定所有壁纸

统信UOS 20.1060专业版视觉定制指南:全系统美学统一方案当你第一次启动全新安装的统信UOS专业版时,那个默认的蓝色渐变桌面或许会让你感到一丝失望——它专业、稳重,但缺乏个性。作为一名追求效率与美感并存的技术爱好者,我一直在…...

从“画箭头”到1亿播放量:机械工程师梁乐平,如何用CAD绘图书写知识传播新篇章?

一、绘图的开始和许多人一样,梁乐平选择了机械类专业,从广东理工学院毕业后,一头扎进了机械设计与绘图的世界。与别人不同的是,他给自己取了一个颇有传统文人气息的字“金泓”。这个细节,隐约透露着他性格中那份既务实…...

CompressO:重新定义本地视频压缩的三大创新维度

CompressO:重新定义本地视频压缩的三大创新维度 【免费下载链接】compressO Convert any video/image into a tiny size. 100% free & open-source. Available for Mac, Windows & Linux. 项目地址: https://gitcode.com/gh_mirrors/co/compressO 当…...

AI Native 公司构建指南:从 Anthropic 创始人手册到工程实践

【摘要】系统解析 AI Native 公司的本质特征与技术架构,基于 Anthropic 2026 年《创始人行动手册》核心框架,结合 31 家精益 AI 团队的真实案例,提供从想法验证到规模化增长的完整工程落地路径,帮助技术创业者避开 AI 时代特有的创…...

拆解:我们为宁步建设做南京办公室装修GEO的完整步骤与底层思考

很多南京工装老板现在都有一个共同困惑:网站有、文章发、排名有,就是没有精准咨询。本质原因很简单:传统SEO只“做排名”,而现在的AI搜索GEO是“做答案”。用户现在搜【南京1000平办公室装修】【南京产业园工装公司】,…...

17.通杀安卓 /iOS 全机型!Linux 原生刷机方案,EDL 底层救砖 + 自动化源码开源

摘要 本文面向具备基础Linux命令行操作能力的开发者与维修工程师,系统阐述主流品牌Android与iOS设备刷机维修的底层原理与可落地方案。覆盖华为、小米、OPPO、vivo、一加及苹果设备,提供从Bootloader解锁、Recovery刷写、固件烧录到基带修复的完整技术栈。所有操作均基于USB…...

ARM SME架构向量点积指令SVDOT与UDOT深度解析

1. ARM SME架构中的向量点积指令解析在ARMv9架构引入的SME(Scalable Matrix Extension)扩展中,向量点积运算作为核心计算单元获得了显著增强。我最近在优化一个图像卷积算法时,深入研究了SVDOT和UDOT这两条指令的实际表现。与传统…...

AI与精益创业结合驱动产品创新的方法论

1. 人工智能与精益创业方法如何驱动产品创新在当今快速变化的商业环境中,初创企业面临着前所未有的竞争压力。传统产品开发模式往往需要数月甚至数年的周期,投入大量资源后才发现市场并不买账。这种"闭门造车"的方式在数字化时代显得越来越力不…...

Keil RTX5迁移调试问题与RTOS组件使用指南

1. 问题背景与现象分析最近在将项目从CMSIS-RTOS v1(Keil RTX v4.x)迁移到CMSIS-RTOS v2(Keil RTX v5.x)时,发现Vision调试器中的System and Thread Viewer窗口在调试会话中显示空白。这个现象让习惯了通过图形化界面监…...

量子计算误差缓解技术:从原理到实践

1. 量子计算误差缓解技术概述量子计算正从实验室走向实际应用,但噪声问题始终是制约其发展的关键瓶颈。在NISQ(噪声中等规模量子)时代,量子比特数量虽已突破百位大关,但错误率仍居高不下。误差缓解技术(Err…...

兆赫兹X射线光子相关光谱技术原理与应用

1. 兆赫兹X射线光子相关光谱技术概述X射线光子相关光谱(XPCS)作为研究软物质动态特性的重要工具,其核心原理是通过分析相干X射线散射形成的散斑图样随时间的变化来揭示纳米尺度的动力学过程。这项技术的独特之处在于能够探测传统光学方法难以…...

CAXA 引出说明

位置同 CAD 里引线。效果示例设置样式默认样式,GB_引出说明(1984)Tip:如果引线样式需求是和标注样式一致,就使用“标注” 这一个样式就可以了。场景例如,标注比例是 1:4;但有个地方需要用文字引…...

CAXA 查找替换

位置和打开命令属性查找字符输入要查找的文字,例如 “手机”;替换字符输入要替换的文字,例如 “电脑”;搜索范围【默认】整幅图纸。拾取范围1、单击上图 ”拾取范围“ 按钮;提示:2、框选一段范围&#xff1…...

https://pypi.tuna.tsinghua.edu.cn/simple/

清华镜像源 https://pypi.tuna.tsinghua.edu.cn/simple/...

计算机工程投稿经历(2026年5月份录用)

本篇文章记录自己的投稿经历然后一些投稿心得。相信大家完成自己初稿的时候都不知道如何去选择期刊,我也是一样。根据自己的稿件研究方向可以快速筛选期刊,最好的方法就是在知网搜索与自己稿件相关主题相关的文章,本人研究方向是深深度学习方…...

随记-关于当下大学生就业现状的个人感想

近来身边不少人都在讨论,如今不少大学生毕业后选择返乡务工,或是回到家乡工厂就业。前两天和家人通话,也听闻不少人毕业后,最终回乡进厂务工、帮衬家里。昨天大学老师也发来消息,和我聊起当下本科毕业生就业压力大、求…...

002-AI客服-RAG优化分析

文章目录前言项目结构概览与实现状态总结当前状态📊 项目概况🏗️ 技术架构✅ 已实现功能⚠️ 有待修复的问题📝 下一步规划📊 当前 RAG 现状🧭 RAG 优化全景图🥇 强烈推荐的 5 个优化(按性价比…...

差分隐私生成模型实战:从理论保障到隐私攻击与审计评估

1. 项目概述与核心挑战在医疗健康、社会科学研究以及政府统计等领域,处理包含个人敏感信息的表格数据是一项常态。这些数据是宝贵的研究资源,但其使用受到严格的隐私法规(如GDPR、HIPAA等)的约束。传统的数据脱敏或匿名化方法&…...

麒麟服务器等保三级配置实战:从SSH双因子到kysec策略落地

1. 这不是“打补丁”,而是给服务器穿防弹衣:麒麟等保配置的真实定位很多人第一次接触“国产麒麟服务器等保配置”,第一反应是:“不就是改几个密码、关几个端口、装个杀毒软件?”——这种理解,轻则导致测评反…...