野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11961|回复: 1

求助 定时器溢出中断问题问题

[复制链接]
发表于 2019-4-21 14:30:17 | 显示全部楼层 |阅读模式
求助 使用定时器计数时 为啥我初始化定时器 使能了溢出中断后,板子复位后会立即进入溢出中断函数[mw_shl_code=c,true]static void TIM_Mode_Config(void)
{
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
       
        // 开启TIMx_CLK,x[1,8]
    RCC_APB2PeriphClockCmd(ADVANCE_TIM_CLK, ENABLE);
       
        //初始化高级定时器寄存器的值
        TIM_DeInit(ADVANCE_TIM);
       
    /* 累计 TIM_Period个后产生一个更新或者中断*/               
    //当定时器从0计数到1023,即为1024次,为一个定时周期
    TIM_TimeBaseStructure.TIM_Period = 50000-1;
       
        // 高级控制定时器时钟源TIMxCLK = HCLK=180MHz
        // 设定定时器频率为=TIMxCLK/(TIM_Prescaler+1)=100000Hz  //计数一次用1/100000 S
    TIM_TimeBaseStructure.TIM_Prescaler = 18000-1;
       
    // 采样时钟分频
    TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
       
    // 计数方式
    TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
       
    // 重复计数器  
    TIM_TimeBaseStructure.TIM_RepetitionCounter=0;       
       
        // 初始化定时器TIMx, x[1,8]
        TIM_TimeBaseInit(ADVANCE_TIM, &TIM_TimeBaseStructure);
       
         TIM_SelectSlaveMode(ADVANCE_TIM, TIM_SlaveMode_Reset);
  TIM_SelectMasterSlaveMode(ADVANCE_TIM,TIM_MasterSlaveMode_Enable);
        //使能定时器溢出中断请求
        TIM_ITConfig(ADVANCE_TIM, TIM_IT_Update, ENABLE);       
        TIM_ClearITPendingBit( ADVANCE_TIM,  TIM_IT_Update);
}

static void TIMx_NVIC_Configuration(void)
{
    NVIC_InitTypeDef NVIC_InitStructure;
    // 设置中断组为0
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);               
        // 设置中断来源
    NVIC_InitStructure.NVIC_IRQChannel = TIM8_UP_TIM13_IRQn;        
    // 设置抢占优先级
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;         
        // 设置子优先级
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;       
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);       
        // 使能定时器
        TIM_Cmd(ADVANCE_TIM, ENABLE);
}
void TIM8_UP_TIM13_IRQHandler(void)
{
        printf( " 计数值:%d \n", ADVANCE_TIM->CNT );
        LED2_OFF;
        Delay(0xfffff);
        TIM_ClearITPendingBit( ADVANCE_TIM,  TIM_IT_Update);
}[/mw_shl_code]

当我初始化定时器的时候改变定时器计数值为1 烧程序进去后 串口会打印计数值为1 说明一复位就会进入溢出中断 这是为什么呢?不是计数到49999才会溢出吗?
回复

使用道具 举报

 楼主| 发表于 2019-4-21 14:38:32 | 显示全部楼层
E:\Pictures\L9KXR74TQH7ZJ2JDO4R$5M6.png
串口打印的信息
L9KXR74TQH7ZJ2JDO4R$5M6.png
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-27 17:37 , Processed in 0.049879 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表