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
{
}