This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TM4C129 32/64位定时器分频



void Initial_Timer3(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_WTIMER1);
TimerConfigure(WTIMER1_BASE,TIMER_CFG_A_PERIODIC_UP);
TimerPrescaleSet(WTIMER1_BASE,TIMER_A,50);
TimerLoadSet(WTIMER1_BASE,TIMER_A,0xffffffff);
TimerEnable(WTIMER1_BASE, TIMER_A);
}

系统时钟频率为50Mhz,想对32/64定时器实现分频,全周期计时,定时器每加一时长为1us,但程序执行时总会在执行到TimerConfigure(WTIMER1_BASE,TIMER_CFG_A_PERIODIC_UP);时跳到HardFault_Handler硬件错误中断里面去,这是为什么?

  • 不应该呀,你追踪看看是哪个寄存器导致的进入了硬件中断的,另外还想问问楼主,你用的是哪个版本的库呀,用最新的库试试

        ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);
        ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1);
    
        //
        // Enable processor interrupts.
        //
        ROM_IntMasterEnable();
    
        //
        // Configure the two 32-bit periodic timers.
        //
        ROM_TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC);
        ROM_TimerConfigure(TIMER1_BASE, TIMER_CFG_PERIODIC);

    这是官方给的一段代码

  • 楼主试一下在SysCtlPeripheralEnable(SYSCTL_PERIPH_WTIMER1);这句话后面加一个短延迟:

    SysCtlDelay(5);