ucos任务开启定时器就不准?

[复制链接]
2469|4
 楼主| wujun23941105 发表于 2013-7-9 17:20 | 显示全部楼层 |阅读模式
void DRV_Tim3Init(void)
{
        NVIC_InitTypeDef NVIC_InitStructure;
        TIM_DeInit(TIM3);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
        TIM3->PSC =0;
        TIM3->ARR = (unsigned int)(12000/16);//定时16K//系统时钟120M
        TIM3->DIER|=1<<0;      //允许更新中断                              
        NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQChannel;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
        BSP_IntVectSet(BSP_INT_ID_TIM3, DRV_Tim3Irq);
        BSP_IntEn(BSP_INT_ID_TIM3);
       
}
void DRV_Tim3Irq(void)
{
  unsigned char data;
  static uint8 flag=0;
    if(flag)
  {
    SetRLED();
    flag=0;
  }
  else
  {
     ClrRLED();
     flag=1;
  }
  TIM3->SR&=~(1<<0);//清除中断标志位  

}

UcOs开四个任务其中一个任务是20ms执行一次,另三个挂起状态,为什么中断中红灯亮灭波形频率小于16K(大约15K) 有些大于16K,定时器会变得不准?
hkcj 发表于 2013-7-9 18:43 | 显示全部楼层
晶振的设置有问题   你仔细看看先    楼主   顶一个
 楼主| wujun23941105 发表于 2013-7-9 18:56 | 显示全部楼层
hkcj 发表于 2013-7-9 18:43
晶振的设置有问题   你仔细看看先    楼主   顶一个

系统时钟为12M。晶振没问题,如果不开任务,出来是正确的
hxb20122012 发表于 2013-7-9 20:09 | 显示全部楼层
顶一个个!
 楼主| wujun23941105 发表于 2013-7-9 22:47 | 显示全部楼层
hkcj 发表于 2013-7-9 18:43
晶振的设置有问题   你仔细看看先    楼主   顶一个

查了资料,是不是ucos的时间抖动问题?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

22

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部