Пн фев 12, 2018 07:27:47
Пн фев 12, 2018 15:59:39
Пн фев 12, 2018 21:11:41
Вт фев 13, 2018 02:26:14
Вт фев 13, 2018 07:39:17
Вт фев 13, 2018 09:21:31
Mishany писал(а):делал на таймере, там все просто было вроде
Вт фев 13, 2018 09:23:13
void TIM2_IRQHandler(void)
{
/* USER CODE BEGIN TIM2_IRQn 0 */
// HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_10);
// HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_11);
/*начало детектирования скорости ниже 2 км/час(на случай переполнения таймера захвата)*/
if (flag_test != 0)
{
counter_tim2++;
//если нащелкали более 1 сек
if(counter_tim2 > 28)
{
flag_tim2 = 1;
counter_tim2 = 0;
//SPEED_value = 0;
}
}
/*конец детектирования скорости ниже 2 км/час*/
if(raznica < 40)
{
if (timerse < 12)
{
timerse++;
//flag_inc = 10;
htim4.Init.Period = timerse;
HAL_TIM_Base_Init(&htim4);
}
}
if(raznica > 40)
{
if (timerse > 1)
{
timerse--;
//flag_inc = 0;
htim4.Init.Period = timerse;
HAL_TIM_Base_Init(&htim4);
}
}
/* USER CODE END TIM2_IRQn 0 */
HAL_TIM_IRQHandler(&htim2);
/* USER CODE BEGIN TIM2_IRQn 1 */
/* USER CODE END TIM2_IRQn 1 */
}
/**
* @brief This function handles TIM3 global interrupt.
*/
void TIM3_IRQHandler(void)
{
/* USER CODE BEGIN TIM3_IRQn 0 */
/* USER CODE END TIM3_IRQn 0 */
HAL_TIM_IRQHandler(&htim3);
/* USER CODE BEGIN TIM3_IRQn 1 */
/* USER CODE END TIM3_IRQn 1 */
}
/**
* @brief This function handles TIM4 global interrupt.
*/
void TIM4_IRQHandler(void)
{
/* USER CODE BEGIN TIM4_IRQn 0 */
/*заходим после каждого полного шага, когда на ноге STEP лог. "0"*/
if(flag_polarity == 0)
{
if(SPEED_value > Position)
{
//Вращение по часовой DIR
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET);
raznica = SPEED_value - Position;
Position++; //запоминаем новое положение стрелки
full_position_up = 1;
}
else
{
full_position_up = 0;//флаг окончания выхода на позицию по часовой
}
if(SPEED_value < Position)
{
//Вращение против часовой DIR
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET);
raznica = Position - SPEED_value;
Position--; //запоминаем новое положение стрелки
full_position_dn = 1;
}
else
{
full_position_dn = 0;//флаг окончания выхода на позицию против часовой
}
}
//шагаем пока не выйдем на заданную позицию (каждый заход меняем состояние на ноге STEP):
if((full_position_dn != 0)||(full_position_up != 0))
{
if(flag_polarity == 0)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_SET);
flag_polarity = 1;
}
else
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET);
flag_polarity = 0;
}
}
else
{
if(flag_test == 1)
{
htim4.Init.Period = 12;
HAL_TIM_Base_Init(&htim4);
}
}
/* USER CODE END TIM4_IRQn 0 */
HAL_TIM_IRQHandler(&htim4);
/* USER CODE BEGIN TIM4_IRQn 1 */
/* USER CODE END TIM4_IRQn 1 */
}
Вт фев 13, 2018 10:36:56
Ср сен 16, 2020 08:58:55
Ср сен 16, 2020 12:55:07
Ср сен 16, 2020 14:03:31
Ср сен 16, 2020 15:02:00
Ср сен 16, 2020 15:28:10
Ср сен 16, 2020 15:54:28
Ср сен 16, 2020 16:07:07
Ср сен 16, 2020 16:14:02
Ср сен 16, 2020 16:32:50
Ср сен 16, 2020 19:38:21
Пт янв 20, 2023 18:14:53