diff --git a/app/Core/Inc/tim.h b/app/Core/Inc/tim.h
index 1507bb2..a9bca0c 100644
--- a/app/Core/Inc/tim.h
+++ b/app/Core/Inc/tim.h
@@ -44,6 +44,8 @@ extern TIM_HandleTypeDef htim6;
extern TIM_HandleTypeDef htim7;
+extern TIM_HandleTypeDef htim8;
+
/* USER CODE BEGIN Private defines */
/* USER CODE END Private defines */
@@ -54,6 +56,7 @@ void MX_TIM3_Init(void);
void MX_TIM4_Init(void);
void MX_TIM6_Init(void);
void MX_TIM7_Init(void);
+void MX_TIM8_Init(void);
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
diff --git a/app/Core/Src/main.c b/app/Core/Src/main.c
index e44360d..4934ef7 100644
--- a/app/Core/Src/main.c
+++ b/app/Core/Src/main.c
@@ -107,6 +107,7 @@ int main(void)
MX_TIM1_Init();
MX_CAN1_Init();
MX_I2C1_Init();
+ MX_TIM8_Init();
/* USER CODE BEGIN 2 */
extern int umain(int argc, char const *argv[]);
char const argv[1]={NULL};
diff --git a/app/Core/Src/tim.c b/app/Core/Src/tim.c
index 74f8dbe..0d1ab1b 100644
--- a/app/Core/Src/tim.c
+++ b/app/Core/Src/tim.c
@@ -30,6 +30,7 @@ TIM_HandleTypeDef htim3;
TIM_HandleTypeDef htim4;
TIM_HandleTypeDef htim6;
TIM_HandleTypeDef htim7;
+TIM_HandleTypeDef htim8;
/* TIM1 init function */
void MX_TIM1_Init(void)
@@ -155,7 +156,6 @@ void MX_TIM3_Init(void)
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
TIM_MasterConfigTypeDef sMasterConfig = {0};
- TIM_OC_InitTypeDef sConfigOC = {0};
/* USER CODE BEGIN TIM3_Init 1 */
@@ -175,28 +175,15 @@ void MX_TIM3_Init(void)
{
Error_Handler();
}
- if (HAL_TIM_PWM_Init(&htim3) != HAL_OK)
- {
- Error_Handler();
- }
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
{
Error_Handler();
}
- sConfigOC.OCMode = TIM_OCMODE_PWM1;
- sConfigOC.Pulse = 0;
- sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
- sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
- if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
- {
- Error_Handler();
- }
/* USER CODE BEGIN TIM3_Init 2 */
/* USER CODE END TIM3_Init 2 */
- HAL_TIM_MspPostInit(&htim3);
}
/* TIM4 init function */
@@ -309,6 +296,66 @@ void MX_TIM7_Init(void)
/* USER CODE END TIM7_Init 2 */
}
+/* TIM8 init function */
+void MX_TIM8_Init(void)
+{
+
+ /* USER CODE BEGIN TIM8_Init 0 */
+
+ /* USER CODE END TIM8_Init 0 */
+
+ TIM_MasterConfigTypeDef sMasterConfig = {0};
+ TIM_OC_InitTypeDef sConfigOC = {0};
+ TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
+
+ /* USER CODE BEGIN TIM8_Init 1 */
+
+ /* USER CODE END TIM8_Init 1 */
+ htim8.Instance = TIM8;
+ htim8.Init.Prescaler = 0;
+ htim8.Init.CounterMode = TIM_COUNTERMODE_UP;
+ htim8.Init.Period = 65535;
+ htim8.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
+ htim8.Init.RepetitionCounter = 0;
+ htim8.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
+ if (HAL_TIM_PWM_Init(&htim8) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
+ sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
+ if (HAL_TIMEx_MasterConfigSynchronization(&htim8, &sMasterConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ sConfigOC.OCMode = TIM_OCMODE_PWM1;
+ sConfigOC.Pulse = 0;
+ sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
+ sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
+ sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
+ sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
+ sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
+ if (HAL_TIM_PWM_ConfigChannel(&htim8, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
+ sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
+ sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
+ sBreakDeadTimeConfig.DeadTime = 0;
+ sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
+ sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
+ sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
+ if (HAL_TIMEx_ConfigBreakDeadTime(&htim8, &sBreakDeadTimeConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN TIM8_Init 2 */
+
+ /* USER CODE END TIM8_Init 2 */
+ HAL_TIM_MspPostInit(&htim8);
+
+}
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
{
@@ -384,6 +431,17 @@ void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* tim_pwmHandle)
/* USER CODE END TIM4_MspInit 1 */
}
+ else if(tim_pwmHandle->Instance==TIM8)
+ {
+ /* USER CODE BEGIN TIM8_MspInit 0 */
+
+ /* USER CODE END TIM8_MspInit 0 */
+ /* TIM8 clock enable */
+ __HAL_RCC_TIM8_CLK_ENABLE();
+ /* USER CODE BEGIN TIM8_MspInit 1 */
+
+ /* USER CODE END TIM8_MspInit 1 */
+ }
}
void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
{
@@ -430,27 +488,6 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
/* USER CODE END TIM2_MspPostInit 1 */
}
- else if(timHandle->Instance==TIM3)
- {
- /* USER CODE BEGIN TIM3_MspPostInit 0 */
-
- /* USER CODE END TIM3_MspPostInit 0 */
-
- __HAL_RCC_GPIOC_CLK_ENABLE();
- /**TIM3 GPIO Configuration
- PC8 ------> TIM3_CH3
- */
- GPIO_InitStruct.Pin = GPIO_PIN_8;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_PULLDOWN;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- GPIO_InitStruct.Alternate = GPIO_AF2_TIM3;
- HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
-
- /* USER CODE BEGIN TIM3_MspPostInit 1 */
-
- /* USER CODE END TIM3_MspPostInit 1 */
- }
else if(timHandle->Instance==TIM4)
{
/* USER CODE BEGIN TIM4_MspPostInit 0 */
@@ -472,6 +509,27 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
/* USER CODE END TIM4_MspPostInit 1 */
}
+ else if(timHandle->Instance==TIM8)
+ {
+ /* USER CODE BEGIN TIM8_MspPostInit 0 */
+
+ /* USER CODE END TIM8_MspPostInit 0 */
+
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ /**TIM8 GPIO Configuration
+ PC8 ------> TIM8_CH3
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_8;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF3_TIM8;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN TIM8_MspPostInit 1 */
+
+ /* USER CODE END TIM8_MspPostInit 1 */
+ }
}
@@ -549,6 +607,17 @@ void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef* tim_pwmHandle)
/* USER CODE END TIM4_MspDeInit 1 */
}
+ else if(tim_pwmHandle->Instance==TIM8)
+ {
+ /* USER CODE BEGIN TIM8_MspDeInit 0 */
+
+ /* USER CODE END TIM8_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_TIM8_CLK_DISABLE();
+ /* USER CODE BEGIN TIM8_MspDeInit 1 */
+
+ /* USER CODE END TIM8_MspDeInit 1 */
+ }
}
/* USER CODE BEGIN 1 */
diff --git a/app/MDK-ARM/app.uvguix.h_zha b/app/MDK-ARM/app.uvguix.h_zha
index 260c2e7..c916671 100644
--- a/app/MDK-ARM/app.uvguix.h_zha
+++ b/app/MDK-ARM/app.uvguix.h_zha
@@ -6,7 +6,7 @@
### uVision Project, (C) Keil Software
- D:\workspace\project_boditech_vidas_a8000\Incubator_control_system\dep\libiflytop_micro\stm32\basic
+ D:\workspace\project_boditech_vidas_a8000\Incubator_control_system\src
@@ -15,7 +15,7 @@
38003
Registers
- 160 161
+ 140 79
346
@@ -70,7 +70,7 @@
466
Source Browser
500
- 166
+ 300
@@ -93,8 +93,8 @@
2
3
- -32000
- -32000
+ -1
+ -1
-1
@@ -110,8 +110,8 @@
0
- 3412
- 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000017000000160000000100000056443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF64443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C4D444B2D41524D5C737461727475705F73746D33326634303778782E730000000015737461727475705F73746D33326634303778782E7300000000FFDC7800FFFFFFFF7D443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C69635C544D4334333631415C544D4334333631412E63000000000A544D4334333631412E6300000000BECEA100FFFFFFFF74443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C68656C706572735C4352432E6300000000054352432E6300000000F0A0A100FFFFFFFF79443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C72616D705C4C696E65617252616D70312E63000000000D4C696E65617252616D70312E6300000000BCA8E100FFFFFFFF78443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C72616D705C4C696E65617252616D702E63000000000C4C696E65617252616D702E63000000009CC1B600FFFFFFFF66443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C7372635C69635C746D6334333631412E637070000000000C746D6334333631412E63707000000000F7B88600FFFFFFFF50443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C7372635C756D61696E2E6370700000000009756D61696E2E63707000000000D9ADC200FFFFFFFF77443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C447269766572735C53544D3332463478785F48414C5F4472697665725C5372635C73746D3332663478785F68616C2E63000000000F73746D3332663478785F68616C2E6300000000A5C2D700FFFFFFFF7C443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C447269766572735C53544D3332463478785F48414C5F4472697665725C5372635C73746D3332663478785F68616C5F756172742E63000000001473746D3332663478785F68616C5F756172742E6300000000B3A6BE00FFFFFFFF66443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C7372635C69635C746D6334333631412E687070000000000C746D6334333631412E68707000000000EAD6A300FFFFFFFF5E443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C436F72655C5372635C73746D3332663478785F69742E63000000000E73746D3332663478785F69742E6300000000F6FA7D00FFFFFFFF65443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C7372635C69635C746D63323136302E637070000000000B746D63323136302E63707000000000B5E99D00FFFFFFFF7B443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C69635C544D43323136305C544D43323136302E630000000009544D43323136302E63000000005FC3CF00FFFFFFFF7B443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C447269766572735C53544D3332463478785F48414C5F4472697665725C5372635C73746D3332663478785F68616C5F7370692E63000000001373746D3332663478785F68616C5F7370692E6300000000C1838300FFFFFFFF77443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C68656C706572735C4D6163726F732E6800000000084D6163726F732E6800000000CACAD500FFFFFFFF27433A5C4B65696C5F76355C41524D5C41524D43435C696E636C7564655C66756E6374696F6E616C000000000A66756E6374696F6E616C00000000C5D4F200FFFFFFFF7D443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C62617369635C73746D33325F68616C5F7265735F6D616E616765722E637070000000001973746D33325F68616C5F7265735F6D616E616765722E63707000000000FFDC7800FFFFFFFF6B443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C62617369635C62617369632E63000000000762617369632E6300000000BECEA100FFFFFFFF7B443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C447269766572735C53544D3332463478785F48414C5F4472697665725C5372635C73746D3332663478785F68616C5F63616E2E63000000001373746D3332663478785F68616C5F63616E2E6300000000F0A0A100FFFFFFFF92443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C636F6D706F6E656E745C69666C79746F705F63616E5F736C6176655F76315C69666C79746F705F63616E5F736C6176652E637070000000001569666C79746F705F63616E5F736C6176652E63707000000000BCA8E100FFFFFFFF79443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C636F6D706F6E656E745C746D703131375C746D703131372E637070000000000A746D703131372E637070000000009CC1B600FFFFFFFF6F443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C62617369635C7A7369676E616C2E687070000000000B7A7369676E616C2E68707000000000F7B88600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000E9000000660000009006000033020000
+ 3699
+ 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000019000000180000000100000056443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF64443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C4D444B2D41524D5C737461727475705F73746D33326634303778782E730000000015737461727475705F73746D33326634303778782E7300000000FFDC7800FFFFFFFF7D443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C69635C544D4334333631415C544D4334333631412E63000000000A544D4334333631412E6300000000BECEA100FFFFFFFF74443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C68656C706572735C4352432E6300000000054352432E6300000000F0A0A100FFFFFFFF79443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C72616D705C4C696E65617252616D70312E63000000000D4C696E65617252616D70312E6300000000BCA8E100FFFFFFFF78443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C72616D705C4C696E65617252616D702E63000000000C4C696E65617252616D702E63000000009CC1B600FFFFFFFF66443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C7372635C69635C746D6334333631412E637070000000000C746D6334333631412E63707000000000F7B88600FFFFFFFF50443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C7372635C756D61696E2E6370700000000009756D61696E2E63707000000000D9ADC200FFFFFFFF77443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C447269766572735C53544D3332463478785F48414C5F4472697665725C5372635C73746D3332663478785F68616C2E63000000000F73746D3332663478785F68616C2E6300000000A5C2D700FFFFFFFF7C443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C447269766572735C53544D3332463478785F48414C5F4472697665725C5372635C73746D3332663478785F68616C5F756172742E63000000001473746D3332663478785F68616C5F756172742E6300000000B3A6BE00FFFFFFFF66443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C7372635C69635C746D6334333631412E687070000000000C746D6334333631412E68707000000000EAD6A300FFFFFFFF5E443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C436F72655C5372635C73746D3332663478785F69742E63000000000E73746D3332663478785F69742E6300000000F6FA7D00FFFFFFFF65443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C7372635C69635C746D63323136302E637070000000000B746D63323136302E63707000000000B5E99D00FFFFFFFF7B443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C69635C544D43323136305C544D43323136302E630000000009544D43323136302E63000000005FC3CF00FFFFFFFF7B443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C447269766572735C53544D3332463478785F48414C5F4472697665725C5372635C73746D3332663478785F68616C5F7370692E63000000001373746D3332663478785F68616C5F7370692E6300000000C1838300FFFFFFFF77443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C68656C706572735C4D6163726F732E6800000000084D6163726F732E6800000000CACAD500FFFFFFFF27433A5C4B65696C5F76355C41524D5C41524D43435C696E636C7564655C66756E6374696F6E616C000000000A66756E6374696F6E616C00000000C5D4F200FFFFFFFF7D443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C62617369635C73746D33325F68616C5F7265735F6D616E616765722E637070000000001973746D33325F68616C5F7265735F6D616E616765722E63707000000000FFDC7800FFFFFFFF6B443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C62617369635C62617369632E63000000000762617369632E6300000000BECEA100FFFFFFFF7B443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C447269766572735C53544D3332463478785F48414C5F4472697665725C5372635C73746D3332663478785F68616C5F63616E2E63000000001373746D3332663478785F68616C5F63616E2E6300000000F0A0A100FFFFFFFF92443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C636F6D706F6E656E745C69666C79746F705F63616E5F736C6176655F76315C69666C79746F705F63616E5F736C6176652E637070000000001569666C79746F705F63616E5F736C6176652E63707000000000BCA8E100FFFFFFFF79443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C636F6D706F6E656E745C746D703131375C746D703131372E637070000000000A746D703131372E637070000000009CC1B600FFFFFFFF6F443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C62617369635C7A7369676E616C2E687070000000000B7A7369676E616C2E68707000000000F7B88600FFFFFFFF77443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C62617369635C73746D33325F68616C5F7574696C732E637070000000001373746D33325F68616C5F7574696C732E63707000000000D9ADC200FFFFFFFF5C443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C7372635C66616E5F73746174655F6D6F6E69746F722E687070000000001566616E5F73746174655F6D6F6E69746F722E68707000000000A5C2D700FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000E9000000660000009006000099020000
@@ -150,7 +150,7 @@
0
16
- 0300000066000000E200000003020000
+ 0300000066000000E200000069020000
16
@@ -170,7 +170,7 @@
0
16
- 0300000066000000E200000003020000
+ 0300000066000000E200000069020000
16
@@ -450,7 +450,7 @@
0
16
- 0300000066000000E200000003020000
+ 0300000066000000E200000069020000
16
@@ -470,7 +470,7 @@
0
16
- 0300000066000000E200000003020000
+ 0300000066000000E200000069020000
16
@@ -490,7 +490,7 @@
0
16
- 000000003402000090060000C0030000
+ 000000009A02000090060000C0030000
16
@@ -530,7 +530,7 @@
0
16
- 03000000370200008D060000DA020000
+ 030000009D0200008D060000A7030000
16
@@ -1150,7 +1150,7 @@
0
16
- 030000006600000048010000D0020000
+ 0300000066000000E200000069020000
16
@@ -1170,7 +1170,7 @@
0
16
- 03000000370200008D060000DA020000
+ 030000009D0200008D060000A7030000
16
@@ -1190,7 +1190,7 @@
0
16
- 03000000370200008D060000DA020000
+ 030000009D0200008D060000A7030000
16
@@ -1250,7 +1250,7 @@
0
16
- 03000000370200008D060000DA020000
+ 030000009D0200008D060000A7030000
16
@@ -1270,7 +1270,7 @@
0
16
- 03000000370200008D060000DA020000
+ 030000009D0200008D060000A7030000
16
@@ -1799,14 +1799,14 @@
3312
- 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFD6000000D9000000DC040000DD000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000D600000066000000DC040000F0000000D60000004F000000DC040000D90000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF060400004F0000000A04000013020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000000A04000066000000DC0400002A0200000A0400004F000000DC0400001302000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFE50000004F000000E90000001C02000001000000020000100400000001000000B7FEFFFF3C050000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000004B01000000030000000000004F000000E50000001C0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000FF010000DC0400000302000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000001A020000DC040000B80200000000000003020000DC040000A102000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF6E0200000302000072020000A102000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000001C0200009006000020020000010000000100001004000000010000006BFDFFFFD1000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000000403000090060000D7030000000000002002000090060000C00300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000
+ 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFD6000000D9000000DC040000DD000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000D600000066000000DC040000F0000000D60000004F000000DC040000D90000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF060400004F0000000A04000013020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000000A04000066000000DC0400002A0200000A0400004F000000DC0400001302000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFE50000004F000000E90000008202000001000000020000100400000001000000B7FEFFFF3C050000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000E500000099020000000000004F000000E5000000820200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000FF010000DC0400000302000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000001A020000DC040000B80200000000000003020000DC040000A102000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF6E0200000302000072020000A102000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000008202000090060000860200000100000001000010040000000100000038FEFFFF9E010000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000009D02000090060000D7030000000000008602000090060000C00300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000
59392
File
2537
- 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
+ 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
1423
@@ -3603,7 +3603,7 @@
0
100
- 22
+ 24
../Core/Src/main.c
0
@@ -3769,7 +3769,7 @@
..\..\dep\libiflytop_micro\stm32\basic\basic.c
0
- 1
+ 2
25
1
@@ -3796,7 +3796,7 @@
..\..\dep\libiflytop_micro\stm32\component\tmp117\tmp117.cpp
17
- 11
+ 24
47
1
@@ -3811,6 +3811,24 @@
0
+
+ ..\..\dep\libiflytop_micro\stm32\basic\stm32_hal_utils.cpp
+ 14
+ 90
+ 120
+ 1
+
+ 0
+
+
+ ..\..\src\fan_state_monitor.hpp
+ 6
+ 3
+ 33
+ 1
+
+ 0
+
diff --git a/app/MDK-ARM/app.uvoptx b/app/MDK-ARM/app.uvoptx
index 91b90c0..ae00568 100644
--- a/app/MDK-ARM/app.uvoptx
+++ b/app/MDK-ARM/app.uvoptx
@@ -1,4 +1,4 @@
-
+
1.0
@@ -45,7 +45,7 @@
79
66
8
-
+
1
@@ -104,16 +104,16 @@
0
0
4
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
Segger\JL2CM3.dll
@@ -135,7 +135,7 @@
0
ARMDBGFLAGS
-
+
0
@@ -172,7 +172,7 @@
0
1
..\..\src\umain.cpp
-
+
\\app\../../src/umain.cpp\70
@@ -188,8 +188,8 @@
0
0
..\..\dep\libtrinamic\IFLYTOP-TMC-API\tmc\ic\TMC4361A\TMC4361A.c
-
-
+
+
2
@@ -204,8 +204,8 @@
0
0
..\..\dep\libtrinamic\IFLYTOP-TMC-API\tmc\ic\TMC4361A\TMC4361A.c
-
-
+
+
3
@@ -220,8 +220,8 @@
0
0
..\..\dep\libtrinamic\IFLYTOP-TMC-API\tmc\ic\TMC4361A\TMC4361A.c
-
-
+
+
4
@@ -236,8 +236,8 @@
0
0
..\..\dep\libtrinamic\IFLYTOP-TMC-API\tmc\ic\TMC4361A\TMC4361A.c
-
-
+
+
5
@@ -252,8 +252,8 @@
0
0
..\..\dep\libtrinamic\IFLYTOP-TMC-API\tmc\ic\TMC4361A\TMC4361A.c
-
-
+
+
6
@@ -268,8 +268,8 @@
0
0
..\..\dep\libtrinamic\IFLYTOP-TMC-API\tmc\ic\TMC4361A\TMC4361A.c
-
-
+
+
7
@@ -284,8 +284,8 @@
0
0
..\..\dep\libtrinamic\src\ic\tmc4361A.cpp
-
-
+
+
8
@@ -300,8 +300,8 @@
0
0
..\..\dep\libtrinamic\src\ic\tmc4361A.cpp
-
-
+
+
9
@@ -316,8 +316,8 @@
0
0
..\..\dep\libtrinamic\src\ic\tmc4361A.cpp
-
-
+
+
10
@@ -332,8 +332,8 @@
0
0
..\..\dep\libtrinamic\src\ic\tmc4361A.cpp
-
-
+
+
11
@@ -348,8 +348,8 @@
0
0
..\..\dep\libtrinamic\src\ic\tmc4361A.cpp
-
-
+
+
@@ -381,19 +381,19 @@
0
0
-
-
+
+
0
0
0
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
1
0
@@ -1070,6 +1070,30 @@
0
0
+
+ 7
+ 52
+ 8
+ 0
+ 0
+ 0
+ ..\..\dep\libiflytop_micro\stm32\basic\stm32_hal_utils.cpp
+ stm32_hal_utils.cpp
+ 0
+ 0
+
+
+ 7
+ 53
+ 8
+ 0
+ 0
+ 0
+ ..\..\src\fan_state_monitor.cpp
+ fan_state_monitor.cpp
+ 0
+ 0
+
diff --git a/app/MDK-ARM/app.uvprojx b/app/MDK-ARM/app.uvprojx
index e4a77f7..25b29b6 100644
--- a/app/MDK-ARM/app.uvprojx
+++ b/app/MDK-ARM/app.uvprojx
@@ -1,7 +1,10 @@
-
-
+
+
+
2.1
+
### uVision Project, (C) Keil Software
+
app
@@ -16,28 +19,28 @@
Keil.STM32F4xx_DFP.2.16.0
http://www.keil.com/pack/
IRAM(0x20000000-0x2001BFFF) IRAM2(0x2001C000-0x2001FFFF) IROM(0x8000000-0x807FFFF) CLOCK(25000000) FPU2 CPUTYPE("Cortex-M4") TZ
-
-
-
+
+
+
0
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
$$Device:STM32F407VETx$CMSIS\SVD\STM32F40x.svd
0
0
-
-
-
-
-
+
+
+
+
+
0
0
@@ -52,15 +55,15 @@
1
1
1
-
+
1
0
0
0
0
-
-
+
+
0
0
0
@@ -69,8 +72,8 @@
0
0
-
-
+
+
0
0
0
@@ -79,15 +82,15 @@
0
0
-
-
+
+
0
0
0
0
1
-
+
0
@@ -101,8 +104,8 @@
0
0
3
-
-
+
+
0
@@ -136,10 +139,10 @@
1
BIN\UL2V8M.DLL
"" ()
-
-
-
-
+
+
+
+
0
@@ -172,7 +175,7 @@
0
0
"Cortex-M4"
-
+
0
0
0
@@ -306,7 +309,7 @@
0x4000
-
+
1
@@ -335,7 +338,7 @@
--diag_suppress=381 --diag_suppress=1 --diag_suppress=177 --diag_suppress=111 --diag_suppress=1295
USE_HAL_DRIVER,STM32F407xx
-
+
../Core/Inc;../Drivers/STM32F4xx_HAL_Driver/Inc;../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F4xx/Include;../Drivers/CMSIS/Include;../../dep;../../src;../../dep/libtrinamic/IFLYTOP-TMC-API
@@ -351,10 +354,10 @@
0
1
-
-
-
-
+
+
+
+
@@ -364,15 +367,15 @@
0
1
0
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -417,6 +420,8 @@
2
2
11
+
+
1
@@ -444,6 +449,12 @@
2
2
2
+
+
+
+
+
+
@@ -465,6 +476,8 @@
2
2
11
+
+
1
@@ -492,6 +505,12 @@
2
2
2
+
+
+
+
+
+
@@ -513,6 +532,8 @@
2
2
11
+
+
1
@@ -540,6 +561,12 @@
2
2
2
+
+
+
+
+
+
@@ -561,6 +588,8 @@
2
2
11
+
+
1
@@ -588,6 +617,12 @@
2
2
2
+
+
+
+
+
+
@@ -609,6 +644,8 @@
2
2
11
+
+
1
@@ -636,6 +673,12 @@
2
2
2
+
+
+
+
+
+
@@ -657,6 +700,8 @@
2
2
11
+
+
1
@@ -684,6 +729,12 @@
2
2
2
+
+
+
+
+
+
@@ -725,6 +776,8 @@
2
2
11
+
+
1
@@ -752,6 +805,12 @@
2
2
2
+
+
+
+
+
+
@@ -838,6 +897,8 @@
2
2
11
+
+
1
@@ -865,6 +926,12 @@
2
2
2
+
+
+
+
+
+
@@ -886,6 +953,8 @@
2
2
11
+
+
1
@@ -913,6 +982,12 @@
2
2
2
+
+
+
+
+
+
@@ -934,6 +1009,8 @@
2
2
11
+
+
1
@@ -961,6 +1038,12 @@
2
2
2
+
+
+
+
+
+
@@ -982,6 +1065,8 @@
2
2
11
+
+
1
@@ -1009,6 +1094,12 @@
2
2
2
+
+
+
+
+
+
@@ -1030,6 +1121,8 @@
2
2
11
+
+
1
@@ -1057,6 +1150,12 @@
2
2
2
+
+
+
+
+
+
@@ -1181,6 +1280,16 @@
8
..\..\dep\libiflytop_micro\stm32\basic\zsignal.cpp
+
+ stm32_hal_utils.cpp
+ 8
+ ..\..\dep\libiflytop_micro\stm32\basic\stm32_hal_utils.cpp
+
+
+ fan_state_monitor.cpp
+ 8
+ ..\..\src\fan_state_monitor.cpp
+
@@ -1189,17 +1298,18 @@
+
-
+
-
+
-
+
-
+
-
+
diff --git a/app/app.ioc b/app/app.ioc
index 098d680..93e9407 100644
--- a/app/app.ioc
+++ b/app/app.ioc
@@ -28,7 +28,8 @@ Mcu.IP10=TIM3
Mcu.IP11=TIM4
Mcu.IP12=TIM6
Mcu.IP13=TIM7
-Mcu.IP14=USART1
+Mcu.IP14=TIM8
+Mcu.IP15=USART1
Mcu.IP2=I2C1
Mcu.IP3=NVIC
Mcu.IP4=RCC
@@ -37,7 +38,7 @@ Mcu.IP6=SPI1
Mcu.IP7=SYS
Mcu.IP8=TIM1
Mcu.IP9=TIM2
-Mcu.IPNb=15
+Mcu.IPNb=16
Mcu.Name=STM32F407V(E-G)Tx
Mcu.Package=LQFP100
Mcu.Pin0=PH0-OSC_IN
@@ -117,11 +118,8 @@ PB6.Signal=I2C1_SCL
PB7.Locked=true
PB7.Mode=I2C
PB7.Signal=I2C1_SDA
-PC8.GPIOParameters=GPIO_ModeDefaultPP,GPIO_PuPd
-PC8.GPIO_ModeDefaultPP=GPIO_MODE_AF_PP
-PC8.GPIO_PuPd=GPIO_PULLDOWN
PC8.Locked=true
-PC8.Signal=S_TIM3_CH3
+PC8.Signal=S_TIM8_CH3
PC9.Locked=true
PC9.Mode=Clock-out-2
PC9.Signal=RCC_MCO_2
@@ -164,7 +162,7 @@ ProjectManager.StackSize=0x400
ProjectManager.TargetToolchain=MDK-ARM V5.32
ProjectManager.ToolChainLocation=
ProjectManager.UnderRoot=false
-ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USART1_UART_Init-USART1-false-HAL-true,4-MX_TIM2_Init-TIM2-false-HAL-true,5-MX_TIM3_Init-TIM3-false-HAL-true,6-MX_TIM4_Init-TIM4-false-HAL-true,7-MX_CRC_Init-CRC-false-HAL-true,8-MX_RNG_Init-RNG-false-HAL-true,9-MX_TIM7_Init-TIM7-false-HAL-true,10-MX_SPI1_Init-SPI1-false-HAL-true,11-MX_TIM6_Init-TIM6-false-HAL-true,12-MX_TIM1_Init-TIM1-false-HAL-true,13-MX_CAN1_Init-CAN1-false-HAL-true,14-MX_I2C1_Init-I2C1-false-HAL-true
+ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USART1_UART_Init-USART1-false-HAL-true,4-MX_TIM2_Init-TIM2-false-HAL-true,5-MX_TIM3_Init-TIM3-false-HAL-true,6-MX_TIM4_Init-TIM4-false-HAL-true,7-MX_CRC_Init-CRC-false-HAL-true,8-MX_RNG_Init-RNG-false-HAL-true,9-MX_TIM7_Init-TIM7-false-HAL-true,10-MX_SPI1_Init-SPI1-false-HAL-true,11-MX_TIM6_Init-TIM6-false-HAL-true,12-MX_TIM1_Init-TIM1-false-HAL-true,13-MX_CAN1_Init-CAN1-false-HAL-true,14-MX_I2C1_Init-I2C1-false-HAL-true,15-MX_TIM8_Init-TIM8-false-HAL-true
RCC.48MHZClocksFreq_Value=48000000
RCC.AHBFreq_Value=144000000
RCC.APB1CLKDivider=RCC_HCLK_DIV4
@@ -209,10 +207,10 @@ SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1
SH.S_TIM1_CH1.ConfNb=1
SH.S_TIM2_CH2.0=TIM2_CH2,PWM Generation2 CH2
SH.S_TIM2_CH2.ConfNb=1
-SH.S_TIM3_CH3.0=TIM3_CH3,PWM Generation3 CH3
-SH.S_TIM3_CH3.ConfNb=1
SH.S_TIM4_CH3.0=TIM4_CH3,PWM Generation3 CH3
SH.S_TIM4_CH3.ConfNb=1
+SH.S_TIM8_CH3.0=TIM8_CH3,PWM Generation3 CH3
+SH.S_TIM8_CH3.ConfNb=1
SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_128
SPI1.CalculateBaudRate=562.5 KBits/s
SPI1.Direction=SPI_DIRECTION_2LINES
@@ -229,8 +227,7 @@ TIM2.OCPolarity_2=TIM_OCPOLARITY_LOW
TIM2.Period=1000-1
TIM2.Prescaler=72-1
TIM2.Pulse-PWM\ Generation2\ CH2=200
-TIM3.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
-TIM3.IPParameters=Channel-PWM Generation3 CH3,Prescaler,Period
+TIM3.IPParameters=Prescaler,Period
TIM3.Period=9999
TIM3.Prescaler=71
TIM4.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
@@ -243,6 +240,8 @@ TIM6.IPParameters=Prescaler
TIM6.Prescaler=81
TIM7.IPParameters=Prescaler
TIM7.Prescaler=81
+TIM8.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
+TIM8.IPParameters=Channel-PWM Generation3 CH3
USART1.IPParameters=VirtualMode
USART1.VirtualMode=VM_ASYNC
VP_CRC_VS_CRC.Mode=CRC_Activate
diff --git a/dep/libiflytop_micro b/dep/libiflytop_micro
index b85d8c6..1be6e0e 160000
--- a/dep/libiflytop_micro
+++ b/dep/libiflytop_micro
@@ -1 +1 @@
-Subproject commit b85d8c6f872e7d3465d2b6d75d7ef8802eb1feab
+Subproject commit 1be6e0ea5a7193a1eac2460413476302bd9c8dea
diff --git a/src/device_io_service.cpp b/src/device_io_service.cpp
index ce79341..3aa35b5 100644
--- a/src/device_io_service.cpp
+++ b/src/device_io_service.cpp
@@ -1,6 +1,7 @@
#include "device_io_service.hpp"
#include "libiflytop_micro/stm32/basic/stm32_hal_utils.hpp"
+#define TAG "DEVICE_IO_SERVICE"
extern "C" {
int fputc(int ch, FILE *stream) {
uint8_t c = ch;
@@ -14,10 +15,70 @@ namespace iflytop {
DeviceIoService deviceIoService;
}
-void DeviceIoService::fanInit(int freq) {}
+void DeviceIoService::fanInit(int freq) {
+ Stm32HalUtils::setPWMFreq(&htim2, freq); // fan0->fan3
+ Stm32HalUtils::setPWMFreq(&htim4, freq); // fan4
+ Stm32HalUtils::setPWMFreq(&htim8, freq); // fan5
-void DeviceIoService::fanSetDutyCycle(int fanIndex, uint16_t dutyCycle) {}
-bool *DeviceIoService::fanGetState(int fanIndex) { return &m_fanState[fanIndex]; }
+ // fan0 fan1 fan2 fan3
+ Stm32HalUtils::gpioInit(GPIOC, GPIO_PIN_0, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET);
+ // fan4
+ Stm32HalUtils::gpioInit(GPIOC, GPIO_PIN_2, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET);
+ // fan5
+ Stm32HalUtils::gpioInit(GPIOC, GPIO_PIN_3, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET);
+}
+
+void DeviceIoService::fanSetDutyCycle(int fanIndex, uint16_t dutyCycle) {
+ if (fanIndex > 5) {
+ while (1) {
+ ZLOGE(TAG, "fanIndex is out of range!");
+ }
+ }
+
+ if (fanIndex <= 3) {
+ Stm32HalUtils::setPWMDuty(&htim2, TIM_CHANNEL_2, dutyCycle);
+ m_fanState[0] = dutyCycle > 0;
+ m_fanState[1] = dutyCycle > 0;
+ m_fanState[2] = dutyCycle > 0;
+ m_fanState[3] = dutyCycle > 0;
+
+ if (dutyCycle > 0) {
+ HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);
+ } else {
+ HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);
+ }
+
+ } else if (fanIndex == 4) {
+ Stm32HalUtils::setPWMDuty(&htim4, TIM_CHANNEL_3, dutyCycle);
+ m_fanState[4] = dutyCycle > 0;
+
+ if (dutyCycle > 0) {
+ HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_SET);
+ } else {
+ HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_RESET);
+ }
+ } else if (fanIndex == 5) {
+ Stm32HalUtils::setPWMDuty(&htim8, TIM_CHANNEL_3, dutyCycle);
+ m_fanState[5] = dutyCycle > 0;
+
+ if (dutyCycle > 0) {
+ HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_SET);
+ } else {
+ HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_RESET);
+ }
+ }
+}
+bool *DeviceIoService::fanGetPowerState(int fanIndex) {
+ if (fanIndex >= 5) {
+ while (1) {
+ ZLOGE(TAG, "fanIndex is out of range!");
+ }
+ }
+ return &m_fanState[fanIndex];
+}
+void DeviceIoService::fanSetState0to3(uint16_t dutyCycle) { fanSetDutyCycle(0, dutyCycle); }
+void DeviceIoService::fanSetState4(uint16_t dutyCycle) { fanSetDutyCycle(4, dutyCycle); }
+void DeviceIoService::fanSetState5(uint16_t dutyCycle) { fanSetDutyCycle(5, dutyCycle); }
/*******************************************************************************
* 帕尔贴驱动电路 *
diff --git a/src/device_io_service.hpp b/src/device_io_service.hpp
index a8f03f5..42da01b 100644
--- a/src/device_io_service.hpp
+++ b/src/device_io_service.hpp
@@ -29,7 +29,10 @@ class DeviceIoService : public IflytopMicroOS {
*******************************************************************************/
void fanInit(int freq);
void fanSetDutyCycle(int fanIndex, uint16_t dutyCycle);
- bool *fanGetState(int fanIndex);
+ bool *fanGetPowerState(int fanIndex);
+ void fanSetState0to3(uint16_t dutyCycle);
+ void fanSetState4(uint16_t dutyCycle);
+ void fanSetState5(uint16_t dutyCycle);
/*******************************************************************************
* 帕尔贴驱动电路 *
*******************************************************************************/
@@ -59,7 +62,7 @@ class DeviceIoService : public IflytopMicroOS {
void peltier_cold_ctr_pwm(int pwm);
// PB0 HOT_CTR_PWM0
void peltier_hot_ctr_pwm(int pwm);
-
+
void tmc_motor_spi_select(int channel, bool state);
};
diff --git a/src/fan_state_monitor.hpp b/src/fan_state_monitor.hpp
index b73c186..e8eeeb9 100644
--- a/src/fan_state_monitor.hpp
+++ b/src/fan_state_monitor.hpp
@@ -30,7 +30,7 @@ class FanStateMonitor {
* @return false
*/
bool getFanError() { return m_fanError; }
- bool clearFanError() { m_fanError = false; }
+ void clearFanError() { m_fanError = false; }
/*******************************************************************************
* 周期性调度任务 *
diff --git a/src/umain.cpp b/src/umain.cpp
index 9e65998..0706a76 100644
--- a/src/umain.cpp
+++ b/src/umain.cpp
@@ -8,6 +8,7 @@
#include "libtrinamic\src\ic\tmc4361A.hpp"
#include "project_board.hpp"
//
+#include "fan_state_monitor.hpp"
#include "i2c.h"
#include "libiflytop_micro\stm32\basic\zsignal.hpp"
#include "libiflytop_micro\stm32\component\iflytop_can_slave_v1\iflytop_can_slave.hpp"
@@ -26,6 +27,8 @@ class Main {
IflytopCanSlave canSlaveService;
IflytopMicroOS *os;
+ FanStateMonitor m_fanStateMonitor[6];
+
bool canOnRxDataFlag;
Main() { canOnRxDataFlag = false; }
@@ -37,6 +40,14 @@ class Main {
void initialize();
void main(int argc, char const *argv[]);
+ void do_debug_light_state() {
+ static uint32_t lastprocess = 0;
+ if (sys_haspassedms(lastprocess) > 300) {
+ lastprocess = HAL_GetTick();
+ HAL_GPIO_TogglePin(DEBUG_LIGHT_PORT, DEBUG_LIGHT_PIN);
+ }
+ }
+
/*******************************************************************************
* 单元测试 *
*******************************************************************************/
@@ -45,18 +56,17 @@ class Main {
*/
void testCanSlaveTxAndRx();
void testTmp117();
- void do_debug_light_state() {
- static uint32_t lastprocess = 0;
- if (sys_haspassedms(lastprocess) > 300) {
- lastprocess = HAL_GetTick();
- HAL_GPIO_TogglePin(DEBUG_LIGHT_PORT, DEBUG_LIGHT_PIN);
- }
- }
};
void Main::initialize() {
zsignal_init(zsignal_listener, ZARRAY_SIZE(zsignal_listener));
os = &deviceIoService;
+
+ /*******************************************************************************
+ * 帕尔贴初始化 *
+ *******************************************************************************/
+ deviceIoService.peltier_init();
+
/*******************************************************************************
* 温度传感器初始化 *
*******************************************************************************/
@@ -68,6 +78,7 @@ void Main::initialize() {
/*******************************************************************************
* 电机初始化 *
*******************************************************************************/
+ deviceIoService.tmc_init();
deviceIoService.tmc_extern_clk_enable();
// 4361初始化
TMC4361AImpl::TMC4361AConfig_t *tmc4361aconfig = TMC4361AImpl::createDeafultTMC4361AConfig();
@@ -106,6 +117,28 @@ void Main::initialize() {
canSlaveService.initialize(os, config);
canSlaveService.onCanRxData.connect(this, &Main::onCanRxData);
canSlaveService.activateRxIT();
+
+ /*******************************************************************************
+ * 风扇初始化 *
+ *******************************************************************************/
+ deviceIoService.fanInit(1000);
+ /**
+ * @brief 风扇反馈初始化
+ *
+ * FAN0_FB_INT PC1
+ * FAN1_FB_INT PC4
+ * FAN2_FB_INT PC5
+ * FAN3_FB_INT PC6
+ * FAN4_FB_INT PC7
+ * FAN5_FB_INT PC10
+ */
+
+ m_fanStateMonitor[0].initialize(os, GPIOC, GPIO_PIN_1, deviceIoService.fanGetPowerState(0));
+ m_fanStateMonitor[1].initialize(os, GPIOC, GPIO_PIN_4, deviceIoService.fanGetPowerState(1));
+ m_fanStateMonitor[2].initialize(os, GPIOC, GPIO_PIN_5, deviceIoService.fanGetPowerState(2));
+ m_fanStateMonitor[3].initialize(os, GPIOC, GPIO_PIN_6, deviceIoService.fanGetPowerState(3));
+ m_fanStateMonitor[4].initialize(os, GPIOC, GPIO_PIN_7, deviceIoService.fanGetPowerState(4));
+ m_fanStateMonitor[5].initialize(os, GPIOC, GPIO_PIN_10, deviceIoService.fanGetPowerState(5));
}
void Main::main(int argc, char const *argv[]) {
@@ -117,6 +150,13 @@ void Main::main(int argc, char const *argv[]) {
do_debug_light_state();
// testCanSlaveTxAndRx();
// testTmp117();
+
+ /**
+ * @brief 风扇状态监控服务周期调度
+ */
+ for (size_t i = 0; i < ZARRAY_SIZE(m_fanStateMonitor); i++) {
+ m_fanStateMonitor[i].periodicJob();
+ }
}
}