프로젝트/스마트 요양 지원 시스템 (RoboCare) : 노약자와 장애인 돌봄

⚠️sub RobotArm_CUBEIDE 셋업 과정 (끄적끄적)

projectlim 2024. 11. 13. 12:48
728x90
반응형
SMALL

TIM3,4

TIM4 채널 1234

TIM3 채널 34

 

여기서 그동안 삽질한게

 

요고였음.

HSE로 하고 막 이랬는데 까불지마셈./.

 

일단 인터럽트도 없음

 

여기도 건든건 없음

 

건든건 오직!!!

TIMER뿐

TIM3에서 Clock은 Internal Clock

 

channel은 5,6번 서보모터만 추가로 넣은거라 CH3,4 PWM으로 Generation갈겨주기

 

자 그리고

파라미터 셋팅

 

Prescaler 84에 priod는 2000

그리고 여기서!!! 계속 실수한거!!~

스크롤 내리면 이게 있음.

 

이거 Pulse100으로 맞추기

Timer 4 도 다 똑같음

마저 다 체크해주기

 

자 그러면 main문은 어떻게 테스트 했나??

 

int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_TIM4_Init();
  MX_TIM3_Init();
  /* USER CODE BEGIN 2 */
  HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1);
  HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2);
  HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3);
  HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4);
  HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);
  HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
	  for (int pulse = 0; pulse <= 350; pulse += 50)
	  {
		  __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_1, pulse);
		  __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_2, pulse);
		  __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_3, pulse);
		  __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_4, pulse);
		  __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_3, pulse);
		  __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_4, pulse);
		  HAL_Delay(1000);
	  }
    /* USER CODE BEGIN 3 */

  }

for문으로 제어합니당.

 

자 그러면 이제 함수로 만들어서 인터럽트를 

 

하려면!!

exti 설정해서 3번으로 찍혔네용

 

라이징 엣지를 이용해서 신호가 눌리자 마자 바로 응답하려고 합니다.

 

exti 인터럽트는 enable 꼭 해주시고

 


그리고 이거 말곤 없습니다.

 

아 라파

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO_PIN = 7
GPIO.setup(GPIO_PIN, GPIO.OUT)

try:
    while True:
        GPIO.output(GPIO_PIN, GPIO.HIGH)  # HIGH 신호 전송
        time.sleep(1)
        GPIO.output(GPIO_PIN, GPIO.LOW)   # LOW 신호 전송
        time.sleep(1)
except KeyboardInterrupt:
    GPIO.cleanup()

코드 바꿔줘야합니다.

 

 

그러면 it.c가보면 이래 코드가 작성되어있는데

 

 

stm32f4xx_it.c

맨 하단부

void EXTI3_IRQHandler(void)
{
  /* USER CODE BEGIN EXTI3_IRQn 0 */

  /* USER CODE END EXTI3_IRQn 0 */

  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);//interupt flag clear and callback
  /* USER CODE BEGIN EXTI3_IRQn 1 */

  /* USER CODE END EXTI3_IRQn 1 */
}


/* USER CODE BEGIN 1 */

 

 

728x90
반응형
LIST