MEGA32A4U TCD0定时器问题

2019-03-24 20:19发布

定时器初始化,在MAIN中调用,可是只跑一次,不知问题出在哪,请大家帮看看:(外接3.64MHZ晶振)
初始化函数:
void    sub_system_tcd0_init( void )
{
    TCD0_CTRLFCLR = 0x0F;                                               // 1. 重启 TCD0
    TCD0_CTRLFSET = 0x08;                                               //
    TCD0_CTRLFCLR = 0x0F;                                               //
    asm volatile("CLI");                                                //
    TCD0_PER  = 0x1200;                                                   // 2. TOP 设置, 0x1200 针对 29.4912MHz/8 为  2ms 定时
    TCD0_CNT  = 0x1200;                                                 // 3. 计数初值 初始化
    asm volatile("SEI");                                                //
    TCD0_INTCTRLA = 0x01;                                               // 4. TCC0 溢出中断开启,优先级低
    TCD0_CTRLA = 0x04;                                                  // 5. 定时器时钟,系统时钟 8 分频
    PMIC_CTRL |= 0x01;                                                  // 6. 开启低优先级中断
}

中断函数:
ISR( TCD0_OVF_INT )
{

        /*
    if( key_scan_delay != 0 ) {                                         //
        key_scan_delay--;                                               //
    }                                                                   //
   
    if( uartc1_delay != 0 ) {                                           //
        uartc1_delay--;                                                 //
    }                                                                   //
   
    if( uartc0_send_cmd_delay != 0 ) {                                  //
        uartc0_send_cmd_delay--;                                        //
    }                                                                   //
   
    if( dau_online_delay != 0 ) {                                       //
        dau_online_delay--;                                             //
    }                                                                   //
    else {                                                              //
        asm volatile("CLI");                                            // DAU 模块在线检测
        if( dau_online_check != 0 ) {                                   //
            dau_online_check--;                                         //
        }                                                               //
        asm volatile("SEI");                                            //
    }      
        */
        ext_dau_power_flag++;                                                             //
        
}
mian:
    while( 1 ) {                                                        //

        if (5 == ext_dau_power_flag)
        {
                ext_dau_power_flag = 0;
                sub_uartc1_write_send_buff(read_dau_addr_cmd, 2);          //
        }
        
        
        
    }                                                                   //
串口打出来只有一次:
不知问题在哪里。
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
jzj0228
2019-03-25 07:09
 精彩回答 2  元偷偷看……0人看过

一周热门 更多>