STM32_Tutorial_04 - 8BitsCoding/RobotMentor GitHub Wiki


  • UART(Universal asynchronous receiver/transmitter) : ๋ณ‘๋ ฌ ๋ฐ์ดํ„ฐ ํ˜•ํƒœ๋ฅผ ์ง๋ ฌ๋ฐฉ์‹์œผ๋กœ ์ „ํ™˜ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ํ•˜๋“œ์›จ์–ด์˜ ์ผ์ข…

ํ†ต์‹ ์˜ ๋ฐฉ๋ฒ•์€ ๋™๊ธฐ์‹/๋น„๋™๊ธฐ์‹์ด ์žˆ๊ณ  ๋™๊ธฐ์‹์€ ํด๋Ÿญ์— ๋งž์ถ”์–ด, ๋น„๋™๊ธฐ์‹์€ ์ž„์˜(๋ณด์šฐ๋ ˆ์ดํŠธ๋กœ)๋กœ ์†ก์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ผ ์ƒ๊ฐํ•˜์ž

์ผ๋ฐ˜์ ์œผ๋กœ ๊ตฌํ˜„์ด ์‰ฌ์šด ๋น„๋™๊ธฐ์‹์œผ๋กœ ๋งŽ์ด ๊ตฌํ˜„ํ•œ๋‹ค.


์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ด๋ณด์ž.

์ฐธ๊ณ  CubeMX์— ๋ณด๋ฉด UART, USART ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ S๋Š” Synchronous ๋™๊ธฐ์‹ ๋ฐฉ์‹์„ ์˜๋ฏธํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ์ฐธ๊ณ ํ•˜๋ฉด UART2๋ฒˆ์ด CN8๋กœ ๋‚˜์™€์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฏธ์ง€

์ด๋ฏธ์ง€

์ด๋ฏธ์ง€

์ด๋ฏธ์ง€

๋ณดํ†ต ๋‹ค์Œ๊ณผ ๊ฐ™์€ UART ์„ค์ •์„ 8-N-115200-1๋กœ ํ‘œ๊ธฐํ•˜๊ณ 

8bit Word Length - Parity None - Baud Rate 115200 - Stop bits 1์ด๋ผ๋Š” ๋œป์ด๋‹ค.

  • Save Project
  • Project -> Generate Code

์ด๋ฏธ์ง€

Code๊ฐ€ ์ž˜ ์ƒ์„ฑ๋œ ๋ชจ์Šต


๋ฐ์ดํ„ฐ๋ฅผ ์†ก์‹ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด?

main ํ•จ์ˆ˜์—์„œ MX_USART2_UART_Init ์ดˆ๊ธฐํ™” ํ•˜๋ฉฐ ๊ทธ ๋‚ด๋ถ€๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

void MX_USART2_UART_Init(void)
{

  huart2.Instance = USART2;
  huart2.Init.BaudRate = 115200;
  huart2.Init.WordLength = UART_WORDLENGTH_8B;
  huart2.Init.StopBits = UART_STOPBITS_1;
  huart2.Init.Parity = UART_PARITY_NONE;
  huart2.Init.Mode = UART_MODE_TX_RX;
  huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  if (HAL_UART_Init(&huart2) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

}

์‹ค์ œ๋กœ UART๋ฅผ ๋ณด๋‚ด๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด?

  uint8_t a = 'a';
  while (1)
  {

  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */
	  HAL_UART_Transmit(&huart2, &a, 1, 10);

  }
  /* USER CODE END 3 */

}

HAL_UART_Transmit(&huart2, &a, 1, 10);

uart2๋ฅผ ์ด์šฉํ•˜์—ฌ a๋ผ๋Š” 1๋ฐ”์ดํŠธ์˜ ๋ฌธ์ž๋ฅผ 10ms์ด๋‚ด์— ์†ก์‹ ํ•ด๋‹ฌ๋ผ


๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ ์‹ถ๋‹ค๋ฉด?

if(HAL_UART_Receive(&huart2, &a, 1, 10) == HAL_OK)
{
    // ์ˆ˜์‹ 
}
else
{

}