본문 바로가기

[ST_MICRO]/STM32G4

[STM32G4-SM EVM] STM32G431 Arduino 만들기

 

 

 

ARDUINO-SM EXP 보드를 이용하여 STM32G431의 Arduino 보드를 만들어 보자

 

Arduino Board 파일은 https://github.com/stm32duino/Arduino_Core_STM32 를 사용한다.

먼저 Arduino 

https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json

 

Arduino Boards Manager 에서 Genernic STM32G4 Series를 선택한다.

 

 

Board part number를 ELAB_G431_SM 보드를 선택 한다.

Generic G431 보드파일을 수정해서 ELAB_G431SM 보드파일로 만들었다.

 

 

STM32G431 Arduino variants 파일

#define PA0                     PIN_A0
#define PA1                     PIN_A1
#define PA2                     PIN_A2
#define PA3                     PIN_A3
#define PA4                     PIN_A4
#define PA5                     PIN_A5
#define PA6                     PIN_A6
#define PA7                     PIN_A7

#ifndef PIN_SPI_MOSI
  #define PIN_SPI_MOSI          PB15
#endif
#ifndef PIN_SPI_MISO
  #define PIN_SPI_MISO          PB14
#endif
#ifndef PIN_SPI_SCK
  #define PIN_SPI_SCK           PB13
#endif

// I2C definitions
#ifndef PIN_WIRE_SDA
  #define PIN_WIRE_SDA          PB9
#endif
#ifndef PIN_WIRE_SCL
  #define PIN_WIRE_SCL          PB10
#endif

// Timer Definitions
// Use TIM6/TIM7 when possible as servo and tone don't need GPIO output pin
#ifndef TIMER_TONE
  #define TIMER_TONE            TIM6
#endif
#ifndef TIMER_SERVO
  #define TIMER_SERVO           TIM7
#endif

// UART Definitions
#ifndef SERIAL_UART_INSTANCE
  #define SERIAL_UART_INSTANCE  101
#endif

// Default pin used for generic 'Serial' instance
// Mandatory for Firmata
#ifndef PIN_SERIAL_RX
  #define PIN_SERIAL_RX         PA10
#endif
#ifndef PIN_SERIAL_TX
  #define PIN_SERIAL_TX         PA9
#endif

 


[STM32G4 SM] 보드의 기본 동작 테스트를 아래 코드로 진행하면 보드내의 LED가 깜박이는 것을 확인할 수 있다.

 

 

#define LED_PIN1        PC13
#define LED_PIN2        PC14


void setup() {
  pinMode(LED_PIN1, OUTPUT);
  pinMode(LED_PIN2, OUTPUT);

  Serial.begin(115200);
}

int cnt = 0;
int led_toggle = 0;

void loop() {
  led_toggle ^= 1;

  digitalWrite(LED_PIN1, led_toggle);
  digitalWrite(LED_PIN2, !led_toggle);

  Serial.println(cnt++);
  delay(500);
}

 

 

 

 

반응형