Explorar o código

update:TIM偏差1个cnt

alienwalker %!s(int64=4) %!d(string=hai) anos
pai
achega
940cfa98dc
Modificáronse 3 ficheiros con 3 adicións e 3 borrados
  1. 1 1
      bsp/air105/hal/core_hwtimer.c
  2. 1 1
      bsp/air105/hal/core_tick.c
  3. 1 1
      bsp/air105/hal/core_timer.c

+ 1 - 1
bsp/air105/hal/core_hwtimer.c

@@ -239,7 +239,7 @@ START_HWTIMER:
 	TIMM0->TIM[HWTimerID].ControlReg = 0;
 	Period = HWTimer->Cmd[HWTimer->CurCount].uArg.Time;
 	Period = Period * SYS_TIMER_1US + HWTimer->Cmd[HWTimer->CurCount].Arg1;
-	TIMM0->TIM[HWTimerID].LoadCount = Period;
+	TIMM0->TIM[HWTimerID].LoadCount = Period - 1;
 	TIMM0->TIM[HWTimerID].ControlReg = TIMER_CONTROL_REG_TIMER_ENABLE|TIMER_CONTROL_REG_TIMER_MODE;
 	HWTimer->CurCount++;
 	return ;

+ 1 - 1
bsp/air105/hal/core_tick.c

@@ -76,7 +76,7 @@ void CoreTick_Init(void)
 {
 	prvPeriod = SystemCoreClock;
 	TIMM0->TIM[CORE_TICK_TIM].ControlReg = 0;
-	TIMM0->TIM[CORE_TICK_TIM].LoadCount = prvPeriod;
+	TIMM0->TIM[CORE_TICK_TIM].LoadCount = prvPeriod - 1;
 	TIMM0->TIM[CORE_TICK_TIM].ControlReg = TIMER_CONTROL_REG_TIMER_ENABLE|TIMER_CONTROL_REG_TIMER_MODE;
 	ISR_OnOff(CORE_TICK_IRQ, 0);
 	ISR_SetHandler(CORE_TICK_IRQ, SystemTickIrqHandler, NULL);

+ 1 - 1
bsp/air105/hal/core_timer.c

@@ -84,7 +84,7 @@ static void Timer_SetNextIsr(void)
 		}
 		prvTimerCtrl.NextTick = Timer->TargetTick;
 		ISR_Clear(SYS_TIMER_IRQ);
-		TIMM0->TIM[SYS_TIMER_TIM].LoadCount = (uint32_t)PassTick;
+		TIMM0->TIM[SYS_TIMER_TIM].LoadCount = (uint32_t)PassTick - 1;
 		TIMM0->TIM[SYS_TIMER_TIM].ControlReg = TIMER_CONTROL_REG_TIMER_ENABLE|TIMER_CONTROL_REG_TIMER_MODE;
 	}
 	OS_ExitCritical(Critical);