Demystifying Advanced Microcontrollers: STM32 and MSP430 — Pinout, Official Docs & LED Blinking Code

Table of contents
- Introduction
- Understanding Advanced Microcontrollers
- STM32 Microcontrollers
- Overview
- Pin Diagram
- Basic LED Blink Code (STM32, using HAL library in C)
- MSP430 Microcontrollers
- Overview
- Key Features
- Pin Diagram
- Basic LED Blink Code (MSP430G2553, using Code Composer Studio)
- Why Learn Both?
- Useful Official Documentation

Introduction
The evolution of embedded systems has been fueled by the advent of advanced microcontrollers like the STM32 and MSP430. Known for their low power consumption, versatile peripherals, and extensive community support, these chips form the backbone of modern IoT and industrial applications. In this comprehensive guide, we’ll explore their pin diagrams, direct you to their official documentation, and walk you through basic LED operations code—making this your one-stop introduction to each platform.
Understanding Advanced Microcontrollers
What Makes a Microcontroller "Advanced"?
Advanced microcontrollers go beyond basic 8-bit processors by offering enhanced computational power, sophisticated peripheral integration, and comprehensive development ecosystems. They typically feature:
32-bit ARM Cortex cores for superior processing capability
Rich peripheral sets including ADCs, DACs, timers, and communication interfaces
Low power consumption with multiple sleep modes
Extensive memory options with both Flash and RAM configurations
Professional development tools and comprehensive documentation
The Rise of 32-bit Microcontrollers
The transition from 8-bit to 32-bit microcontrollers represents a paradigm shift in embedded systems. While 8-bit controllers like the PIC and AVR families served well for simple applications, modern IoT devices, real-time systems, and complex embedded applications demand the computational power and peripheral richness that only 32-bit controllers can provide.
STM32 Microcontrollers
Overview
STM32, from STMicroelectronics, is a family based on ARM Cortex-M cores, known for performance, scalability, and excellent peripheral integration. STM32 chips are widely used in automation, industrial, and consumer electronics.
Pin Diagram
STM32 microcontrollers come in different packages (e.g., LQFP64, QFN32), each with its dedicated pinmap.
Key pins on a typical STM32 (e.g., STM32F103C8T6 "Blue Pill"):
Power: VDD, GND
GPIO: PA0–PA15, PB0–PB15, PC13–PC15
Special Functions: Reset, Boot0, SWDIO, SWCLK
Find your STM32 datasheet and reference manuals here:
Basic LED Blink Code (STM32, using HAL library in C)
/* STM32F103C8T6 LED Control Example */
#include "stm32f1xx_hal.h"
// Function prototypes
void SystemClock_Config(void);
void GPIO_Init(void);
void Error_Handler(void);
int main(void)
{
// Initialize HAL library
HAL_Init();
// Configure system clock
SystemClock_Config();
// Initialize GPIO
GPIO_Init();
// Main loop
while (1)
{
// Turn LED ON
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
HAL_Delay(500);
// Turn LED OFF
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
HAL_Delay(500);
}
}
void GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
// Enable GPIOC clock
__HAL_RCC_GPIOC_CLK_ENABLE();
// Configure PC13 as output
GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
// Set pin high initially (LED OFF)
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
}
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
// Configure HSI oscillator
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATIONVALUE_DEFAULT;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL16;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
// Configure system clock
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
{
Error_Handler();
}
}
void Error_Handler(void)
{
while(1);
}
MSP430 Microcontrollers
Overview
The MSP430 family from Texas Instruments is famous for ultra-low power modes, making it a favorite for battery-operated devices and sensor networks.
Key Features
Power Management: MSP430's sophisticated power management system includes multiple low-power modes (LPM0-LPM4) with fast wake-up times, making it ideal for intermittent operation scenarios.
Clock System: Flexible clock system with multiple sources including internal DCO (Digitally Controlled Oscillator), external crystals, and low-frequency watch crystals.
Interrupt System: Efficient interrupt handling with automatic context saving and fast interrupt response times.
Memory Protection: Advanced memory protection units in newer families prevent unauthorized access to critical memory regions.
Pin Diagram
MSP430 chips vary in pin count and package. Typical key pins include:
Power: VCC, GND
GPIO: P1.x, P2.x
Programming: RST, TEST
See the official pinout diagrams and docs for your specific model.
Basic LED Blink Code (MSP430G2553, using Code Composer Studio)
c#include <msp430.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
P1DIR |= BIT0; // Set P1.0 as output
while(1)
{
P1OUT ^= BIT0; // Toggle P1.0
__delay_cycles(500000);
}
}
Why Learn Both?
STM32: Performance, advanced peripherals, widespread in industry and prototyping.
MSP430: Ultra-low power, legacy in wearable and sensor applications.
Both have outstanding documentation and support communities, making them excellent choices for embedded developers at any skill level.
🧠 Development Tools You’ll Need
Microcontroller | IDE | Compiler | Debugger |
STM32 | STM32CubeIDE / Keil | GCC ARM | ST-Link/V2 |
MSP430 | Code Composer Studio | MSP-GCC | eZ-FET / LaunchPad |
Both communities have strong open-source support and documentation, so you're never stuck alone.
Useful Official Documentation
Have fun building! :)
Subscribe to my newsletter
Read articles from Ayushi Lathiya directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
