Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Component Documentation

How to Use STM32: Examples, Pinouts, and Specs

Image of STM32
Cirkit Designer LogoDesign with STM32 in Cirkit Designer

Introduction

The STM32F103C8 is a 32-bit microcontroller from STMicroelectronics, based on the ARM Cortex-M3 architecture. It is part of the STM32 family, known for its high performance, low power consumption, and extensive peripheral set. This microcontroller is widely used in embedded systems, IoT devices, robotics, and industrial automation due to its versatility and cost-effectiveness.

Explore Projects Built with STM32

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
STM32F103C8T6-Based Spectral Sensor with ST7735S Display and Pushbutton Control
Image of ColorSensor: A project utilizing STM32 in a practical application
This circuit features an STM32F103C8T6 microcontroller interfaced with a China ST7735S 160x128 display and two spectral sensors (Adafruit AS7262 and AS7261). It also includes two pushbuttons for user input, with the microcontroller managing the display and sensor data processing.
Cirkit Designer LogoOpen Project in Cirkit Designer
STM32H7-Based Multi-Sensor Monitoring System with GSM Alert and LCD Display
Image of medical: A project utilizing STM32 in a practical application
This circuit is centered around an STM32H7 microcontroller, which interfaces with a variety of sensors including a DHT11 temperature and humidity sensor, a DS3231 real-time clock, an MQ-2 smoke detector, an IR sensor, a MAX30102 pulse oximeter, and a body temperature sensor. It also includes a GSM module for communication, an LCD display for output, multiple pushbuttons for input, a buzzer, and a speaker for audio signaling. The microcontroller's embedded code suggests that it is programmed to periodically read from the sensors, handle button inputs, update the LCD display, and potentially send alerts via the GSM module.
Cirkit Designer LogoOpen Project in Cirkit Designer
STM32F103C8T6 Microcontroller-Based Motor Control System with RS485 Communication
Image of ROBOCON_TASK 1 SCHME DIAGRAM: A project utilizing STM32 in a practical application
This circuit is designed to control LEDs, a DC motor, and a servo motor using an STM32F103C8T6 microcontroller. It includes a motor driver for the DC motor, a voltage regulator for stable power supply, and an RS485 to USB converter for communication. User inputs can be provided through pushbuttons, and a potentiometer allows for variable analog input.
Cirkit Designer LogoOpen Project in Cirkit Designer
STM32 Nucleo F303RE Controlled Ultrasonic Sensing with RGB Feedback and I2C LCD Display
Image of CS435-final: A project utilizing STM32 in a practical application
This circuit features a STM32 Nucleo F303RE microcontroller interfaced with three HC-SR04 ultrasonic sensors for distance measurement and a 20x4 LCD display over I2C for data output. Additionally, there is a WS2812 RGB LED strip controlled by the microcontroller for visual feedback. The power supply provides a common 5V to the LCD, ultrasonic sensors, LED strip, and the microcontroller's +5V input, with all components sharing a common ground.
Cirkit Designer LogoOpen Project in Cirkit Designer

Explore Projects Built with STM32

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Image of ColorSensor: A project utilizing STM32 in a practical application
STM32F103C8T6-Based Spectral Sensor with ST7735S Display and Pushbutton Control
This circuit features an STM32F103C8T6 microcontroller interfaced with a China ST7735S 160x128 display and two spectral sensors (Adafruit AS7262 and AS7261). It also includes two pushbuttons for user input, with the microcontroller managing the display and sensor data processing.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of medical: A project utilizing STM32 in a practical application
STM32H7-Based Multi-Sensor Monitoring System with GSM Alert and LCD Display
This circuit is centered around an STM32H7 microcontroller, which interfaces with a variety of sensors including a DHT11 temperature and humidity sensor, a DS3231 real-time clock, an MQ-2 smoke detector, an IR sensor, a MAX30102 pulse oximeter, and a body temperature sensor. It also includes a GSM module for communication, an LCD display for output, multiple pushbuttons for input, a buzzer, and a speaker for audio signaling. The microcontroller's embedded code suggests that it is programmed to periodically read from the sensors, handle button inputs, update the LCD display, and potentially send alerts via the GSM module.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of ROBOCON_TASK 1 SCHME DIAGRAM: A project utilizing STM32 in a practical application
STM32F103C8T6 Microcontroller-Based Motor Control System with RS485 Communication
This circuit is designed to control LEDs, a DC motor, and a servo motor using an STM32F103C8T6 microcontroller. It includes a motor driver for the DC motor, a voltage regulator for stable power supply, and an RS485 to USB converter for communication. User inputs can be provided through pushbuttons, and a potentiometer allows for variable analog input.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of CS435-final: A project utilizing STM32 in a practical application
STM32 Nucleo F303RE Controlled Ultrasonic Sensing with RGB Feedback and I2C LCD Display
This circuit features a STM32 Nucleo F303RE microcontroller interfaced with three HC-SR04 ultrasonic sensors for distance measurement and a 20x4 LCD display over I2C for data output. Additionally, there is a WS2812 RGB LED strip controlled by the microcontroller for visual feedback. The power supply provides a common 5V to the LCD, ultrasonic sensors, LED strip, and the microcontroller's +5V input, with all components sharing a common ground.
Cirkit Designer LogoOpen Project in Cirkit Designer

Common Applications

  • IoT devices and smart home systems
  • Motor control and robotics
  • Industrial automation and control systems
  • Wearable devices
  • Data acquisition and signal processing
  • Prototyping and educational projects

Technical Specifications

The STM32F103C8 microcontroller offers a balance of performance and power efficiency, making it suitable for a wide range of applications. Below are its key technical specifications:

Parameter Value
Core Architecture ARM Cortex-M3
CPU Frequency Up to 72 MHz
Flash Memory 64 KB
SRAM 20 KB
Operating Voltage 2.0V to 3.6V
GPIO Pins Up to 37
Communication Interfaces USART, SPI, I2C, CAN, USB
Timers 3 general-purpose, 1 advanced-control
ADC 12-bit, up to 16 channels
PWM Outputs Available on multiple pins
Power Consumption Low-power modes supported
Package LQFP48 (48-pin)

Pin Configuration

The STM32F103C8 comes in an LQFP48 package with 48 pins. Below is a summary of the pin configuration:

Pin Number Pin Name Function
1 VDD Power Supply (2.0V to 3.6V)
2 VSS Ground
3 PA0 GPIO/ADC/EXTI
4 PA1 GPIO/ADC/USART2_TX
5 PA2 GPIO/ADC/USART2_RX
... ... ...
48 NRST Reset Pin

For the complete pinout, refer to the STM32F103C8 datasheet.

Usage Instructions

The STM32F103C8 can be used in a variety of embedded applications. Below are the steps and best practices for using this microcontroller in a circuit:

Basic Circuit Setup

  1. Power Supply: Connect the VDD pin to a 3.3V power source and the VSS pin to ground.
  2. Reset Pin: Connect the NRST pin to a pull-up resistor (typically 10kΩ) to ensure proper reset functionality.
  3. Clock Source: Use an external 8 MHz crystal oscillator connected to the OSC_IN and OSC_OUT pins for accurate timing.
  4. Programming Interface: Use the SWD (Serial Wire Debug) interface for programming and debugging. Connect the SWDIO and SWCLK pins to a compatible programmer (e.g., ST-Link).

Example: Blinking an LED

Below is an example of how to blink an LED using the STM32F103C8 with an Arduino IDE setup:

Code Example

// Include the STM32 HAL library
#include <Arduino.h>

// Define the LED pin (e.g., PA5 on the STM32F103C8)
#define LED_PIN PA5

void setup() {
  // Initialize the LED pin as an output
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  // Turn the LED on
  digitalWrite(LED_PIN, HIGH);
  delay(500); // Wait for 500 milliseconds

  // Turn the LED off
  digitalWrite(LED_PIN, LOW);
  delay(500); // Wait for 500 milliseconds
}

Important Considerations

  • Voltage Levels: Ensure all connected peripherals operate within the STM32F103C8's voltage range (2.0V to 3.6V).
  • Decoupling Capacitors: Place decoupling capacitors (e.g., 0.1 µF) close to the VDD and VSS pins to stabilize the power supply.
  • Boot Modes: Configure the BOOT0 and BOOT1 pins to select the desired boot mode (e.g., flash memory or system memory).
  • Programming Tools: Use ST-Link or other compatible programmers for flashing firmware.

Troubleshooting and FAQs

Common Issues

  1. Microcontroller Not Responding

    • Cause: Incorrect power supply or missing decoupling capacitors.
    • Solution: Verify the power supply voltage and ensure proper decoupling capacitors are in place.
  2. Unable to Program the Microcontroller

    • Cause: Incorrect SWD connections or boot mode configuration.
    • Solution: Check the SWDIO and SWCLK connections and ensure the BOOT0 pin is set to the correct mode.
  3. Peripheral Not Working

    • Cause: Incorrect pin configuration or initialization in the code.
    • Solution: Double-check the pin assignments and ensure the peripheral is properly initialized in the firmware.

FAQs

Q: Can I use the STM32F103C8 with the Arduino IDE?
A: Yes, the STM32F103C8 is compatible with the Arduino IDE. Install the STM32 core for Arduino to get started.

Q: What is the maximum clock speed of the STM32F103C8?
A: The maximum clock speed is 72 MHz.

Q: Does the STM32F103C8 support USB communication?
A: Yes, it has a built-in USB peripheral for communication.

Q: How do I select the boot mode?
A: Configure the BOOT0 and BOOT1 pins to select between flash memory, system memory, or SRAM boot modes.

By following this documentation, users can effectively utilize the STM32F103C8 microcontroller in their projects. For more detailed information, refer to the official datasheet and reference manual from STMicroelectronics.