Parcourir la source

解决了绝对模式下脉冲计数不正确的问题。

Next:实现脉冲EXT信号的跳转。
master
Chiri il y a 1 mois
Parent
révision
1a88622674
7 fichiers modifiés avec 655 ajouts et 652 suppressions
  1. +6
    -1
      Core/Src/main.c
  2. +1
    -1
      Core/Src/stm32f4xx_it.c
  3. +626
    -626
      EWARM/PLSR.dep
  4. +10
    -9
      EWARM/settings/PLSR.dbgdt
  5. +3
    -2
      EWARM/settings/PLSR.dnx
  6. +4
    -4
      EWARM/settings/Project.wsdt
  7. +5
    -9
      Hardware/PLSR.c

+ 6
- 1
Core/Src/main.c Voir le fichier

@@ -446,9 +446,12 @@ void PulseGetCount(void *p_arg)
}

/**
* @brief 任务4,EXT
* @brief 任务5,EXT
* @return 无
*/

/* 最新思路:不采用进入中断的方式,直接停止现在进行的定时器(10【产生脉冲】)
重新设置定时器2【脉冲计数】的CNT和ARR为下一个脉冲的(段切换) */
void EXTSet(void *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)
{
X4_Sta = 1;
while(HAL_GPIO_ReadPin(GPIOB, X4_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)
{
X5_Sta = 1;
while(HAL_GPIO_ReadPin(GPIOG, X5_Pin) == GPIO_PIN_SET);
}
}
if(X4_Sta == 1 && Options.EXT == 0)


+ 1
- 1
Core/Src/stm32f4xx_it.c Voir le fichier

@@ -307,7 +307,7 @@ void TIM2_IRQHandler(void)
{
PulseCount = 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 */


+ 626
- 626
EWARM/PLSR.dep
Fichier diff supprimé car celui-ci est trop grand
Voir le fichier


+ 10
- 9
EWARM/settings/PLSR.dbgdt
Fichier diff supprimé car celui-ci est trop grand
Voir le fichier


+ 3
- 2
EWARM/settings/PLSR.dnx Voir le fichier

@@ -20,7 +20,7 @@
<LeaveTargetRunning>_ 0</LeaveTargetRunning>
</StLinkDriver>
<DebugChecksum>
<Checksum>1642237281</Checksum>
<Checksum>1211547681</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\stm32f4xx_it.c}.226.2" 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>


+ 4
- 4
EWARM/settings/Project.wsdt
Fichier diff supprimé car celui-ci est trop grand
Voir le fichier


+ 5
- 9
Hardware/PLSR.c Voir le fichier

@@ -49,15 +49,7 @@ void SetFrequency(uint8_t SentPost, uint32_t Frequency)
*/
void PulseStart(void)
{
if (PulseOutput[NowPulse].PulseCount >= 0)
{
TIM2->ARR = PulseOutput[NowPulse].PulseCount;
}
else
{
TIM2->ARR = - PulseOutput[NowPulse].PulseCount;
}
SetNextPulse();
switch(Options.SentPost)
{
case 0: HAL_TIM_PWM_Start(&htim10, TIM_CHANNEL_1); break;
@@ -134,6 +126,10 @@ void SetNextPulse(void)
{
TIM2->ARR = - temp;
}
if (Options.StartPulse == NowPulse)
{
TIM2->ARR = PulseOutput[NowPulse].PulseCount;
}
}
}



Chargement…
Annuler
Enregistrer