Introduction: STM32 Black Pill | Using HAL Programming to Use I2C LCD

In this tutorial, we'll use an STM32 Black Pill to program an I²C LCD on STM32CubeIDE using HAL programming.

Supplies

Hardware:

  • STM32 Black Pill
  • 16*2 I²C LCD
  • Laptop or desktop
  • USB-C cable
  • Few jumper wires

Software:

  • STM32CubeIDE
  • STM32CubeProgrammer

Step 1: Project Creation

  • Create a new STM32 project from File > New > STM32 Project
  • Select the appropriate board.

Step 2: Pinout Selection

  • Go to Connectivity > I2C1 and enable it. This will set SDA to pin 43 and SCL to pin 42.\
  • Go to System Core > RCC > HSE > Crystal/Ceramic Resonator.

Step 3: Clock Configuration

  • Configure your board's clock.
  • Save using Ctrl + S.

Step 4: Writing the Program

  • Go to the project file in project explorer, then Core > Src > main.c.
  • Inside the function int main(void) write the following program:
  HD44780_Init(2);
HD44780_Clear();
HD44780_SetCursor(0,0);
HD44780_PrintStr("Hi from Anjan");
HD44780_SetCursor(0,1);
HD44780_PrintStr("Singh");
HAL_Delay(2000);

Note: The code may vary according to your micrcontroller.

  • Save the file and debug.

Step 5: STM32CubeProgrammer

  • We will bootload STM using USB, this tutorial does not use ST-Link.
  • Next, press on "Open file" and select the .elf file from the project folder.
  • Press on "Download".


  • Go to "Erasing and Programming" from the menu in the left.
  • Go to file path and select the .elf file and press "Start automatic mode".
  • Once compiled, disconnect and reconnect the STM board.

Step 6: Result

You should see the preferred result.


Thank you.