[技术问答] NUC240的定时器使用延时函数

[复制链接]
1809|5
 楼主| powerantone 发表于 2025-3-6 22:59 | 显示全部楼层 |阅读模式
各位大大安安,我在函式中使用TIMER_Delay()延时函数,就无进不去TMR0_IRQHandler()中断函式了
注解掉TIMER_Delay()延时函数又行,想问其原因,谢谢!
void TIMER0_Init(void)
{
    SYS_ResetModule(TMR0_RST);
    TIMER_Open(TIMER0,TIMER_PERIODIC_MODE,1);
    TIMER_EnableInt(TIMER0);
    NVIC_EnableIRQ(TMR0_IRQn);
    TIMER_Start(TIMER0);
}

void TMR0_IRQHandler(void)
{
    if(TIMER_GetIntFlag(TIMER0) == 1) {
        /* Clear Timer0 time-out interrupt flag */
        TIMER_ClearIntFlag(TIMER0);

        g_au32TMRINTCount[0]++;
    }
}

int main(void)
{
    /* Unlock protected registers */
    SYS_UnlockReg();

    SYS_Init();

    /* Lock protected registers */
    SYS_LockReg();

    TIMER0_Init();

    while(1)
    {
        TIMER_Delay(TIMER0,1000000);
        PB5 = ~PB5;
    }
}
复制代码
奔跑的牛 发表于 2025-3-7 10:41 | 显示全部楼层
同时使用了timer0,使用TIMER_Delay函数时把之前TIMER_Open函数里对TIMER0的配置清除了
雨下纪事 发表于 2025-7-23 14:42 | 显示全部楼层
配置 NUC240 定时器延时:设时钟分频,定初值算定时周期,开中断或查询计数,按目标延时设循环次数,注意溢出处理。
小岛西岸来信 发表于 2025-8-28 10:46 | 显示全部楼层
NUC240 定时器实现延时函数可通过配置定时器计时功能。先选择定时器模块(如 TMR0),设置工作模式为定时模式,配置时钟源与分频系数确定计数频率。
编写初始化函数:使能定时器时钟,设置预分频值、自动重载值,计算计数周期。
延时函数中,设置计数初值,启动定时器,循环等待定时器溢出标志,溢出后清除标志并停止定时器,实现精准延时。
需根据所需延时时间计算重载值,结合系统时钟频率调整参数,确保延时准确。
我趴在云边 发表于 2025-9-23 18:43 | 显示全部楼层
NUC240 定时器实现延时:配置定时器工作模式,设置预分频和计数周期,使能中断。延时函数中启动定时器,进入等待状态,定时器溢出触发中断时置标志位,函数检测到标志位后停止定时器并返回,实现精确延时
一点点晚风 发表于 2025-10-4 11:21 | 显示全部楼层
NUC240 定时器实现延时:先配置定时器工作模式(如定时模式),设置预分频值和重载值(根据系统时钟计算,如主频 72MHz,预分频 71 则计数频率 1MHz)。使能定时器,启动计数,循环查询计数溢出标志,溢出时清零标志并累加计数,达到设定延时值后关闭定时器。例:延时 1ms 可设重载值 1000,溢出一次即 1ms。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

679

主题

4005

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部