打印

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

[复制链接]
1966|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 | 只看该作者
顶一个个!

使用特权

评论回复
5
wujun23941105|  楼主 | 2013-7-9 22:47 | 只看该作者
hkcj 发表于 2013-7-9 18:43
晶振的设置有问题   你仔细看看先    楼主   顶一个

查了资料,是不是ucos的时间抖动问题?

使用特权

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

本版积分规则

6

主题

22

帖子

0

粉丝