본문 바로가기

[ST_MICRO]/STM32G0

[STM32G0 SSM] Arduino - Serial1 추가 하기

STM32G031은 2개의 UART를 가지고 있다. 

UART를 하나 더 추가 해 보자

 

UART1, UART2 핀맵은 아래와 같이 할당 가능하다.

 

Aruino 폴더에서 소스 파일을 열어 보면 시리얼 클레스를 확인 할 수 있다.

\arduino\HardwareSerial.cpp
HardwareSerial::HardwareSerial(uint32_t _rx, uint32_t _tx)
{
  init(digitalPinToPinName(_rx), digitalPinToPinName(_tx));
}

HardwareSerial::HardwareSerial(PinName _rx, PinName _tx)
{
  init(_rx, _tx);
}

HardwareSerial::HardwareSerial(void *peripheral, HalfDuplexMode_t halfDuplex)
{
  // If PIN_SERIALy_RX is not defined assume half-duplex
  _serial.pin_rx = NC;
  // If Serial is defined in variant set
  // the Rx/Tx pins for com port if defined
#if defined(Serial) && defined(PIN_SERIAL_TX)
  if ((void *)this == (void *)&Serial) {
#if defined(PIN_SERIAL_RX)
    setRx(PIN_SERIAL_RX);
#endif
    setTx(PIN_SERIAL_TX);
  } else
#endif
#if defined(PIN_SERIAL1_TX) && defined(USART1_BASE)
    if (peripheral == USART1) {
#if defined(PIN_SERIAL1_RX)
      setRx(PIN_SERIAL1_RX);
#endif
      setTx(PIN_SERIAL1_TX);
    } else
#endif

 

 

여러 방법이 있겠지만 아래와 같이 설정하니 문제 없이 두개의 시리얼 포트가 동작 한다.

HardwareSerial Serial1(USART1);

void setup() {
  Serial.begin(9600);
  Serial.println("Serial Init");

  Serial1.setRx(PA3);
  Serial1.setTx(PA2);  
  Serial1.begin(115200);
  Serial1.println("Serial1 Init");
}

 

 

시리얼 핀맵을 생성자에서 세팅 하는 방법도 있다.

HardwareSerial Serial1(PA3, PA2);

void setup() {
  Serial.begin(9600);
  Serial.println("Serial Init");

  Serial1.begin(115200);
  Serial1.println("Serial1 Init");
}

 

반응형