Browse Source

修改帕尔贴驱动的bug,目前测试硬件仍有短路的故障

master
sunzhaowei 2 years ago
parent
commit
25707833e7
  1. 14
      app/Core/Src/gpio.c
  2. 35
      app/Core/Src/tim.c
  3. 50
      app/MDK-ARM/app.uvguix.sunzh
  4. 50
      app/app.ioc
  5. 9
      src/board/hardware.cpp

14
app/Core/Src/gpio.c

@ -87,14 +87,12 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/*Configure GPIO pins : PB0 PB1 PB2 PB10
PB11 PB12 PB13 PB14
PB15 PB4 PB5 PB8
PB9 */
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_10
|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14
|GPIO_PIN_15|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_8
|GPIO_PIN_9;
/*Configure GPIO pins : PB1 PB2 PB10 PB11
PB12 PB13 PB14 PB15
PB4 PB5 PB8 PB9 */
GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_10|GPIO_PIN_11
|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15
|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_8|GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

35
app/Core/Src/tim.c

@ -156,6 +156,7 @@ 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,15 +176,28 @@ 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 */
@ -488,6 +502,27 @@ 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_GPIOB_CLK_ENABLE();
/**TIM3 GPIO Configuration
PB0 ------> TIM3_CH3
*/
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF2_TIM3;
HAL_GPIO_Init(GPIOB, &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 */

50
app/MDK-ARM/app.uvguix.sunzh
File diff suppressed because it is too large
View File

50
app/app.ioc

@ -43,30 +43,31 @@ Mcu.Name=STM32F407V(E-G)Tx
Mcu.Package=LQFP100
Mcu.Pin0=PH0-OSC_IN
Mcu.Pin1=PH1-OSC_OUT
Mcu.Pin10=PA10
Mcu.Pin11=PA11
Mcu.Pin12=PA12
Mcu.Pin13=PA13
Mcu.Pin14=PA14
Mcu.Pin15=PB3
Mcu.Pin16=PB6
Mcu.Pin17=PB7
Mcu.Pin18=VP_CRC_VS_CRC
Mcu.Pin19=VP_RNG_VS_RNG
Mcu.Pin10=PA9
Mcu.Pin11=PA10
Mcu.Pin12=PA11
Mcu.Pin13=PA12
Mcu.Pin14=PA13
Mcu.Pin15=PA14
Mcu.Pin16=PB3
Mcu.Pin17=PB6
Mcu.Pin18=PB7
Mcu.Pin19=VP_CRC_VS_CRC
Mcu.Pin2=PA5
Mcu.Pin20=VP_SYS_VS_Systick
Mcu.Pin21=VP_TIM1_VS_ClockSourceINT
Mcu.Pin22=VP_TIM3_VS_ClockSourceINT
Mcu.Pin23=VP_TIM6_VS_ClockSourceINT
Mcu.Pin24=VP_TIM7_VS_ClockSourceINT
Mcu.Pin20=VP_RNG_VS_RNG
Mcu.Pin21=VP_SYS_VS_Systick
Mcu.Pin22=VP_TIM1_VS_ClockSourceINT
Mcu.Pin23=VP_TIM3_VS_ClockSourceINT
Mcu.Pin24=VP_TIM6_VS_ClockSourceINT
Mcu.Pin25=VP_TIM7_VS_ClockSourceINT
Mcu.Pin3=PA6
Mcu.Pin4=PA7
Mcu.Pin5=PE9
Mcu.Pin6=PD14
Mcu.Pin7=PC8
Mcu.Pin8=PC9
Mcu.Pin9=PA9
Mcu.PinsNb=25
Mcu.Pin5=PB0
Mcu.Pin6=PE9
Mcu.Pin7=PD14
Mcu.Pin8=PC8
Mcu.Pin9=PC9
Mcu.PinsNb=26
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F407VETx
@ -110,6 +111,7 @@ PA7.Signal=SPI1_MOSI
PA9.Locked=true
PA9.Mode=Asynchronous
PA9.Signal=USART1_TX
PB0.Signal=S_TIM3_CH3
PB3.GPIOParameters=GPIO_ModeDefaultPP
PB3.GPIO_ModeDefaultPP=GPIO_MODE_AF_PP
PB3.Locked=true
@ -209,6 +211,8 @@ 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
@ -229,7 +233,9 @@ TIM2.OCPolarity_2=TIM_OCPOLARITY_LOW
TIM2.Period=1000-1
TIM2.Prescaler=72-1
TIM2.Pulse-PWM\ Generation2\ CH2=200
TIM3.IPParameters=Prescaler,Period
TIM3.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
TIM3.IPParameters=Prescaler,Period,Channel-PWM Generation3 CH3,OCPolarity_3
TIM3.OCPolarity_3=TIM_OCPOLARITY_HIGH
TIM3.Period=9999
TIM3.Prescaler=71
TIM4.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3

9
src/board/hardware.cpp

@ -240,17 +240,17 @@ void Hardware::fan_periodicJob() {
* *
*******************************************************************************/
void Hardware::peltier_cold_ctr_pwm(int pwm) {
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, pwm);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
STM32_HAL::setPWMDuty(&htim1, TIM_CHANNEL_1, pwm);
}
// PB0 HOT_CTR_PWM0
void Hardware::peltier_hot_ctr_pwm(int pwm) {
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_3, pwm);
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);
STM32_HAL::setPWMDuty(&htim3, TIM_CHANNEL_3, pwm);
}
void Hardware::peltier_init() { //
STM32_HAL::gpioInitAsOutput(GPIOB, GPIO_PIN_1, GPIO_MODE_OUTPUT_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET);
STM32_HAL::gpioInitAsOutput(GPIOE, GPIO_PIN_10, GPIO_MODE_OUTPUT_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET);
STM32_HAL::setPWMFreq(&htim1, 100);
STM32_HAL::setPWMFreq(&htim3, 100);
}
int Hardware::peltier_get_pwm() { return m_peltier.pwm; }
@ -275,7 +275,6 @@ void Hardware::peltier_set_pwm(int pwm) {
* COLD_CTR(BH) = 0
*/
m_peltier.pwm = pwm;
pwm = pwm * 1000;
if (pwm == 0) {
peltier_hot_ctr_pwm(0); /*HOT_CTR_PWM0*/
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET); /*HOT_CTR*/

Loading…
Cancel
Save