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
1楼-- · 2019-03-25 07:09
 精彩回答 2  元偷偷看……
xiangyuansu
2楼-- · 2019-03-25 10:15
jzj0228 发表于 2016-6-7 13:23
程序结构不对,你的编译环境是什么? mian:?-----------main{}

main函数只是个大意。
jzj0228
3楼-- · 2019-03-25 15:33
你都没有初始化,哪来的中断
xiangyuansu
4楼-- · 2019-03-25 21:17
jzj0228 发表于 2016-6-11 13:12
你都没有初始化,哪来的中断

已经解决,是串口发送函数问题

一周热门 更多>