[求助] MEGA32A4U TCD0定时器问题

xiangyuansu   2016-6-7 09:31 楼主
定时器初始化,在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)

程序结构不对,你的编译环境是什么? mian:?-----------main{}
点赞  2016-6-7 13:23
引用: jzj0228 发表于 2016-6-7 13:23
程序结构不对,你的编译环境是什么? mian:?-----------main{}

main函数只是个大意。
点赞  2016-6-7 14:00
你都没有初始化,哪来的中断
点赞  2016-6-11 13:12
引用: jzj0228 发表于 2016-6-11 13:12
你都没有初始化,哪来的中断

已经解决,是串口发送函数问题
点赞  2016-6-16 17:44
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复