打印
[STM32F1]

是否是我下面程序设置的问题呢?

[复制链接]
568|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiaxw|  楼主 | 2017-9-28 22:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定时器,使用库,希望可以实现中断延时,达到毫秒级
下边这样配置后,中断的延时大概2ms多一点(测试过)
void TimDelay1(u16 Time)//使用定时器4 以中断方式延时 ms
{
  TIM_ClearITPendingBit(TIM4, TIM_IT_CC1);
  TIM_SetCompare1(TIM4, TIM4->CNT + Time);
  TIM_ITConfig(TIM4, TIM_IT_CC1,ENABLE);
}

void TimDelay2(u16 Time)//使用定时器4 以中断方式延时 ms
{
  TIM_ClearITPendingBit(TIM4, TIM_IT_CC2);
  TIM_SetCompare2(TIM4, TIM4->CNT + Time);
  TIM_ITConfig(TIM4, TIM_IT_CC2,ENABLE);
}

void TimDelay3(u16 Time)//使用定时器4 以中断方式延时 ms
{
  TIM_ClearITPendingBit(TIM4, TIM_IT_CC3);
  TIM_SetCompare3(TIM4, TIM4->CNT + Time);
  TIM_ITConfig(TIM4, TIM_IT_CC3,ENABLE);
}

void TimDelay4(u16 Time)//使用定时器4 以中断方式延时 ms
{
  TIM_ClearITPendingBit(TIM4, TIM_IT_CC4);
  TIM_SetCompare4(TIM4, TIM4->CNT + Time);
  TIM_ITConfig(TIM4, TIM_IT_CC4,ENABLE);
}
沙发
jiajs| | 2017-9-28 22:53 | 只看该作者
你的程序,好有问题。。更新中断和比较寄存器有什么关系

使用特权

评论回复
板凳
jiaxw|  楼主 | 2017-9-28 22:54 | 只看该作者

定时器这里我刚刚接触,程序运行时间不对,所以找问题找到了这里~我也是感觉很困惑,所以贴出来 看看是哪里的问题,怎样解决

使用特权

评论回复
地板
zhenykun| | 2017-9-28 22:56 | 只看该作者
用的是更新中断,不需要TIM_IT_CC4这个东西

使用特权

评论回复
5
jiaxw|  楼主 | 2017-9-28 22:57 | 只看该作者

if (TIM_GetITStatus(TIM4, TIM_IT_CC2) != RESET)
  {
        //用户代码
        E32_TIMER0TimerBeat++;//定时器0计时心跳
        E16_ECUCommData_time++;

通过中断,每计数一次,就可以进中断一次  而这里我希望进来一次的时间是ms级

使用特权

评论回复
6
jlyuan| | 2017-9-28 22:58 | 只看该作者

然后呢?你是怎么应对这个的呢

使用特权

评论回复
7
jiaxw|  楼主 | 2017-9-28 22:59 | 只看该作者

理想是:通过TIM_IT_CC4 这个库函数来实现捕获和与中断源比较,我的时间计数

使用特权

评论回复
8
wyjie| | 2017-9-28 23:00 | 只看该作者

感觉到,这个库函数有些。。。

使用特权

评论回复
9
jiaxw|  楼主 | 2017-9-28 23:01 | 只看该作者

能给个实际的方案什么的嘛?比如不用这个,我要用哪一个才能实现功能呢?

使用特权

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

本版积分规则

825

主题

9762

帖子

4

粉丝