yyjz 发表于 2015-6-11 17:34:58

关于stm32l151 tim4 中断问题

{
    TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4 , ENABLE);      /* 开启定时器 */
    TIM_DeInit(TIM4);
    //定时时间=((1+TIM_Prescaler )/72M)*(1+TIM_Period )
    TIM_TimeBaseStructure.TIM_Period=(32-1);                   /* 自动重装载寄存器周期的值(计数值) */
    /* 累计 TIM_Period个频率后产生一个更新或者中断 */
    TIM_TimeBaseStructure.TIM_Prescaler= (1);                  /* 时钟预分频数 72M/72 */
    TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;      /* 采样分频 */
    TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;/* 向上计数模式 */
    TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
    TIM_ClearFlag(TIM4, TIM_FLAG_Update);                      /* 清除溢出中断标志 */
    TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE);                   /* 使能中断 */
    TIM_Cmd(TIM4, ENABLE);                                     /* 开启时钟 */

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4 , DISABLE);   /*先关闭等待使用*/   
}

求助此为tim4的程序配置,当TIM_TimeBaseStructure.TIM_Prescaler 配置为 2 的时候 就会不出中断
中断 是在 程序需要的时候 才会去 打开 tim4 使能

denvice 发表于 2015-6-11 20:40:50

看着Ok,你比较一下TIM_TimeBaseStructure.TIM_Prescaler值不同时的差异

yyjz 发表于 2015-6-12 08:01:53

denvice 发表于 2015-6-11 20:40
看着Ok,你比较一下TIM_TimeBaseStructure.TIM_Prescaler值不同时的差异

您好,谢谢您的关注
是这样TIM_TimeBaseStructure.TIM_Prescaler =1 的时候 我程序正常运行
但是TIM_TimeBaseStructure.TIM_Prescaler = 2 的时候 程序就会跑不出tim4的中断函数

只修改这个值程序其他地方是不会动到的

为什么是EEFOCUS小白 发表于 2015-6-12 10:42:34

哪个是预分频吧

yyjz 发表于 2015-6-12 10:43:44

为什么是EEFOCUS小白 发表于 2015-6-12 10:42
哪个是预分频吧

是的,修改一下就会不出 中断 很奇怪

为什么是EEFOCUS小白 发表于 2015-6-12 10:56:52

debug下看停在什么地方

yyjz 发表于 2015-6-17 09:51:10

为什么是EEFOCUS小白 发表于 2015-6-12 10:56
debug下看停在什么地方

就是停在 tim4 跳出的 地方

yyjz 发表于 2015-6-17 09:56:35

为什么是EEFOCUS小白 发表于 2015-6-12 10:56
debug下看停在什么地方

就是停在 tim4 跳出的 地方
页: [1]
查看完整版本: 关于stm32l151 tim4 中断问题