Chuyển đến nội dung
AIOTAIOT
  • Trang chủ
  • Giới thiệu
  • Tin tức
  • Sản phẩm
  • Giải pháp
    • Chấm công bằng Face ID
    • Thiết bị đọc căn cước
    • IoT trong giáo dục
    • IoT trong quản lý năng lượng
    • IoT trong y tế
  • Đào tạo
    • Khóa đào tạo cơ bản
      • Cảm biến
      • Hệ thống nhúng
      • LabVIEW FPGA
      • Phần cứng máy tính & Truyền thông công nghiệp
      • FPGA cơ bản
    • Khóa đào tạo nâng cao
      • LabVIEW FPGA High Performance
    • Tài liệu
  • PCCC
  • Liên hệ
  • icon
    097 186 8316    |    0839 799 889
Đào tạo, Hệ thống nhúng, Khóa đào tạo cơ bản

[Embedded Series – Bài 28] Tổng Ôn Kiến Thức Hệ Thống Nhúng & STM32 (Phần 1)

Đã đăng trên 20/05/202628/04/2026 bởi ThaoNguyen
20
Th5

Chào mừng các bạn đến với buổi tổng kết kiến thức quan trọng nhất của giai đoạn 1! Bài viết này không chỉ là một bản tóm tắt, mà là một tài liệu review chi tiết và chuyên sâu, hệ thống lại toàn bộ nền tảng từ kiến trúc máy tính đến kỹ thuật điều khiển GPIO trên STM32. Đây là những kiến thức “sống còn” giúp bạn vượt qua kỳ thi MOCK 1 và xây dựng nền móng vững chắc cho sự nghiệp kỹ sư nhúng chuyên nghiệp.

🎯 Nội dung ôn tập trọng tâm

  • Định nghĩa và đặc tính Embedded Systems.
  • Phân tích sâu Address Bus & Data Bus.
  • Kiến trúc Von Neumann vs Harvard.
  • Tập lệnh RISC (ARM) vs CISC (x86).
  • Đặc trưng của ISA (Instruction Set Architecture).
  • Cấu hình PORT & Thuộc tính Pin.
  • Cơ chế Trở treo (Pull-up/Pull-down).
  • Bản chất 3 tầng của từ khóa volatile.
  • Logic bắt sườn nút nhấn & Debounce.

I. KIẾN TRÚC MÁY TÍNH VÀ HỆ THỐNG NHÚNG CHUYÊN SÂU

1. Hệ thống nhúng (Embedded System) là gì?

Hệ thống nhúng không đơn thuần là một bộ vi điều khiển. Đó là một hệ thống xử lý thông tin chuyên dụng, kết hợp chặt chẽ giữa Phần cứng (Hardware) và Phần mềm (Software) để thực hiện một nhóm nhiệm vụ cụ thể trong thời gian thực.

  • Tính chuyên dụng: Khác với PC có thể cài hàng triệu App, hệ thống nhúng chỉ chạy một chương trình cố định suốt đời (ví dụ: bộ điều khiển phanh ABS).
  • Ràng buộc tài nguyên: Bị giới hạn khắt khe về bộ nhớ (KB/MB), tốc độ xử lý (MHz) và năng lượng tiêu thụ (Pin).
  • Tính thời gian thực (Real-time): Phản hồi phải diễn ra trong một khoảng thời gian xác định (Deadline).

2. Hệ thống Bus: Xương sống của thông tin

  • Address Bus (Bus địa chỉ): Quyết định không gian bộ nhớ mà CPU có thể quản lý.
    • Trên STM32 (32-bit): $2^{32}$ địa chỉ $\approx$ 4 Gigabytes.
    • Trên PC (64-bit): $2^{64}$ địa chỉ $\approx$ 18.4 Exabytes.
  • Data Bus (Bus dữ liệu): Quyết định lượng dữ liệu truyền đi trong một nhịp xung nhịp. Bus càng rộng, hiệu năng tính toán càng cao.

3. So sánh Kiến trúc Von Neumann và Harvard

Đặc điểm Von Neumann Harvard (ARM Cortex-M)
Cấu tạo Bus Dùng chung 1 bus cho Code và Data. Tách biệt bus Code và bus Data.
Tốc độ Chậm do hiện tượng “nghẽn cổ chai”. Nhanh vì có thể đọc lệnh và dữ liệu song song.
Độ phức tạp Đơn giản, tiết kiệm dây dẫn. Phức tạp hơn nhưng tối ưu cho tính toán.

4. Tập lệnh RISC vs CISC

  • RISC (Reduced Instruction Set Computer): Tập lệnh rút gọn. Ví dụ: ARM. Các lệnh có độ dài cố định, thực thi trong 1 chu kỳ. Tận dụng tối đa bộ nhớ Register để tăng tốc.
  • CISC (Complex Instruction Set Computer): Tập lệnh phức tạp. Ví dụ: x86. Một lệnh có thể thực hiện nhiều tác vụ (ví dụ: nhân 2 số trực tiếp trong RAM). Code ngắn hơn nhưng phần cứng giải mã lệnh cực kỳ phức tạp và tốn điện.

5. ISA (Instruction Set Architecture)

ISA là bản giao ước giữa người lập trình và phần cứng. Nó được đặc trưng bởi:

  • Tập lệnh: Danh sách các lệnh mà CPU hỗ trợ (ADD, SUB, JUMP…).
  • Thanh ghi: Số lượng và mục đích của các thanh ghi (R0-R15).
  • Addressing Modes: Cách CPU xác định địa chỉ của toán hạng.
  • Cơ chế ngắt: Cách CPU phản ứng với các sự kiện khẩn cấp.

II. GETTING STARTED WITH STM32 & GPIO NÂNG CAO

1. Module PORT và cấu hình Pin

Khi cấu hình một chân Pin trên STM32, ta cần quan tâm đến 4 thuộc tính cơ bản:

  • Mode: Input (Đọc), Output (Xuất), Alternate Function (Sử dụng ngoại vi như UART/SPI), Analog (Dùng cho ADC/DAC).
  • Output Type:
    • Push-Pull: Lái dòng khỏe (Active High/Low).
    • Open-Drain: Chỉ kéo xuống GND, cần điện trở kéo lên để lên mức cao (Dùng trong I2C).
  • Speed: Tần số đáp ứng của chân Pin (Low -> Very High). Tốc độ càng cao thì nhiễu điện từ (EMI) càng lớn.
  • Pull-up/Pull-down: Trở treo nội để xác định trạng thái logic mặc định.

2. Bản chất của Trở treo (Pull-up/Pull-down)

Trạng thái Floating (Lơ lửng) là “kẻ thù” của hệ thống số. Khi một chân Pin không được kết nối với nguồn hay đất, nó sẽ đóng vai trò như một chiếc ăng-ten thu nhận nhiễu điện từ xung quanh, làm giá trị logic nhảy loạn giữa 0 và 1.

=> Trở treo giúp “ghim” chân Pin vào một mức điện áp cố định khi không có tín hiệu tác động.

3. Quy trình cấu hình Nút bấm và LED

  1. Enable Clock: Cấp xung cho GPIO Port (Bước quan trọng nhất, không có xung ngoại vi sẽ “chết”).
  2. GPIO Init: Cấu hình Mode, Pull, Speed thông qua GPIO_InitTypeDef.
  3. Control/Read: Sử dụng hàm HAL_GPIO_WritePin, HAL_GPIO_TogglePin để điều khiển hoặc HAL_GPIO_ReadPin để nhận diện nút nhấn.

III. PHÂN TÍCH TỪ KHÓA VOLATILE VÀ LOGIC NÚT NHẤN

1. Giải mã từ khóa volatile

Trong lập trình C thông thường, bạn ít dùng đến nó, nhưng trong Embedded, nó là bắt buộc.

  • Góc độ Compiler: Ngăn trình biên dịch thực hiện tối ưu hóa “thông minh nhưng tai hại”. Compiler sẽ không lưu giá trị biến vào thanh ghi CPU mà bắt buộc phải nạp lại từ RAM mỗi khi sử dụng.
  • Góc độ CPU & Memory: Đảm bảo tính nhất quán dữ liệu giữa luồng thực thi chính (Main loop) và các luồng bất đồng bộ (Interrupt).
  • Ứng dụng:
    • Biến toàn cục được chia sẻ giữa hàm ngắt và hàm main.
    • Biến trỏ tới các thanh ghi ngoại vi (Memory Mapped I/O) vì giá trị thanh ghi thay đổi do phần cứng chứ không phải do code.

2. Kỹ thuật bắt sườn nút nhấn (Edge Detection)

Việc kiểm tra if(Pin == 0) chỉ cho biết nút đang được giữ. Để thực hiện các lệnh như “Nhấn 1 lần thì đảo trạng thái”, ta cần bắt sườn (Edge).

/* Logic chuyên sâu bắt sườn xuống (Falling Edge) */
uint8_t current_state;
uint8_t previous_state = 1; // Mặc định là 1 do dùng Pull-up

while (1) {
    current_state = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);
    
    // Kiểm tra điều kiện sườn xuống: Trước đó là 1, hiện tại là 0
    if (previous_state == 1 && current_state == 0) {
        HAL_Delay(50); // Debounce: Chống rung phím cơ học
        if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == 0) {
            // Thao tác Toggle LED tại đây
            HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12);
        }
    }
    
    // Cập nhật trạng thái cũ cho vòng lặp tiếp theo
    previous_state = current_state;
}
📝 Kết luận: Những kiến thức trên là “xương sống” của lập trình nhúng. Việc nắm vững cấu trúc CPU, cơ chế Bus và bản chất của việc tối ưu hóa trình biên dịch sẽ giúp bạn viết được những đoạn mã nguồn không chỉ chạy được mà còn chạy đúng và tin cậy trong môi trường công nghiệp.

Gợi ý bài tiếp theo: Tổng Ôn Kiến Thức Hệ Thống Nhúng & STM32 (Phần 2).

Mục nhập này đã được đăng trong Đào tạo, Hệ thống nhúng, Khóa đào tạo cơ bản và được gắn thẻ Embedded Systems.
ThaoNguyen

[Embedded Series – Bài 27] Chuyên Sâu Bootloader: Cơ Chế Khởi Động, Quản Lý Vector Table Và Kỹ Thuật Jump Firmware
[Embedded Series – Bài 29] Tổng Ôn Kiến Thức Hệ Thống Nhúng & STM32 (Phần 2)

Để lại một bình luận Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Bài viết mới
  • Bài 3: Mạch Giao tiếp – Nghệ thuật điều khiển điện áp: Để Cảm biến và Vi điều khiển “hiểu” nhau
  • So sánh các phiên bản Windows 11 năm 2026: Home, Pro và Enterprise phù hợp với đối tượng nào?
  • Lộ trình chuyển dịch sang Windows 11 năm 2026: Yêu cầu an toàn thông tin và giải pháp tối ưu hóa hiệu suất
  • Rủi Ro Bảo Mật Từ Ổ Cứng Cũ: Những Sai Lầm Phổ Biến Khi Thanh Lý Thiết Bị Lưu Trữ
  • Xu Hướng Đưa AI Tự Chủ Lên Thiết Bị Cạnh Biên: Phân Tích Giải Pháp Phần Cứng Và Phần Mềm Từ GTC Taipei 2026
Danh mục
  • Cảm biến
  • Đào tạo
  • FPGA cơ bản
  • Giải pháp
  • Hệ thống nhúng
  • IoT trong giáo dục
  • IoT trong y tế
  • Khóa đào tạo cơ bản
  • Khóa đào tạo nâng cao
  • LabVIEW FPGA
  • LabVIEW FPGA High Performance
  • Phần cứng máy tính & Truyền thông công nghiệp
  • Sản xuất công nghiệp
  • Thiết bị dịch vụ thông minh
  • Thiết bị đọc căn cước
  • Tin tức

CÔNG TY CỔ PHẦN HỆ THỐNG AIOT

VPGD: Số A21-TT9 Đường Foresa 1 KĐT Xuân Phương, Phường Xuân Phương, Hà Nội.

Địa chỉ kinh doanh: Đường Phú Diễn, Tổ dân phố 18, phường Phú Diễn, Thành phố Hà Nội, Việt Nam

Hotline/Zalo: 097 186 8316 | 0839 799 889

Email: aiot@aiots.vn

VỀ CHÚNG TÔI

Giới thiệu

Sản phẩm

Giải pháp

Đào tạo

Tin tức

QUY ĐỊNH & CHÍNH SÁCH

Chính sách thanh toán

Chính sách vận chuyển

Chính sách bảo hành

Chính sách đổi trả

Chính sách bảo mật

ĐỊA CHỈ VĂN PHÒNG GIAO DỊCH

Copyright 2024 © Bản quyền thuộc về AIOT. Thiết kế bởi Jamina JSC
  • Trang chủ
  • Giới thiệu
  • Tin tức
  • Sản phẩm
  • Giải pháp
    • Chấm công bằng Face ID
    • Thiết bị đọc căn cước
    • IoT trong giáo dục
    • IoT trong quản lý năng lượng
    • IoT trong y tế
  • Đào tạo
    • Khóa đào tạo cơ bản
      • Cảm biến
      • Hệ thống nhúng
      • LabVIEW FPGA
      • Phần cứng máy tính & Truyền thông công nghiệp
      • FPGA cơ bản
    • Khóa đào tạo nâng cao
      • LabVIEW FPGA High Performance
    • Tài liệu
  • PCCC
  • Liên hệ
Zalo
Phone

Đăng nhập

Quên mật khẩu?