wenbo2005.online

学习记录 / 基础 TxT 篇

定时器的基本使用

基础 TxT 篇2025-05-04

MSPM0G系列一共有7个定时器,可以分为2种类型,通用计时器(TIMG)和高级控制计时器(TIMA)

通用定时器TIMG模块由16位和32位自动重新加载计数器组成,由可编程预计算器驱动,具有两个捕获/比较(CC)块,用于多个捕获/比较、PWM输出和间隔定时。TIMG还具有广泛的事件生成功能,包括计数器溢出、重加载和针对各种用例的捕获/比较操作。

高级控制定时器TIMA模块由一个16位自动重载计数器组成,由可编程预调节器驱动,最多四个捕获/比较(CC)块用于多个捕获/比较,带死区插入的PWM输出和间隔定时。TIMA具有广泛的事件生成功能,它们来自不同的计数器事件,如溢出、重载,以及来自每个捕获/比较寄存器。它还具有硬件设计来处理由内部或外部电路产生的故障信号,以指示系统中的故障。

一,图形化配置界面(定时器相关配置):

1,在TIMER选项卡中点击ADD,添加定时器外设

2,定时器基本配置:

Name(定时器自定义名称):TIMER_0

Timer Profiles(定时器模板):Custom(自定义)

Time Clock Source(定时器时钟来源):BUSCLK(32MHz)

Timer Clock Divider(分频系数):Divided by 8(32M/8 == 4M)

Timer Clock Prescaler(定时器预分频系数):100 (4000000/100 == 40K)

Timer Mode(定时器模式):Periodic Down/up Counting (向下或者向上)

Actual Timer Period (希望的定时器周期):1000ms

Start Timer(是否开启定时器):勾选

3,定时器中断设置:

Interrupts Configuration

Enable Interrupts(中断模式):Zero event (0溢出中断)

Interrupts Priority (中断优先级):Default(默认)

4,选择定时器对象

Timer Peripheral(选择的定时器):TIMG0

二,代码编写:

//清除定时器中断标志
NVIC_ClearPendingIRQ(TIMER_0_INST_INT_IRQN);
//使能定时器中断
NVIC_EnableIRQ(TIMER_0_INST_INT_IRQN);

//定时器的中断服务函数 已配置为1秒的周期
void TIMER_0_INST_IRQHandler(void)
{
    //如果产生了定时器中断
    switch( DL_TimerG_getPendingInterrupt(TIMER_0_INST) )
    {
        case DL_TIMER_IIDX_ZERO://如果是0溢出中断
            //将LED灯的状态翻转
            DL_GPIO_togglePins(LED1_PORT, LED1_PIN_22_PIN);
            break;

default://其他的定时器中断

            break;
    }
}