| @@ -446,9 +446,12 @@ void PulseGetCount(void *p_arg) | |||||
| } | } | ||||
| /** | /** | ||||
| * @brief 任务4,EXT | |||||
| * @brief 任务5,EXT | |||||
| * @return 无 | * @return 无 | ||||
| */ | */ | ||||
| /* 最新思路:不采用进入中断的方式,直接停止现在进行的定时器(10【产生脉冲】) | |||||
| 重新设置定时器2【脉冲计数】的CNT和ARR为下一个脉冲的(段切换) */ | |||||
| void EXTSet(void *p_arg) | void EXTSet(void *p_arg) | ||||
| { | { | ||||
| p_arg = p_arg; | p_arg = p_arg; | ||||
| @@ -463,6 +466,7 @@ void EXTSet(void *p_arg) | |||||
| if(HAL_GPIO_ReadPin(GPIOB, X4_Pin) == GPIO_PIN_SET) | if(HAL_GPIO_ReadPin(GPIOB, X4_Pin) == GPIO_PIN_SET) | ||||
| { | { | ||||
| X4_Sta = 1; | X4_Sta = 1; | ||||
| while(HAL_GPIO_ReadPin(GPIOB, X4_Pin) == GPIO_PIN_SET); | |||||
| } | } | ||||
| } | } | ||||
| if(HAL_GPIO_ReadPin(GPIOG, X5_Pin) == GPIO_PIN_SET) | if(HAL_GPIO_ReadPin(GPIOG, X5_Pin) == GPIO_PIN_SET) | ||||
| @@ -471,6 +475,7 @@ void EXTSet(void *p_arg) | |||||
| if(HAL_GPIO_ReadPin(GPIOG, X5_Pin) == GPIO_PIN_SET) | if(HAL_GPIO_ReadPin(GPIOG, X5_Pin) == GPIO_PIN_SET) | ||||
| { | { | ||||
| X5_Sta = 1; | X5_Sta = 1; | ||||
| while(HAL_GPIO_ReadPin(GPIOG, X5_Pin) == GPIO_PIN_SET); | |||||
| } | } | ||||
| } | } | ||||
| if(X4_Sta == 1 && Options.EXT == 0) | if(X4_Sta == 1 && Options.EXT == 0) | ||||
| @@ -307,7 +307,7 @@ void TIM2_IRQHandler(void) | |||||
| { | { | ||||
| PulseCount = 0; | PulseCount = 0; | ||||
| ArrFlag = 0; | ArrFlag = 0; | ||||
| HAL_TIM_PWM_Stop_IT(&htim10,TIM_CHANNEL_1); /* 停止PWM输出 */ | |||||
| HAL_TIM_PWM_Stop_IT(&htim10,TIM_CHANNEL_1); /* 停止PWM输出 */ | |||||
| } | } | ||||
| } | } | ||||
| /* USER CODE END TIM2_IRQn 1 */ | /* USER CODE END TIM2_IRQn 1 */ | ||||
| @@ -20,7 +20,7 @@ | |||||
| <LeaveTargetRunning>_ 0</LeaveTargetRunning> | <LeaveTargetRunning>_ 0</LeaveTargetRunning> | ||||
| </StLinkDriver> | </StLinkDriver> | ||||
| <DebugChecksum> | <DebugChecksum> | ||||
| <Checksum>1642237281</Checksum> | |||||
| <Checksum>1211547681</Checksum> | |||||
| </DebugChecksum> | </DebugChecksum> | ||||
| <Exceptions> | <Exceptions> | ||||
| <StopOnUncaught>_ 0</StopOnUncaught> | <StopOnUncaught>_ 0</StopOnUncaught> | ||||
| @@ -152,7 +152,8 @@ | |||||
| <mode>0</mode> | <mode>0</mode> | ||||
| </DisassembleMode> | </DisassembleMode> | ||||
| <Breakpoints2> | <Breakpoints2> | ||||
| <Count>0</Count> | |||||
| <Bp0>_ 1 "EMUL_CODE" "{$PROJ_DIR$\..\Core\Src\stm32f4xx_it.c}.226.2" 0 0 1 "" 0 "" 0</Bp0> | |||||
| <Count>1</Count> | |||||
| </Breakpoints2> | </Breakpoints2> | ||||
| <Aliases> | <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> | <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> | ||||
| @@ -49,15 +49,7 @@ void SetFrequency(uint8_t SentPost, uint32_t Frequency) | |||||
| */ | */ | ||||
| void PulseStart(void) | void PulseStart(void) | ||||
| { | { | ||||
| if (PulseOutput[NowPulse].PulseCount >= 0) | |||||
| { | |||||
| TIM2->ARR = PulseOutput[NowPulse].PulseCount; | |||||
| } | |||||
| else | |||||
| { | |||||
| TIM2->ARR = - PulseOutput[NowPulse].PulseCount; | |||||
| } | |||||
| SetNextPulse(); | |||||
| switch(Options.SentPost) | switch(Options.SentPost) | ||||
| { | { | ||||
| case 0: HAL_TIM_PWM_Start(&htim10, TIM_CHANNEL_1); break; | case 0: HAL_TIM_PWM_Start(&htim10, TIM_CHANNEL_1); break; | ||||
| @@ -134,6 +126,10 @@ void SetNextPulse(void) | |||||
| { | { | ||||
| TIM2->ARR = - temp; | TIM2->ARR = - temp; | ||||
| } | } | ||||
| if (Options.StartPulse == NowPulse) | |||||
| { | |||||
| TIM2->ARR = PulseOutput[NowPulse].PulseCount; | |||||
| } | |||||
| } | } | ||||
| } | } | ||||