@@ -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; | |||||
} | |||||
} | } | ||||
} | } | ||||