STM32Cube

이전 시간의 파일에서 File - Save Project As 혹은 Ctrl + A (다른이름으로 저장)를 눌러줍니다.

PC13에 GPIO_Input을, PA5에 GPIO_Output을 설정해 줍니다.

Configuration의 GPIO에서 PA5의 라벨에는 internal_led를

PC13의 라벨에는 b1을 적어줍니다.

이제 코드를 생성(톱니바퀴)해 줍니다.

uVision5

HAL_UART_Transmit 함수와 HAL_UART_Receive 함수

그리고 이전 시간에 사용했던 HAL_GPIO_ReadPin과 HAL_GPIO_WritePin을 사용합니다.

USER CODE BIGIN 2 밑에 아래 변수들과 함수를 추가해 줍니다.

b_in과 pin_state만 추가해 주면 됩니다.

  /* USER CODE BEGIN 2 */
	
	HAL_StatusTypeDef RcvStat ;
	uint8_t bufftx[10] = "Hello!\n" ;
	uint8_t b_in[10] = "b_in\n" ;
	uint8_t UsartData[10] ;
	uint8_t pin_state ;
	
	HAL_UART_Transmit(&huart2, bufftx, 10, 100) ;

USER CODE BIGIN 3 에는 아래와 같이 추가해 줍니다.

  /* USER CODE BEGIN 3 */
		
	RcvStat = HAL_UART_Receive(&huart2, UsartData, 1, 100) ;
		
	if (RcvStat == HAL_OK) {
		if (UsartData[0] == 'a') {  // if serial input is 'a', led on
			HAL_GPIO_WritePin(internal_led_GPIO_Port, internal_led_Pin, GPIO_PIN_SET) ;
		} else if (UsartData[0] == 'b') {  // if serial input is 'a', led off
			HAL_GPIO_WritePin(internal_led_GPIO_Port, internal_led_Pin, GPIO_PIN_RESET) ;
		}
		
		HAL_UART_Transmit(&huart2, UsartData, 1, 100) ;
	}
	
	pin_state = HAL_GPIO_ReadPin(b1_GPIO_Port, b1_Pin) ;
	
	if (!pin_state) {  // if b1 is low, send b_in
		HAL_UART_Transmit(&huart2, b_in, 10, 100) ;
	}

저번 시간과 같이 Serial 통신 프로그램을 설정해 줍니다.

RESET 버튼을 눌러 보드를 재시작하면 Hello! 문자가 나옵니다.

B1 버튼을 누르면 b_in이 나옵니다.

문자열 ‘a’를 보내면 led가 켜지고 ‘b’를 보내면 꺼지게 됩니다.

이상입니다.