本帖最后由 mmuuss586 于 2018-2-12 16:36 编辑
控制器主程序部分:
// IWDG_Open();
main_cycle_count = SystemTimeTickGet();
while(1)
{
// TIM_SetCompare1(TIM1, (uint16_t)TIM_CCR_VALUE(pwm_on_rite)); //0%
// TIM_SetCompare1(TIM1, (1.0-pwm_on_rite)*(PWM_T-1)); //
CommuicationWork();
//每2ms处理一次采样数据
if(1 /* (PastTick(main_cycle_count) % 10 == 0) */)
{
ProtectCheckRun();
}
Motor1ParamCheckRun();
MotorControlWorking();
#if(__TEST_MAIN__)
main_run_time++;
//实测通常情况下12us一个循环周期 2016.8.13
if(main_run_time >= 10000)
{
temp_arry[ii++] = PastTick(main_cycle_count);
main_run_time = 0;
main_cycle_count = SystemTimeTickGet();
if(ii >= 100)
{
ii = 0;
}
}
#else
//每500ms喂狗
if(PastTick(main_cycle_count) >= FEED_IWDG_TIME)
{
IWDG_Feed();
main_cycle_count = SystemTimeTickGet();
LED_toggle_flag=(FlagStatus)!LED_toggle_flag;
LED_ToggleRun1(LED_toggle_flag);
#if(0)
if(pwm_on_rite < 100)
{
pwm_on_rite += 10;
TIM_SetCompare1(TIM1, (uint16_t)TIM_CCR_VALUE(pwm_on_rite));
}
if(pwm_on_rite == 100)
{
pwm_on_rite = 200;
TIM_SetCompare1(TIM1, (uint16_t)TIM_CCR_VALUE(0)); //0%
}
#endif
}
#endif
}
}
|