S32K144学习笔记3 - 定时器

本文介绍了如何在嵌入式系统中使用FTM定时器进行周期性任务设置,包括添加定时器组件、修改配置、计算定时器周期公式,并提供了具体的10ms中断服务例程。通过48MHz系统时钟和分频计算,实现了100ms的定时功能。同时,展示了定时器初始化和中断处理的代码实现。
摘要由CSDN通过智能技术生成

1、添加定时器组件

在这里插入图片描述

2、修改定时器配置

在这里插入图片描述

3、定时器计算公式

在这里插入图片描述
FTM周期计算公式:重装载值 / (主频/分频) 单位秒
例如设置100ms的终端中周期:
37500(重装载值) / (48000000hz(主频)/ 128(分频)) = 1/10秒 = 100ms

注意:上述计算依据的是48M系统时钟,如果系统修改后,需要依据公式选择合适的时钟分频

4、代码

#include "Cpu.h"
#include "timer.h"
#include "led.h"
#include "uart.h"
unsigned int counter = 0;

//定时器中断
void ftmTimerISR(void)//10ms进来一次
{

	counter++;
	if(counter >= 50)
	{
		counter = 0;
		LED2_TOGGLE;
	}
	FTM_DRV_ClearStatusFlags(INST_FLEXTIMER_MC1,(uint32_t)FTM_TIME_OVER_FLOW_FLAG);//清除中断标志位
}

//定时器初始化
void TIMER_Init()
{
    ftm_state_t ftmStateStruct;//建立定时器结构体
    FTM_DRV_Init(INST_FLEXTIMER_MC1, &flexTimer_mc1_InitConfig,&ftmStateStruct);//定时器初始化
    						//参数1:中断类型;参数2:中断函数;参数3:中断函数的参数,用不到使用(isr_t*)0U
    INT_SYS_InstallHandler(FTM0_Ovf_Reload_IRQn,&ftmTimerISR,(isr_t*)0U);//定时器中断初始化
    INT_SYS_EnableIRQ(FTM0_Ovf_Reload_IRQn);//使能定时器中断

    FTM_DRV_InitCounter(INST_FLEXTIMER_MC1, &flexTimer_mc1_TimerConfig);//初始化计数器
    FTM_DRV_CounterStart(INST_FLEXTIMER_MC1);//启动计数器
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

redeemer奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值