| @@ -248,7 +248,7 @@ int main(void) | |||
| NowFrequency = PulseOutput[Options.StartPulse].Frequency; | |||
| NowPulse = Options.StartPulse; | |||
| N_Acc = PulseOutput[Options.StartPulse].Frequency / 2000 * Options.AccDownTime; | |||
| N_Acc = PulseOutput[Options.StartPulse].Frequency * Options.AccDownTime / 2000; | |||
| CPU_CRITICAL_EXIT() ; ///退出临界区 | |||
| @@ -335,9 +335,6 @@ void Y1Direction(void *p_arg) | |||
| AccUp = (double)(Options.InitSpeed / Options.AccUpTime); | |||
| AccDown = - (double)(Options.InitSpeed / Options.AccDownTime); | |||
| /* 计算当前段脉冲减速的脉冲数 */ | |||
| N_Acc = PulseOutput[NowPulse].Frequency / 2000 * Options.AccDownTime; | |||
| /* 挂起指定的时钟节拍 */ | |||
| OSTimeDly(100, OS_OPT_TIME_DLY, &err); | |||
| } | |||
| @@ -460,7 +457,7 @@ void PulseGetCount(void *p_arg) | |||
| if (TIM2->CNT != 0) CNT_Only[NowPulse] = TIM2->CNT; | |||
| AllPulseCNT = CNT_Only[0] + CNT_Only[1] + CNT_Only[2] + CNT_Only[3] + | |||
| CNT_Only[4] + CNT_Only[5] + CNT_Only[6] + CNT_Only[7] + | |||
| CNT_Only[8] + CNT_Only[9]; | |||
| CNT_Only[8] + CNT_Only[9] + CNT_Only[10]; | |||
| CountSave(); | |||
| OSTimeDly(10, OS_OPT_TIME_DLY, &err); | |||
| @@ -552,7 +549,6 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) | |||
| if (ArrTimes <= (int32_t)(PulseOutput[NowPulse].Frequency - PulseOutput[PrePulse].Frequency) / AccUp) | |||
| { | |||
| SetFrequency(Options.SentPost, PulseOutput[PrePulse].Frequency + ArrTimes * AccUp); | |||
| if(ArrTimes == 0) PulseStart(); /* 开始产生脉冲 */ | |||
| ArrTimes++; | |||
| } | |||
| else | |||
| @@ -569,7 +565,7 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) | |||
| if (ArrTimes <= (int32_t)(PulseOutput[NowPulse].Frequency - PulseOutput[PrePulse].Frequency) / AccDown) | |||
| { | |||
| SetFrequency(Options.SentPost, PulseOutput[PrePulse].Frequency + ArrTimes * AccDown); | |||
| if (ArrTimes == 0) PulseStart(); /* 开始产生脉冲 */ | |||
| // if (ArrTimes == 0) PulseStart(); /* 开始产生脉冲 */ | |||
| ArrTimes++; | |||
| } | |||
| else | |||
| @@ -591,7 +587,7 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) | |||
| if (ArrTimes <= Options.AccUpTime) | |||
| { | |||
| SetFrequency(Options.SentPost, NowFrequency + ArrTimes * AccUp); | |||
| if(ArrTimes == 0) PulseStart(); /* 开始产生脉冲 */ | |||
| // if(ArrTimes == 0) PulseStart(); /* 开始产生脉冲 */ | |||
| ArrTimes++; | |||
| } | |||
| else | |||
| @@ -608,7 +604,7 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) | |||
| if (ArrTimes <= Options.AccDownTime) | |||
| { | |||
| SetFrequency(Options.SentPost, NowFrequency + ArrTimes * AccDown); | |||
| if (ArrTimes == 0) PulseStart(); /* 开始产生脉冲 */ | |||
| // if (ArrTimes == 0) PulseStart(); /* 开始产生脉冲 */ | |||
| ArrTimes++; | |||
| } | |||
| else | |||
| @@ -624,28 +620,29 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) | |||
| /* 第一段脉冲的加速 */ | |||
| if (NowPulse == Options.StartPulse && PulseStartFlag == 1) | |||
| { | |||
| if (ArrTimes < PulseOutput[NowPulse].Frequency / AccUp) | |||
| { | |||
| if (ArrTimes <= PulseOutput[Options.StartPulse].Frequency / AccUp) | |||
| { | |||
| ArrTimes++; | |||
| SetFrequency(Options.SentPost, ArrTimes * AccUp); | |||
| if (ArrTimes == 1) PulseStart(); /* 开始产生脉冲 */ | |||
| } | |||
| else | |||
| { | |||
| SetFrequency(Options.SentPost, PulseOutput[NowPulse].Frequency); | |||
| HAL_TIM_Base_Stop_IT(&htim3); // 停止定时器并禁用中断 | |||
| PulseStartFlag = 0; | |||
| ArrTimes = 0; | |||
| HAL_TIM_Base_Stop_IT(&htim3); // 停止定时器并禁用中断 | |||
| } | |||
| } | |||
| /* 最后一段脉冲的减速 */ | |||
| if (PulseRuning == 0) | |||
| if (PulseRuning == 0 && NowPulse == 10) | |||
| { | |||
| if (ArrTimes <= PulseOutput[PrePulse].Frequency / (- AccDown)) | |||
| if (ArrTimes < PulseOutput[PrePulse].Frequency / (- AccDown)) | |||
| { | |||
| SetFrequency(Options.SentPost, PulseOutput[PrePulse].Frequency + ArrTimes * AccDown); | |||
| if (ArrTimes == 0) PulseStart(); /* 开始产生脉冲 */ | |||
| // if (ArrTimes == 0) PulseStart(); /* 开始产生脉冲 */ | |||
| ArrTimes++; | |||
| } | |||
| else | |||
| @@ -221,7 +221,7 @@ void TIM2_IRQHandler(void) | |||
| __HAL_TIM_CLEAR_FLAG(&htim2, TIM_FLAG_UPDATE); | |||
| TIM2->CNT = 0; | |||
| PulseNum ++; /* 脉冲段数增加 */ | |||
| /* 计算当前段脉冲减速的脉冲数 */ | |||
| if (Options.RunMod == 0) /* 相对模式 */ | |||
| { | |||
| @@ -238,6 +238,8 @@ void TIM2_IRQHandler(void) | |||
| NowPulse = PulseOutput[NowPulse].NextPulse - 1; /* 进入下一段脉冲 */ | |||
| } | |||
| ArrFlag = 1; | |||
| N_Acc = PulseOutput[NowPulse].Frequency * Options.AccDownTime / 2000; | |||
| SetNextPulse();/* 设置下一次进入中断的脉冲数 */ | |||
| NowFrequency = PulseOutput[NowPulse].Frequency; /* 保存当前脉冲的频率 */ | |||
| HAL_TIM_Base_Start_IT(&htim3); /* 启动定时器3和中断 */ | |||
| @@ -264,7 +266,7 @@ void TIM2_IRQHandler(void) | |||
| if (TIM2->ARR < PulseOutput[PulseOutput[NowPulse].NextPulse].PulseCount) /* 如果已经达到了设定的最大脉冲数 */ | |||
| { | |||
| PulseCount = 0; | |||
| HAL_TIM_PWM_Stop_IT(&htim10,TIM_CHANNEL_1); /* 停止PWM输出 */ | |||
| HAL_TIM_PWM_Stop_IT(&htim10,TIM_CHANNEL_1); /* 停止PWM输出 */ | |||
| } | |||
| else | |||
| { | |||
| @@ -174,9 +174,9 @@ void MX_TIM11_Init(void) | |||
| /* USER CODE END TIM11_Init 1 */ | |||
| htim11.Instance = TIM11; | |||
| htim11.Init.Prescaler = 0; | |||
| htim11.Init.Prescaler = 1; | |||
| htim11.Init.CounterMode = TIM_COUNTERMODE_UP; | |||
| htim11.Init.Period = 65535; | |||
| htim11.Init.Period = 1; | |||
| htim11.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; | |||
| htim11.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; | |||
| if (HAL_TIM_Base_Init(&htim11) != HAL_OK) | |||
| @@ -215,9 +215,9 @@ void MX_TIM13_Init(void) | |||
| /* USER CODE END TIM13_Init 1 */ | |||
| htim13.Instance = TIM13; | |||
| htim13.Init.Prescaler = 0; | |||
| htim13.Init.Prescaler = 1; | |||
| htim13.Init.CounterMode = TIM_COUNTERMODE_UP; | |||
| htim13.Init.Period = 65535; | |||
| htim13.Init.Period = 1; | |||
| htim13.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; | |||
| htim13.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; | |||
| if (HAL_TIM_Base_Init(&htim13) != HAL_OK) | |||
| @@ -256,9 +256,9 @@ void MX_TIM14_Init(void) | |||
| /* USER CODE END TIM14_Init 1 */ | |||
| htim14.Instance = TIM14; | |||
| htim14.Init.Prescaler = 0; | |||
| htim14.Init.Prescaler = 1; | |||
| htim14.Init.CounterMode = TIM_COUNTERMODE_UP; | |||
| htim14.Init.Period = 65535; | |||
| htim14.Init.Period = 1; | |||
| htim14.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; | |||
| htim14.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; | |||
| if (HAL_TIM_Base_Init(&htim14) != HAL_OK) | |||
| @@ -1013,7 +1013,7 @@ | |||
| <item>AccDown</item> | |||
| <item>ArrTimes</item> | |||
| <item>temp</item> | |||
| <item></item> | |||
| <item /> | |||
| </expressions> | |||
| <col-names> | |||
| <item>Expression</item> | |||
| @@ -20,7 +20,7 @@ | |||
| <LeaveTargetRunning>_ 0</LeaveTargetRunning> | |||
| </StLinkDriver> | |||
| <DebugChecksum> | |||
| <Checksum>932074847</Checksum> | |||
| <Checksum>4029363809</Checksum> | |||
| </DebugChecksum> | |||
| <Exceptions> | |||
| <StopOnUncaught>_ 0</StopOnUncaught> | |||
| @@ -152,7 +152,8 @@ | |||
| <mode>0</mode> | |||
| </DisassembleMode> | |||
| <Breakpoints2> | |||
| <Count>0</Count> | |||
| <Bp0>_ 1 "EMUL_CODE" "{$PROJ_DIR$\..\Core\Src\main.c}.644.5" 0 0 1 "" 0 "" 0</Bp0> | |||
| <Count>1</Count> | |||
| </Breakpoints2> | |||
| <Aliases> | |||
| <A0>_ "C:\Users\Chiri\Desktop\PLSR\cmsis\uC-CPU\ARM-Cortex-M4\IAR\cpu_a.asm" "C:\Users\Chiri\Desktop\TrainCamp-Jiangyunsong-PLSR\cmsis\uC-CPU\ARM-Cortex-M4\IAR\cpu_a.asm"</A0> | |||
| @@ -18,14 +18,30 @@ | |||
| </bookmark> | |||
| <bookmark> | |||
| <path>C:\Users\Chiri\Desktop\TrainCamp-Jiangyunsong-PLSR\Core\Src\main.c</path> | |||
| <row>312</row> | |||
| <row>560</row> | |||
| </bookmark> | |||
| <bookmark> | |||
| <path>C:\Users\Chiri\Desktop\TrainCamp-Jiangyunsong-PLSR\Core\Src\main.c</path> | |||
| <row>238</row> | |||
| <row>339</row> | |||
| </bookmark> | |||
| <bookmark> | |||
| <path>C:\Users\Chiri\Desktop\TrainCamp-Jiangyunsong-PLSR\Core\Src\main.c</path> | |||
| <row>560</row> | |||
| <row>372</row> | |||
| </bookmark> | |||
| <bookmark> | |||
| <path>C:\Users\Chiri\Desktop\TrainCamp-Jiangyunsong-PLSR\Core\Src\main.c</path> | |||
| <row>433</row> | |||
| </bookmark> | |||
| <bookmark> | |||
| <path>C:\Users\Chiri\Desktop\TrainCamp-Jiangyunsong-PLSR\Core\Src\main.c</path> | |||
| <row>463</row> | |||
| </bookmark> | |||
| <bookmark> | |||
| <path>C:\Users\Chiri\Desktop\TrainCamp-Jiangyunsong-PLSR\Core\Src\main.c</path> | |||
| <row>557</row> | |||
| </bookmark> | |||
| <bookmark> | |||
| <path>C:\Users\Chiri\Desktop\TrainCamp-Jiangyunsong-PLSR\Core\Src\main.c</path> | |||
| <row>638</row> | |||
| </bookmark> | |||
| </userBookmarks> | |||