打印
[AVR单片机]

MEGA32A4U TCD0定时器问题

[复制链接]
641|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiangyuansu|  楼主 | 2016-6-7 09:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定时器初始化,在MAIN中调用,可是只跑一次,不知问题出在哪,请大家帮看看:
初始化函数:
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);          //
        }
       
       
       
    }                                                                   //
串口打出来只有一次:
不知问题在哪里。

相关帖子

沙发
joing1999| | 2016-6-8 09:56 | 只看该作者
坐等大神回复

使用特权

评论回复
板凳
SD10A| | 2016-6-8 16:32 | 只看该作者
虽然没看你定时器怎么配置的,但是你程序写法有问题,初始化你得在MAIN中体现

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝