STM32 Beginner Guide P1: STM32 là gì? Chọn board nào để bắt đầu?
Tìm hiểu STM32, phân biệt chip, module và development board, rồi chọn một board phù hợp để học GPIO, HAL, STM32CubeIDE và firmware nhúng từ những bước đầu tiên.
Chia sẻ

Nếu bạn mới chuyển từ Arduino hoặc ESP32 sang STM32, điều gây bối rối đầu tiên thường không phải là code. Đó là danh sách tên trên trang bán hàng: STM32F103C8T6, STM32G0, Nucleo, Discovery, Blue Pill, Black Pill, STM32CubeIDE, HAL, LL…
Mình từng nghĩ chỉ cần thấy chữ STM32 là có thể làm theo cùng một tutorial. Thực tế, hai board cùng mang tên STM32 có thể khác vi điều khiển, chân GPIO, debugger và cách cấp nguồn. Chọn nhầm board ngay từ đầu khiến những lỗi rất nhỏ trở nên khó hiểu.
Đây là STM32 Beginner Guide, series đi từ board đầu tiên đến GPIO, timer, UART, I2C, SPI và một ứng dụng firmware hoàn chỉnh. Trong P1, mình sẽ giúp bạn trả lời ba câu hỏi:
- STM32 thực sự là gì?
- Chip, module và development board khác nhau thế nào?
- Người mới nên mua board nào để học mà không tự làm khó mình?
STM32 là gì?

Với bài đầu tiên, một board có ST-LINK tích hợp và vài linh kiện cơ bản là đủ để bắt đầu.
STM32 là họ vi điều khiển do STMicroelectronics phát triển. Phần lớn các dòng STM32 dùng lõi Arm Cortex-M, có GPIO, timer, ADC, UART, SPI, I2C và nhiều peripheral khác tích hợp trong một con chip.
Điểm mạnh của STM32 không nằm ở một tính năng duy nhất. Nó nằm ở độ rộng của hệ sinh thái: từ dòng giá thấp cho bài học cơ bản đến dòng hiệu năng cao, tiết kiệm điện, wireless hoặc có peripheral chuyên dụng cho sản phẩm thực tế.
Một số họ bạn sẽ thường gặp:
- STM32F0/F1/G0: dòng mainstream, phù hợp để học nền tảng và làm các thiết bị điều khiển thông thường.
- STM32F4/G4: nhiều tài nguyên và peripheral hơn, phù hợp với ứng dụng cần hiệu năng hoặc xử lý tín hiệu tốt hơn.
- STM32L0/L4/U0/U5: ưu tiên tiết kiệm năng lượng cho thiết bị chạy pin.
- STM32H5/H7: hiệu năng cao, nhưng không phải điểm bắt đầu dễ nhất cho người mới.
- STM32WB/WBA/WL: các dòng có kết nối không dây tích hợp hoặc hướng đến ứng dụng wireless.
Bạn không cần học thuộc tất cả các họ này trước khi mua board. Điều cần nhớ là STM32 là một họ sản phẩm, không phải tên của một board duy nhất.
Chip, module và development board khác nhau thế nào?

Chip, module và development board là ba cấp phần cứng khác nhau, dù người bán đôi khi gọi chung là board STM32.
Đây là phần nên phân biệt ngay từ đầu:
| Thành phần | Bạn sẽ thấy gì | Dùng khi nào |
|---|---|---|
| MCU/chip | IC vuông nhỏ, cần mạch nguồn, clock, reset và đường nạp riêng | Thiết kế sản phẩm và PCB riêng |
| Module | Một PCB nhỏ đã tích hợp MCU cùng một phần mạch hỗ trợ | Thiết kế nhanh hơn khi cần module chức năng |
| Development board | MCU/module, regulator, header, nút nhấn và thường có debugger | Học, thử code và làm prototype |
Với người mới, lựa chọn an toàn thường là development board đã có debugger trên board. Bạn cắm USB, mở project, build và debug mà chưa phải tự thiết kế mạch nạp hoặc đoán chân SWD.
Vì sao mình ưu tiên board Nucleo cho bài đầu tiên?
Board Nucleo của ST có một điểm rất thực tế: nhiều board tích hợp ST-LINK. Đây là mạch dùng để nạp firmware và debug chip STM32 qua SWD; nhiều board còn đưa virtual COM port ra máy tính.
Điều đó giúp bạn làm được những việc quan trọng ngay từ đầu:
- Nạp code mà không cần mua ST-LINK riêng.
- Đặt breakpoint và xem biến khi debug.
- Đọc log qua cổng serial trên một số board.
- Có schematic, user manual và example chính thức để đối chiếu.
- Cắm thêm shield hoặc mạch thử qua header Arduino-compatible trên nhiều mẫu Nucleo.
Trong series này, mình chọn NUCLEO-G071RB làm board tham chiếu cho các ví dụ nền tảng. Đây không phải board duy nhất có thể dùng, nhưng nó đủ gần gũi với người mới, có tài liệu chính thức và xuất hiện trong khóa học STM32CubeIDE của ST.
Khi mua, hãy kiểm tra đúng mã board. NUCLEO-G071RB, NUCLEO-F401RE và NUCLEO-G431RB không phải những phiên bản chỉ khác tên; chúng dùng các MCU và peripheral khác nhau.
Ba lựa chọn thực tế cho người mới

Board dễ học nhất chưa chắc là board rẻ nhất; tài liệu, debug và pinout rõ ràng quan trọng hơn.
1. NUCLEO-G071RB: lựa chọn mình khuyên dùng để học
Nếu bạn chưa có board và muốn học firmware một cách có hệ thống, mình sẽ bắt đầu với NUCLEO-G071RB hoặc một board Nucleo tương đương có ST-LINK tích hợp.
Bạn có thể học GPIO, interrupt, timer, PWM, ADC, UART, I2C và SPI mà không cần bổ sung quá nhiều phần cứng. Board lớn hơn các board giá rẻ kiểu Blue Pill, nhưng đó lại là ưu điểm khi đang học: chân dễ đọc, dễ đo và ít phải đoán.
Đổi lại, Nucleo thường đắt hơn board clone. Nhưng khoản chênh lệch đó mua cho bạn tài liệu rõ ràng, debugger tích hợp và ít thời gian xử lý những lỗi không liên quan đến bài học.
2. NUCLEO-F401RE: lựa chọn phổ biến trong nhiều tutorial
NUCLEO-F401RE dựa trên STM32F401RE và có hệ sinh thái example rất rộng. Nếu khóa học hoặc project bạn theo đã dùng F4, đây là lựa chọn hợp lý.
F4 không phải lúc nào cũng cần thiết cho Blink hay UART. Tuy vậy, tài liệu và project mẫu phong phú khiến nó vẫn là một board học tập tốt. Bạn chỉ cần nhớ rằng code sinh ra cho F401RE không thể mặc định chạy trên G071RB nếu peripheral, clock hoặc pin mapping khác nhau.
3. STM32F103C8T6 Blue Pill: rẻ và phổ biến, nhưng cần chủ động hơn
Blue Pill rất phổ biến vì rẻ, nhỏ và có nhiều tutorial. Nó phù hợp để tìm hiểu một mạch STM32 tối giản, nhưng mình không chọn nó làm board đầu tiên nếu mục tiêu là học debug và quy trình phát triển giống sản phẩm.
Board clone có thể khác chất lượng regulator, USB connector, bootloader và cách bố trí chân. Nhiều board cũng không có ST-LINK tích hợp, nên bạn sẽ cần ST-LINK V2 hoặc một phương pháp nạp khác.
Blue Pill vẫn đáng mua nếu bạn đã hiểu SWD, biết kiểm tra schematic và muốn một board nhỏ cho prototype. Đừng mua chỉ vì nó là lựa chọn rẻ nhất trong kết quả tìm kiếm.
STM32CubeIDE, CubeMX, HAL và LL là gì?
Đây là bốn cái tên bạn sẽ gặp liên tục:
| Thành phần | Vai trò dễ hiểu |
|---|---|
| STM32CubeIDE | IDE để tạo, build, flash và debug project STM32 |
| STM32CubeMX | Công cụ cấu hình MCU, clock, pin và peripheral rồi sinh code khởi tạo |
| HAL | API ở mức trừu tượng cao hơn, giúp code dễ đọc và dễ chuyển giữa một số dòng STM32 |
| LL | API gần phần cứng hơn, nhẹ hơn và cho phép kiểm soát chi tiết hơn |
Với series beginner, mình sẽ bắt đầu bằng CubeMX + HAL. Điều đó không có nghĩa bạn nên phụ thuộc mù quáng vào code sinh tự động. Khi project được tạo, hãy tập thói quen nhìn vào main.c, gpio.c, usart.c, clock configuration và các vùng USER CODE để hiểu công cụ đang làm gì.
Sau khi nền tảng vững hơn, bạn có thể học LL hoặc register-level. Nhưng việc bắt đầu bằng register ngay trong bài đầu tiên thường làm người mới phải giải quyết quá nhiều vấn đề cùng lúc: clock, startup code, linker script, toolchain và peripheral.
Bộ phần cứng tối thiểu
Bạn chưa cần mua cả hộp sensor. Một bộ nhỏ, dễ kiểm tra sẽ hữu ích hơn:
- Một board Nucleo có ST-LINK tích hợp, ví dụ NUCLEO-G071RB.
- Cáp USB có truyền data, đúng đầu nối của board.
- Breadboard và dây Dupont.
- LED rời, điện trở khoảng 220–1.000 Ω và nút nhấn.
- Một cảm biến I2C phổ biến như BME280 hoặc SHT30.
- Multimeter cơ bản.
Trước khi nối cảm biến, hãy cắm riêng board vào máy tính và kiểm tra ba thứ: máy có nhận ST-LINK không, board có được cấp nguồn không, và mã board trên project có đúng với con chip thật không.
Checklist trước khi mua board STM32
Mình thường kiểm tra các điểm sau:
- Mã MCU chính xác: ví dụ STM32G071RB hoặc STM32F401RE, không chỉ ghi “STM32 board”.
- Board có debugger tích hợp không: Nucleo thường có ST-LINK; Blue Pill thường không.
- Schematic và user manual: phải có tài liệu từ ST hoặc nhà sản xuất rõ ràng.
- Chân cấp nguồn: kiểm tra USB, 5V, 3V3 và GND trước khi cắm mạch ngoài.
- LED và nút nhấn onboard: xem chúng nối vào GPIO nào để tránh dùng trùng.
- Header đã hàn chưa: nhiều board được bán ở trạng thái chưa hàn chân.
- Tên board trong CubeMX: chọn đúng part number, không chọn một board gần giống chỉ vì tên ngắn hơn.
- Nguồn example: ưu tiên project từ ST hoặc repository có license rõ ràng.
Nếu listing không có schematic, pinout hoặc mã chip nhìn được trên board, mình sẽ bỏ qua. Một board rẻ nhưng không xác định được revision thường tốn nhiều thời gian hơn số tiền tiết kiệm được.
Kết luận: chọn board dễ debug trước, chọn board nhỏ sau
STM32 có rất nhiều lựa chọn, nhưng bạn không cần bắt đầu bằng lựa chọn phức tạp nhất. Nếu chưa có yêu cầu đặc biệt, NUCLEO-G071RB là điểm bắt đầu cân bằng: có ST-LINK, tài liệu rõ và đủ peripheral cho nhiều bài học cơ bản.
Chọn NUCLEO-F401RE nếu tutorial hoặc project của bạn đã nhắm tới dòng F4. Chọn Blue Pill khi bạn muốn một board rẻ, nhỏ và sẵn sàng tự xử lý phần debug, bootloader và khác biệt giữa các bản clone.
Ở P2, mình sẽ tạo project STM32 đầu tiên bằng STM32CubeIDE: chọn đúng MCU, cấu hình clock và GPIO, build, nạp firmware qua ST-LINK rồi kiểm tra LED nhấp nháy. Mục tiêu không chỉ là làm cho LED sáng, mà là hiểu được một project STM32 bắt đầu từ đâu.
Tham khảo và mã nguồn mở
- STMicroelectronics/STM32Cube_MCU_Overall_Offer — bản đồ các repository STM32Cube chính thức trên GitHub.
- STMicroelectronics/STM32CubeG0 — firmware package, driver và project mẫu cho STM32G0.
- STM32CubeIDE basics MOOC — khóa học chính thức của ST, dùng NUCLEO-G071RB để minh họa.
- STM32CubeIDE quick start guide — hướng dẫn bắt đầu với IDE.
- STM32-base/STM32-base-STM32Cube — repository cộng đồng đóng gói CMSIS và HAL chính thức để tham khảo.
Chia sẻ
Tiếp tục khám phá
Đọc tiếp
Bài viết liên quan
ESP32 Memory Management Deep Dive: SRAM, PSRAM, Heap và Stack FreeRTOS
Bài hướng dẫn thực tế về layout SRAM, cách dùng PSRAM, phân mảnh heap, cấp phát stack cho task FreeRTOS và các mẹo tối ưu bộ nhớ hữu ích trong firmware ESP32.
ESP32 Beginner Guide – P2: Cài đặt và nạp code đầu tiên
Cài Arduino IDE, thêm Arduino-ESP32, chọn đúng board và Port, nạp sketch đầu tiên rồi xử lý lỗi Failed to connect trên ESP32, ESP32-C3 và ESP32-S3.
nRF52840 BLE Wearables: Cách Xây Thiết Bị Đeo Tay
Hướng dẫn thực tế để bắt đầu dự án wearable với nRF52840 và BLE: chọn phần cứng, thiết kế GATT, dùng Zephyr và đo pin đúng cách.