STM8S - UART 테스트
SS-Type EVM 보드와 USB2UART를 이용하여 STM8S UART 테스트를 진행했다.
STM8S UART 블록도
뭐 그리 특별한것은 없고 다른 8bit MCU와 같이 간단한 레지스터 구조로 구성되어 있다. 몇가지 레지스터만 확인하면 될것 같다.
STM8S UART 송수신 함수
unsigned char U0_GetByte(void)
{
while ((UART1->SR & UART1_FLAG_RXNE) == RESET);
return UART1->DR;
}
void U0_PutByte(unsigned char Data)
{
UART1->DR = Data;
while ((UART1->SR & (u8) UART1_FLAG_TXE) == RESET);
}
STM8S UART 테스트 예제
int main( void )
{
unsigned int cnt = 0;
SystemInit();
DebugInit(BAUD_115200);
U0_PutStr("test\r\n");
Led1Init();
Led1On();
while(1)
{
Led1Toggle();
DebugPrint("%d\r\n", cnt++);
Delay(500);
}
return 0;
}
STM8S UART 인터럽트 테스트
UART 인터럽트 초기화함수로 UART1_ITConfig() 를 이요하면되고 STM32와 유사해서 코드 수정하는데 편한것 같다.
UART1_ITConfig(UART1_IT_RXNE, ENABLE);
enable();
STM8S UART 인터럽트 핸들러 함수
INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18)
{
unsigned char data;
U0_PutByte(U0_GetByte());
}