안녕하세요. 오늘은 Terminal 프로그램을 연결/미연결했을때 구분하는법을 알아보겠습니다.
사용하는 Terminal 프로그램은 Teraterm입니다.
연결 시 , 미연결 시 아래와 같이 커맨드가 옵니다.
차이점을보면 세번째 바이트가 연결 시 0x03, 미연결 시 0x02입니다.
두번째 바이트의 0x22는 LINE STATE를 의미합니다.
세번째 바이트의 0번째비트는 DTR, 1번째 비트는 RTS를 의미합니다.
이 중에서 DTR이 연결/미연결을 알 수 있는 비트입니다.
STM32에서 이 신호는 3편 라인코딩때와 마찬가지로 CDC_Control_FS함수에서 구분이 가능합니다.
이때 pubf는 USBD_SetupReqTypedef의 주소를 가지고있어서 req->wValue를 하면 세번째 바이트를 얻을 수 있습니다.
case CDC_SET_CONTROL_LINE_STATE:
USBD_SetupReqTypedef *req = (USBD_SetupReqTypedef *)pbuf;
uint16_t wValue = req->wValue;
char dtr = wValue & 0x01; // Bit 0: DTR
// DTR LED (PA10)
if (dtr)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10, GPIO_PIN_SET); // LED ON
}
else
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10, GPIO_PIN_RESET); // LED OFF
}
break;
이렇게되면 teraterm을 연결/연결해제 할때마다 LED로 구분이 가능하게 됩니다.
소스코드(Commits: Line state update)
https://github.com/yhunterr/STM32_USBtoUART
다음 시간에는 pcb를 제작하여보겠습니다.
'STM32 > STM32_USBtoUART' 카테고리의 다른 글
STM32로 USB to UART 모듈 만들기 6편(보드테스트,LED추가) (0) | 2025.07.04 |
---|---|
STM32로 USB to UART 모듈 만들기 5편(회로도,아트웍) (0) | 2025.06.24 |
STM32로 USB to UART 모듈 만들기 3편(FW-라인코딩) (2) | 2025.06.14 |
STM32로 USB to UART 모듈 만들기 2편(FW-기본통신) (1) | 2025.06.10 |
STM32로 USB to UART 모듈 만들기 1편(기본 소개) (0) | 2025.06.06 |