Phần 1: Chuẩn bị môi trường và công cụ lập trình STM32F103 (Keil + CubeMX + ST-Link + Kit Mini)

Trong bài đầu tiên của chuỗi hướng dẫn lập trình STM32F103 thanh ghi, chúng ta sẽ tìm hiểu toàn bộ công cụ lập trình STM32F103 – phần mềm – phần cứng cần có trước khi bắt đầu viết chương trình cho STM32. Sau bài này, bạn sẽ nắm rõ vai trò của Keil, CubeMX, ST-Link V2 và kit STM32F103 Mini, giúp bạn sẵn sàng tạo dự án đầu tiên.

Các công cụ lập trình STM32F103 (Development tools)

Keil uVision5 (IDE + compiler)

Keil C (đầy đủ là Keil µVision C hoặc Keil C Compiler for ARM / 8051 / C166) là một môi trường phát triển tích hợp (IDE)bộ công cụ biên dịch (compiler) chuyên dụng cho lập trình nhúng — tức là lập trình cho vi điều khiển (microcontroller) như ARM, 8051, hay STM32.

Công cụ lập trình STM32F103 - Phần mềm Keil C
Phần mềm Keil C- Công cụ lập trình stm32f103

Giới thiệu tổng quan Keil C

  • Tên đầy đủ: Keil µVision IDE
  • Nhà phát triển: ARM Ltd (trước đây là Keil Elektronik GmbH – Đức)
  • Ngôn ngữ hỗ trợ: C, C++, Assembly
  • Mục đích: Viết, biên dịch, mô phỏng và nạp chương trình vào vi điều khiển.

Các thành phần chính của Keil C

  • µVision IDE (Integrated Development Environment)
    → Giao diện lập trình, quản lý dự án, viết và gỡ lỗi code.
  • C Compiler (ví dụ: C51, C166, ARMCC)
    → Dịch mã C/C++ sang mã máy phù hợp với từng loại vi điều khiển.
  • Assembler
    → Biên dịch mã Assembly.
  • Linker / Locator
    → Gắn kết các tệp object (.obj) thành chương trình chạy hoàn chỉnh.
  • Debugger / Simulator
    → Cho phép chạy thử (mô phỏng) chương trình, xem giá trị thanh ghi, bộ nhớ, và debug lỗi.

Các chức năng nổi bật

  • Tự động tạo file dự án và cấu hình vi điều khiển.
  • Tích hợp mô phỏng phần cứng (simulate các chân I/O, UART, ADC…).
  • Hỗ trợ nạp chương trình trực tiếp vào vi điều khiển qua ST-Link, J-Link, hoặc USB.
  • cửa sổ xem biến, thanh ghi, bộ nhớ khi debug.
  • Tối ưu mã máy tốt cho hệ thống nhúng nhỏ gọn.

STM32CubeMX (config & code generator)

Giới thiệu STM32CubeMX

STM32CubeMXphần mềm cấu hình và sinh mã tự động (code generator) dành cho các vi điều khiển STM32 của hãng STMicroelectronics.

STM32CubeMX giúp bạn thiết lập phần cứng của STM32 bằng giao diện đồ họa (GUI) thay vì phải viết code thủ công.

Sau đó nó tự động sinh ra mã C để bạn mở trong Keil, STM32CubeIDE, IAR, hoặc Eclipse.

Công cụ lập trình stm32f103 - Phần mềm STM32CubeMX
Phần mềm STM32CubeMX – Công cụ cấu hình và gen code trong lập trình STM32F103

Chức năng chính của STM32CubeMX

Nhóm chức năngMô tả
🧠 Cấu hình vi điều khiển bằng đồ họaChọn chip STM32 hoặc board (VD: STM32F103C8, Nucleo, Discovery, v.v.), bật/tắt các chân GPIO, UART, SPI, I2C, ADC, PWM…
🧭 Tự động định tuyến chân (Pinout)Khi bạn bật một ngoại vi (ví dụ UART1), phần mềm tự gán chân tương ứng, giúp tránh trùng lặp hoặc sai chân.
⚙️ Cấu hình Clock (RCC)Dễ dàng điều chỉnh tần số hệ thống (HSE, PLL, SYSCLK…) bằng đồ họa, có hiển thị sơ đồ xung nhịp.
🧱 Cấu hình MiddlewareHỗ trợ FreeRTOS, USB, FATFS, LWIP (Ethernet), HAL driver…
🧾 Sinh mã tự động (Code Generation)Tạo ra project hoàn chỉnh có sẵn thư viện HAL, cấu hình tất cả ngoại vi.
🧰 Tích hợp Cube Firmware PackageMỗi dòng chip (F1, F4, L4, G0, H7…) có gói firmware riêng do ST cung cấp.

Các ưu điểm nổi bật

  • ✅ Tiết kiệm thời gian cấu hình phần cứng
  • ✅ Giảm lỗi nhầm chân, sai clock, sai init
  • ✅ Tự động tạo code HAL chuẩn ST
  • ✅ Hỗ trợ nhiều IDE: Keil, IAR, STM32CubeIDE, SW4STM32…
  • ✅ Giao diện trực quan, dễ học cho người mới bắt đầu

Công cụ nạp và debug trong lập trình STM32F103

ST-LINK V2

Giới thiệu ST-LINK V2

ST-Link V2bộ nạp và gỡ lỗi (programmer & debugger) do STMicroelectronics sản xuất, dùng để nạp chương trình (firmware)debug cho các vi điều khiển dòng STM32STM8.

ST-Link V2 là cầu nối giữa máy tínhvi điều khiển STM32, giúp bạn nạp code và theo dõi chương trình chạy trên chip.

ST-LINK v2 - công cụ nạp và debug trong lập trình STM32F103
ST-LINK V2: công cụ nạp và debug trong lập trình STM32F1

Các chức năng chính

Chức năngMô tả
💾 Nạp chương trình (Programming)Ghi file .hex hoặc .bin vào flash của STM32 hoặc STM8.
🧠 Gỡ lỗi (Debugging)Cho phép dừng chương trình, đặt breakpoint, xem giá trị biến, thanh ghi khi debug trong Keil hoặc CubeIDE.
⚙️ Kết nối SWD / JTAGGiao tiếp với vi điều khiển qua chuẩn SWD (Serial Wire Debug) hoặc JTAG.
🔋 Cấp nguồn cho mạchMột số bản ST-Link có thể cấp nguồn 3.3V cho bo mạch đích (target).
🧰 Hỗ trợ qua nhiều IDETích hợp tốt với Keil, STM32CubeIDE, IAR, Atollic TrueSTUDIO, v.v.

Phân loại ST-Link

LoạiMô tả
ST-Link V1Tích hợp sẵn trên board STM32 Discovery đời cũ.
ST-Link V2Dạng rời (USB dongle), phổ biến, dùng qua SWD hoặc JTAG.
ST-Link V2-1 / V3Đời mới hơn, tốc độ cao, có thêm UART, Virtual COM Port, Mass Storage.

Kết nối ST-Link V2 với vi điều khiển

Chân ST-LinkKý hiệuChức năng
1SWDIOTruyền dữ liệu (Serial Wire Data)
2SWCLKXung đồng hồ (Serial Wire Clock)
3GNDMass (nối đất)
43.3VNguồn cấp (chỉ dùng để nhận mức logic hoặc cấp nguồn nhẹ)
5NRST (tùy chọn)Reset MCU khi nạp code
6SWO (tùy chọn)Truyền dữ liệu debug tốc độ cao

 

Lưu ý:

  • Nếu mạch STM32 đã có nguồn riêng, không cần nối 3.3V từ ST-Link.
  • Chỉ cần nối GND, SWDIO, SWCLK, (và NRST nếu muốn reset tự động).

Phần mềm hỗ trợ ST-Link

Phần mềmMục đích
STM32 ST-Link Utility (cũ)Nạp file .hex, .bin, xóa flash, xem bộ nhớ.
STM32CubeProgrammer (CubeProg) (mới, chính thức)Hỗ trợ STM32 tất cả dòng, có giao diện đồ họa và dòng lệnh (CLI).
STM32CubeIDE / KeilDebug trực tiếp qua ST-Link trong khi lập trình.

Cách nạp chương trình cơ bản

✅ Cách 1: Qua CubeProgrammer

  1. Cắm ST-Link vào máy tính.
  2. Mở STM32CubeProgrammer.
  3. Chọn ST-LINK → “Connect”.
  4. Mở file .hex hoặc .bin.
  5. Nhấn Download để nạp code vào STM32.

✅ Cách 2: Qua Keil hoặc CubeIDE

  • Khi build xong code, bấm Download → IDE sẽ tự động dùng ST-Link nạp code vào chip.
  • Có thể Debug (F5) để chạy từng bước, xem biến, đặt breakpoint…

Đèn báo

Màu đènÝ nghĩa
🔴 Đỏ sángĐã cấp nguồn, đang chờ kết nối
🔵 Xanh / Cam nhấp nháyĐang truyền dữ liệu, nạp code hoặc debug

So sánh ST-Link với các công cụ khác

Công cụHãngHỗ trợ chipTốc độGhi chú
ST-Link V2STMicroSTM32, STM8Trung bình–nhanhPhổ biến, rẻ, ổn định
J-LinkSeggerHầu hết ARM Cortex-MRất nhanhChuyên nghiệp, đắt hơn
DAP-LinkARM / Open SourceARM Cortex-MNhanhCó thể tự làm
USB-UARTNhiều hãngChỉ nạp qua BootloaderChậmKhông debug được

Ưu điểm của ST-Link V2

✅ Giá rẻ (~100–200k cho bản clone, vài trăm cho bản chính hãng)
✅ Hoạt động ổn định, dễ dùng
✅ Tương thích rộng với các IDE phổ biến
✅ Có thể nạp và debug – hai chức năng trong một

Lưu ý khi sử dụng

  • Đừng cấp 3.3V từ ST-Link nếu mạch đã có nguồn riêng.
  • Kiểm tra đúng chân SWDIO / SWCLK (nhiều người mới hay nối nhầm).
  • Một số bản clone giá rẻ có thể lỗi hoặc không nhận trong CubeProgrammer – nên dùng bản tốt (gắn chip STM32F103 thật).

Kit phát triển STM32F103RCT6 ARM Cortex-M3 Mini

Tổng quan về STM32F103RCT6 Mini Board

STM32F103RCT6vi điều khiển 32-bit thuộc dòng STM32F1 series, lõi ARM Cortex-M3, hoạt động ở tần số 72 MHz.

Kit “Mini” là phiên bản thu gọn của bo phát triển, tích hợp đủ ngoại vi cơ bản, phù hợp cho học tập, nghiên cứu và dự án nhúng nhỏ.

Công cụ lập trình STM32F103 - Kit STM32F103RC mini
Board STM32F103RC mini

Thông số kỹ thuật chính của vi điều khiển STM32F103RCT6

Thuộc tínhGiá trị
CPU CoreARM Cortex-M3 32-bit
Tần số hoạt động72 MHz
Flash256 KB
SRAM48 KB
Điện áp hoạt động2.0V – 3.6V
Số chân GPIO51 I/O (tùy package)
Timer4 bộ định thời (Timer 1–4)
ADC2 ADC 12-bit (tối đa 16 kênh)
DAC2 kênh 12-bit
Giao tiếpUSART, SPI, I2C, CAN, USB 2.0 Full-Speed
PWMCó (qua Timer)
WatchdogCó (IWDG, WWDG)

Đặc điểm của Kit phát triển STM32F103RCT6 Mini

Thành phầnMô tả
🔲 Chip chínhSTM32F103RCT6 gắn sẵn (LQFP64)
🔌 Nguồn cấp5V từ USB hoặc 3.3V từ ST-Link / ngoài
🧱 Cổng USB mini / microDùng nạp chương trình (khi có bootloader) hoặc cấp nguồn
🔹 Chân SWDKết nối với ST-Link V2 để nạp & debug
🔸 LEDLED báo nguồn (PWR) và LED test (thường nối với PC13)
🔹 Nút nhấn (KEY)Một nút người dùng (USER) và nút RESET
🔧 Header GPIOToàn bộ chân I/O được đưa ra dạng hàng pin 2.54mm
🔗 Giao tiếpUART, SPI, I2C, CAN, USB có thể kết nối ra ngoài
Thạch anh8 MHz (HSE) + 32.768 kHz (RTC)

Ưu điểm của STM32F103RCT6 Mini Board

✅ Gọn nhẹ, giá rẻ (~200–300k VNĐ)
✅ Tích hợp đủ ngoại vi cơ bản cho học tập
✅ Tương thích hoàn toàn với Keil, STM32CubeIDE, STM32CubeMX
✅ Có SWD interface hỗ trợ nạp nhanh qua ST-Link V2
✅ Có thể mở rộng ra module cảm biến, LCD, servo, UART, SPI, I2C…

Công cụ cần thiết để lập trình

Thành phầnVai trò
ST-Link V2Dùng để nạp & debug chương trình qua SWD
STM32CubeMXCấu hình ngoại vi và sinh code HAL
Keil uVision5 hoặc STM32CubeIDEViết, biên dịch và nạp code
STM32CubeProgrammerNạp file .hex / .bin thủ công

Nguồn cấp và bảo vệ

  • Board có thể cấp nguồn từ:
    • Cổng USB 5V,
    • Hoặc từ ST-Link (3.3V),
    • Hoặc nguồn ngoài (3.3V hoặc 5V) qua chân header.
    • IC ổn áp AMS1117-3.3V để chuyển 5V sang 3.3V.

Reference:

 

Viết một bình luận

This site uses Akismet to reduce spam. Learn how your comment data is processed.