STM32

포토 커플러, 스텝 모터 동작

오버헤드프레스 2023. 7. 18. 10:02

EXTI는 CallBack 을 써야함

 

Driver/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c

502~514 잘라내기 후 

 

main문 타이머 밑에 슈웃

 

잘 되는지 확인용

 

interrupt 설정

 

==> 정상 작동

 

포토커플러에 인식될 때 스텝모터 정지시키기

 

stepmotor.c에 선언

 

void stepmotor_main()
{
	switch(stepmotor_state)
	{
	case IDLE:
		stepmotor_drive(stepmotor_state);
		set_rpm(0);
		if (get_button(BUTTON0_GPIO_Port, BUTTON0_Pin, BUTTON0) == BUTTON_PRESS)
		{
			stepmotor_state = FORWARD;
		}
		break;
	case FORWARD:
		stepmotor_drive(stepmotor_state);
		set_rpm(10); //rpm 속도 조절
		if (get_button(BUTTON0_GPIO_Port, BUTTON0_Pin, BUTTON0) == BUTTON_PRESS)
		{
			stepmotor_state = BACKWARD;
		}
		if (get_button(BUTTON1_GPIO_Port, BUTTON1_Pin, BUTTON1) == BUTTON_PRESS)
		{
			stepmotor_state = IDLE;
		}
		if(ext_int_no != -1)
		{
			ext_int_no = -1;
			stepmotor_state = IDLE;
		}
		break;
	case BACKWARD:
		stepmotor_drive(stepmotor_state);
		set_rpm(10);
		if (get_button(BUTTON0_GPIO_Port, BUTTON0_Pin, BUTTON0) == BUTTON_PRESS)
			{
			stepmotor_state = FORWARD;
			}
		if (get_button(BUTTON1_GPIO_Port, BUTTON1_Pin, BUTTON1) == BUTTON_PRESS)
		{
			stepmotor_state = IDLE;
		}
		if(ext_int_no != -1)
		{
			ext_int_no = -1;
			stepmotor_state = IDLE;
		}
		break;
	}
}

 

정상작동 확인

 

 

DOTMATRIX

PE2~PE9 (행연결)

PD0~PD7 (열연결)

ioc 모두 GPIO_OUTPUT으로 설정

 

PE2~PE9 까지 COL1 ~COL8

PD0~PD7 까지 ROW1~ROW8 이름 변경