在hall.c里加入换相代码
uint16_t state=0;
uint16_t pwm_pulse=0
void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim)
{
state = get_hall_state();
// printf("%d\r\n",state);
//513264
switch(state)
{
case 1: /* U+ W- */
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_3,pwm_pulse); //U+
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_2,0); //V+
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_1,0); //W+
HAL_GPIO_WritePin(PWMUL_GPIO_Port,PWMUL_Pin,GPIO_PIN_RESET);//U- //GPIO_PIN_SET GPIO_PIN_RESET
HAL_GPIO_WritePin(PWMVL_GPIO_Port,PWMVL_Pin,GPIO_PIN_RESET);//V-
HAL_GPIO_WritePin(PWMWL_GPIO_Port,PWMWL_Pin,GPIO_PIN_SET);//W-
// printf("%d\r\n",pwm_pulse);
break;
case 2: /* V+ U- */
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_3,0); //U+
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_2,pwm_pulse); //V+
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_1,0); //W+
HAL_GPIO_WritePin(PWMUL_GPIO_Port,PWMUL_Pin,GPIO_PIN_SET);//U- //GPIO_PIN_SET GPIO_PIN_RESET
HAL_GPIO_WritePin(PWMVL_GPIO_Port,PWMVL_Pin,GPIO_PIN_RESET);//V-
HAL_GPIO_WritePin(PWMWL_GPIO_Port,PWMWL_Pin,GPIO_PIN_RESET);//W-
break;
case 3: /* V+ W- */
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_3,0); //U+
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_2,pwm_pulse); //V+
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_1,0); //W+
HAL_GPIO_WritePin(PWMUL_GPIO_Port,PWMUL_Pin,GPIO_PIN_RESET);//U- //GPIO_PIN_SET GPIO_PIN_RESET
HAL_GPIO_WritePin(PWMVL_GPIO_Port,PWMVL_Pin,GPIO_PIN_RESET);//V-
HAL_GPIO_WritePin(PWMWL_GPIO_Port,PWMWL_Pin,GPIO_PIN_SET);//W-
break;
case 4: /* W+ V- */
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_3,0); //U+
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_2,0); //V+
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_1,pwm_pulse); //W+
HAL_GPIO_WritePin(PWMUL_GPIO_Port,PWMUL_Pin,GPIO_PIN_RESET);//U- //GPIO_PIN_SET GPIO_PIN_RESET
HAL_GPIO_WritePin(PWMVL_GPIO_Port,PWMVL_Pin,GPIO_PIN_SET);//V-
HAL_GPIO_WritePin(PWMWL_GPIO_Port,PWMWL_Pin,GPIO_PIN_RESET);//W-
break;
case 5: /* U+ V -*/
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_3,pwm_pulse); //U+
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_2,0); //V+
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_1,0); //W+
HAL_GPIO_WritePin(PWMUL_GPIO_Port,PWMUL_Pin,GPIO_PIN_RESET);//U- //GPIO_PIN_SET GPIO_PIN_RESET
HAL_GPIO_WritePin(PWMVL_GPIO_Port,PWMVL_Pin,GPIO_PIN_SET);//V-
HAL_GPIO_WritePin(PWMWL_GPIO_Port,PWMWL_Pin,GPIO_PIN_RESET);//W-
break;
case 6: /* W+ U- */
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_3,0); //U+
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_2,0); //V+
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_1,pwm_pulse); //W+
HAL_GPIO_WritePin(PWMUL_GPIO_Port,PWMUL_Pin,GPIO_PIN_SET);//U- //GPIO_PIN_SET GPIO_PIN_RESET
HAL_GPIO_WritePin(PWMVL_GPIO_Port,PWMVL_Pin,GPIO_PIN_RESET);//V-
HAL_GPIO_WritePin(PWMWL_GPIO_Port,PWMWL_Pin,GPIO_PIN_RESET);//W-
break;
}
}
|