โ๏ธ 1. UART ์ค์
๊ธฐ๋ณธ์ ์ธ UART ํต์ ์ ํด๋ง(Polling) ๋ฐฉ์์ผ๋ก ์ํํ ์ ์๋ค. ํด๋ง ๋ฐฉ์์์๋ MCU๊ฐ ๊ณ์ํด์ UART ์ํ ๋ ์ง์คํฐ๋ฅผ ํ์ธํ์ฌ ๋ฐ์ดํฐ๊ฐ ์์ ๋์๋์ง ๋๋ ์ ์ก์ด ์๋ฃ๋์๋์ง๋ฅผ ํ์ธํ๋ค. ํ์ง๋ง ํด๋ง ๋ฐฉ์์ MCU ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์๋นํ๋ฏ๋ก ๋ณดํต์ Interrut ๋ฐฉ์์ด๋ DMA ๋ฐฉ์์ ์ฃผ๋ก ์ฌ์ฉํ๋ค. ์ด๋ฒ ๊ธ์ ํด๋ง ๋ฐฉ์์ผ๋ก ๊ฐ๋จํ ๊ตฌํํ ์ ์์ผ๋ฏ๋ก ์๊ฐํด๋ณด๋ ค ํ๋ค.
์ด๋ฒ ์์ ๋ UART 1๋ฒ์ ์ฌ์ฉํ๋ค. (PA10 - UART1_RX, PA9 - UART1_TX)
์ฌ์ฉ๋ ๋ณด๋๋ STM32F103์ด๋ค.
์ค์ ์ ์๋์ ๊ฐ๋ค. ํด๋ง ๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์๋ ํ ์ด๋ธ ์ด์ธ์ ๋ณ๋๋ก ์ค์ ํ ๊ฑด ์๋ค.
Baud Rate
|
115200 Bit/s
|
World Length
|
8 Bits (including Parity)
|
Parity
|
None
|
Stop Bits
|
1
|
Data Directions
|
Receive and Transmit
|
Over Sampling
|
16 Samples
|
๐ 2. ์ฝ๋
์ด ์ฝ๋๋ ์ฌ์ฉ์๊ฐ ์ํฐ ํค๋ฅผ ๋๋ฅผ ๋๋ง๋ค ์ ๋ ฅ๋ ๋ฌธ์์ด์ ์ ์กํ๊ณ , ๊ทธ ๋ค์ ์ค๋ฐ๊ฟ ๋ฌธ์๋ฅผ ์ถ๊ฐํ์ฌ ํฐ๋ฏธ๋ ์ฐฝ์์ ์ถ๋ ฅ์ด ๊น๋ํ๊ฒ ์ค๋ฐ๊ฟ๋๋๋ก ํ๋ค.
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
uint8_t received = '\0';
HAL_StatusTypeDef rcvStat;
uint8_t enterKey = '\r';
uint8_t newLine[] = "\r\n";
#define MAX_BUFFER_SIZE 100
uint8_t inputBuffer[MAX_BUFFER_SIZE];
uint16_t bufferIndex = 0;
while (1)
{
//HAL_UART_Transmit(&huart1, buf, strlen(buf), 1000);
//HAL_Delay(1000);
rcvStat = HAL_UART_Receive(&huart1, &received, 1, 10);
if(rcvStat == HAL_OK)
{
// If received character is Enter key
if(received == enterKey)
{
// Transmit the buffered string
HAL_UART_Transmit(&huart1, inputBuffer, bufferIndex, 1000);
HAL_UART_Transmit(&huart1, newLine, 2, 1000);
// Clear the buffer
bufferIndex = 0;
}
else
{
// Store received character in buffer
if(bufferIndex < MAX_BUFFER_SIZE)
{
inputBuffer[bufferIndex++] = received;
}
}
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
- ์ํฐ ํค ์ฒ๋ฆฌ: ์์ ๋ ๋ฌธ์๊ฐ ์ํฐ ํค (\r)์ผ ๊ฒฝ์ฐ, ๋ฒํผ์ ์ ์ฅ๋ ๋ฌธ์์ด์ UART๋ก ์ ์กํ ํ, ๊ฐํ (\r\n) ๋ฌธ์๋ฅผ ์ถ๊ฐ๋ก ์ ์กํ๋ค.
- ๊ฐํ ๋ฌธ์ ์ถ๊ฐ: ๋ฌธ์์ด ๋ค์ ๊ฐํ(\r\n) ๋ฌธ์๋ฅผ ์ถ๊ฐํ์ฌ ํฐ๋ฏธ๋ ์ฐฝ์์ ์ค๋ฐ๊ฟ์ ๋ณด์ฅํ๋ค.
- ๋ฒํผ ๊ด๋ฆฌ: ๋ฌธ์์ด ์ ์ก ํ ๋ฒํผ๋ฅผ ์ด๊ธฐํํ์ฌ ๋ค์ ์ ๋ ฅ์ ๋ฐ์ ์ค๋น๋ฅผ ํ๋ค.
STM32์ FTDI์ ์ฐ๊ฒฐ์ Tx, Rx ์๋ก ์ญ์ผ๋ก ์ฐ๊ฒฐํ๊ณ VCC๋ ๋ณ๋๋ก ์ฐ๊ฒฐํ์ง ์์๋ ํต์ ์ ๋๋ค. (USB๋ก ์ ์์ด ๋ค์ด๊ฐ๋ ๋ฏ ํ๋ค.)
ํ์ง๋ง VCC๋ ์ฐ๊ฒฐํ์ง ์๋๋ผ๋ GND๋ ๋ฌด์กฐ๊ฑด ์ฐ๊ฒฐํด์ผ ํ๋ค. (๊ธฐ์ค์ ์ด ์์ด์ผ 5V, 0V๋ฅผ ๊ตฌ๋ถํ ์ ์์.)
์ด์ PC์์ ์๋ฆฌ์ผ ๋ชจ๋ํฐ๋ฅผ ํ ์ ์๋ ํ๋ก๊ทธ๋จ์ ์ค์นํด์ผ ํ๋ค. ๋ณดํต Putty๋ XShell ๋ฑ์ ๋ง์ด ์ฌ์ฉํ๋๋ฐ ๋๋ ๊ฐ์ธ์ ์ผ๋ก MobaXterm์ ์ฃผ๋ก ์ ์ฉํ๋ค.
STM32์์ ๋์ผํ๊ฒ ์ค์ ํ ๊ฒ๊ณผ ๊ฐ์ด ์๋ฆฌ์ผ ๋ชจ๋ํฐ๋ง ํ๋ก๊ทธ๋จ์์๋ ์ค์ ํ๋ค.
https://mobaxterm.mobatek.net/
๐ 3. ๊ฒฐ๊ณผ
์๋ฆฌ์ผ ๋ชจ๋ํฐ์ ๊ฐ์ด ์ ๋ ฅํ๋๋ก ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
'๐ง STM32' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[STM32] 14. ์ฝ๋ฐฑ ํจ์ ํธ์ถ ๊ณผ์ (0) | 2024.11.30 |
---|---|
[STM32] 13. UART Interrupt ๊ตฌํ (0) | 2024.11.30 |
[STM32] 11. ์๋ฆฌ์ผ ๋ชจ๋ํฐ๋ฅผ ์ํ UART ํต์ ๊ตฌํ (1) FTDI (UART To USB) (0) | 2024.11.22 |
[STM32] 10. UART, USART ๋์ ์๋ฆฌ ์ค๋ช (0) | 2024.11.22 |
[STM32] 9. Volatile ํค์๋ (0) | 2024.11.22 |