一.syscfg配置

(1)Basic Config

1.Timer Profiles 选择Custom(自定义)

2.时钟源选择BUSCLK

3.时钟分频(Timer Clock Dvider) 设置为一分频

4.分频系数(Timer Clock Prescaler) 设置为256,软件会自动算出最小可设的周期与最大周期。

5.选择向下计数

6.Timer Mode 选为 Periodic Down Counting(周期下降计数)

7.自己设置计时周期(要满足可设的范围)

8.若勾选Start Timer,则生成的程序会自动开始计数。否则要在程序中自己开启。

(2).Interrupt Config

1.使能中断为Zero event,因为是向下计数,记到0了则触发中断

(3).可在 Timer Peripheral  处选择使用哪个定时器

二.代码

1.初始化

注意:这两个函数是为了降低单片机的功耗,使其在主函数运行中是睡眠模式,当被中断信号唤醒才去执行中断内的处理操作,执行完后又进入睡眠模式等待中断信号。

DL_SYSCTL_enableSleepOnExit();
...
...
...

    while (1) 
    {
        __WFI();
    }
int main(void)
{
    SYSCFG_DL_init();

    NVIC_EnableIRQ(TIMER_0_INST_INT_IRQN);      //使能中断
    DL_SYSCTL_enableSleepOnExit();

    DL_TimerG_startCounter(TIMER_0_INST);       //开启计数

    while (1) {
        __WFI();
    }
}

2.编写定时器中断处理函数

1.判断中断事件,这里关注Zero Event事件

//定时器中断服务函数
void TIMER_0_INST_IRQHandler(void)
{
    switch (DL_TimerG_getPendingInterrupt(TIMER_0_INST)) {
        //关注Zero Event事件
        case DL_TIMER_IIDX_ZERO:
            DL_GPIO_togglePins(GPIO_LEDS_PORT,
                GPIO_LEDS_USER_LED_1_PIN | GPIO_LEDS_USER_TEST_PIN);
            break;
        default:
            break;
    }
}

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐