安静ing 发表于 2018-5-18 11:23:49

HAL库关于定时器捕获中断的问题


我定时器设了1us分频时间

然后使能CC1中断
      __HAL_TIM_SetCompare(&Tim3Handle,TIM_CHANNEL_1, cnt_tar);            /* 设置捕获比较计数器CC1 */
      __HAL_TIM_CLEAR_IT(&Tim3Handle, TIM_IT_CC1);
      __HAL_TIM_ENABLE_IT(&Tim3Handle, TIM_IT_CC1);                        /* 使能CC1中断 */

时间到进入CC1中断
    if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) !=RESET)
    {
      __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1);
      __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1);
      s_TIM_CallBack1(1);
    }

论__HAL_TIM_SetCompare 也就是CCR1的值设多少 到中断的时间始终是1us求解是怎么回事啊

toofree 发表于 2018-5-18 12:01:50

本帖最后由 toofree 于 2018-5-18 12:03 编辑

你用的哪种捕获?不知道你想说个什么?
从你发的那一点点程序什么也看不出来,要发就发工程。
如果是类似PWM输出捕获,占空比不变的情况下,两次次捕获的间隔时间肯定是固定值。

安静ing 发表于 2018-5-18 12:26:37

toofree 发表于 2018-5-18 12:01
你用的哪种捕获?不知道你想说个什么?
从你发的那一点点程序什么也看不出来,要发就发工程。
如果是类似PW ...

定时器是一直在跑 通过设置捕获比较中断 可以实现多任务定时

toofree 发表于 2018-5-18 14:13:27

安静ing 发表于 2018-5-18 12:26
定时器是一直在跑 通过设置捕获比较中断 可以实现多任务定时

那出现固定1us就是正常现象呀。你这个就是类似PWM输出方式。打个比方,假如PWM周期是1000个时钟,CCR1设置为500,这时候当计数器在0到499的时候输出PWM输出1;当达到500时会产生中断,PWM输出转为0,直到999,之后再输出转为1。

安静ing 发表于 2018-5-19 02:00:41

toofree 发表于 2018-5-18 14:13
那出现固定1us就是正常现象呀。你这个就是类似PWM输出方式。打个比方,假如PWM周期是1000个时钟,CCR1设 ...

设比较值前我是先读取计数值在加上我的比较值给CCR 照理应该是到比较值时中断 结果只经过1个计数值就中断了
我用标准库时好好的换成HAL库就这样了

feixiang20 发表于 2018-5-19 02:02:09

被独立被配置的值,从而各自产生中断,实现不同时间间隔的定时器中断,1us正常

安静ing 发表于 2018-5-19 02:08:10

feixiang20 发表于 2018-5-19 02:02
被独立被配置的值,从而各自产生中断,实现不同时间间隔的定时器中断,1us正常 ...

经过1个计数值就中断了 也就是说 打开中断后就进中断了 怎么就正常了

安静ing 发表于 2018-5-19 02:31:42

开启CC1IE前我已经清了CC1IF 但CC1IF还是直接变为1
页: [1]
查看完整版本: HAL库关于定时器捕获中断的问题