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;
}
}