Ưu đãi trong tuần: Nhập mã UD50 giảm 50k cho đơn từ 300k!
Trang chủ
Menu

Microcontroller Embedded C Programming: Absolute Beginners

Lập trình C nhúng cho Vi điều khiển: Dành cho người mới bắt đầu tuyệt đối

Lập trình C nhúng cho Vi điều khiển: Dành cho người mới bắt đầu tuyệt đối

Khóa học nền tảng về lập trình C nhúng sử dụng Vi điều khiển STM32.

4.5
(15,859 đánh giá)
72,197 học viên
Phụ đề Việt chất lượng cao Phụ đề tiếng Anh Bán chạy Đánh giá cao
50.000đ 349.000đ -86%
✓ Xem giỏ hàng và thanh toán
Bao gồm phụ đề tiếng Việt, tiếng Anh
16.5 giờ video
199 bài giảng
Truy cập vĩnh viễn
Học trên mọi thiết bị
Cập nhật: 15/10/2026

Bạn sẽ học được gì

Lập trình 'C' từ con số 0
Kiểu dữ liệu, biến, khai báo
Tầm quan trọng của toán tử Bit-Wise trong lập trình "Nhúng"
Kỹ thuật thao tác bit sử dụng toán tử bit-wise và ví dụ
Trích xuất bit và làm việc với các thanh ghi ngoại vi ánh xạ bộ nhớ
Các toán tử khác của 'C' (số học, logic, quan hệ, gán)
Hàm trong 'C'
Ép kiểu ngầm định và tường minh cùng tầm quan trọng
Con trỏ và ép kiểu
Số học con trỏ và tầm quan trọng của kiểu dữ liệu con trỏ
Truy cập thanh ghi ngoại vi ánh xạ bộ nhớ bằng con trỏ
Cấu trúc và union
Tầm quan trọng của cấu trúc trong truy cập thanh ghi ngoại vi
Cấu trúc và trường bit
Cấu hình địa chỉ thanh ghi ngoại vi sử dụng trường bit
Cấu trúc và con trỏ
Giao tiếp LED, Bàn phím
Bổ từ kiểu const và volatile
Tầm quan trọng của volatile trong tối ưu hóa trình biên dịch
Giải thích const data, const pointer, const volatile với ví dụ
Tầm quan trọng của const
Vòng lặp: for, while, do while

Yêu cầu

Hiểu biết cơ bản về hệ đếm, cổng logic, bit và byte.
Cần board STM32F407 discovery nếu muốn chạy thử code trên thiết bị thật

Đối tượng phù hợp

Người mới tò mò về hệ thống nhúng và lập trình vi điều khiển

Nội dung khóa học

31 phần • 193 bài giảng
1 Về giảng viên
2 Ngôn ngữ lập trình cho Hệ thống Nhúng
3 Lịch sử 'C' và chuẩn hóa
4 Kho lưu trữ khóa học
5 Lưu ý quan trọng
1 Tải xuống IDE
2 Tính năng chính của STM32CubeIDE
3 Cài đặt STM32CubeIDE
4 Cài đặt STM32CubeIDE trên Linux
5 Cài đặt trình biên dịch (GCC) cho máy chủ
6 Cài đặt trình biên dịch (GCC) cho máy chủ (WINDOWS)
7 Cài đặt trình biên dịch (GCC) cho máy chủ (LINUX)
8 Cài đặt trình biên dịch (GCC) cho máy chủ (MAC)
9 Nhập dự án khóa học vào workspace
10 Tạo một dự án cho HOST
11 Tạo một dự án cho Target
12 Sửa lỗi cảnh báo FPU
13 Yêu cầu phần cứng/phần mềm
14 Làm quen với thiết bị nhúng mục tiêu của khóa học
1 Công cụ web OnlineGDB
2 Printf và Hello World
3 Bài giải thực hành Printf
4 Escape sequences trong 'C'
5 Bài giải thực hành Printf
6 Bài giải thực hành Printf
7 Chú thích trong 'C'
1 Kiểu dữ liệu trong 'C'
2 Kiểu dữ liệu số nguyên 'C' và phạm vi giá trị
3 Kiểu dữ liệu Char và định nghĩa biến
4 Bài tập định nghĩa biến
5 Tính toán phạm vi cho kiểu dữ liệu 'char'
6 Kiểu dữ liệu số nguyên 'short int' và phạm vi giá trị
7 Kiểu dữ liệu số nguyên 'int' và 'long'
8 Sizeof
9 Quy tắc đặt tên biến và định nghĩa vs khai báo
10 Khai báo vs định nghĩa: Minh họa
11 Phạm vi biến và minh họa
12 Phạm vi biến và minh họa (tiếp)
13 Tóm tắt biến cục bộ và toàn cục
1 Địa chỉ của biến
2 Địa chỉ của biến (tiếp)
1 Bổ từ lớp lưu trữ trong 'C'
2 Các trường hợp sử dụng 'static' với biến
3 Các trường hợp sử dụng 'static' với hàm
4 Bổ từ lớp lưu trữ 'Extern'
5 Mã ASCII
1 Giới thiệu hàm trong 'C'
2 Nguyên mẫu hàm
3 Trả về dữ liệu từ một hàm
4 Bài tập về hàm
5 Ép kiểu trong 'C'
6 Ép kiểu trong 'C' (tiếp)
1 Nhúng - 'Hello World'
2 Kiểm tra printf qua đường ARM Cortex M4 ITM+SWO
3 Vấn đề với IDE
4 Kiểm tra printf qua OpenOCD semihosting
5 Chạy Sizeof trên Target nhúng
6 Kiểm tra Sizeof
7 Cài đặt trình biên dịch trên STM32CubeIDE
1 Quá trình Build dự án nhúng
1 Vi điều khiển là gì?
2 Bộ nhớ chương trình của vi điều khiển
3 Code và Data của chương trình sử dụng memory browser
4 Phân tích file ELF bằng công cụ GNU
5 Disassembly
6 Tùy chọn IDE cho gỡ lỗi cấp độ lệnh
1 Thao tác số thập phân trong 'C'
2 Độ chính xác đơn vs kép
3 Làm việc với biến float và double
1 Giới thiệu Scanf
2 Triển khai bài tập Scanf
3 Triển khai bài tập Scanf (tiếp)
4 Bài tập Scanf
5 Triển khai bài tập Scanf
6 Scanf và float với ký hiệu khoa học
1 Con trỏ trong 'C'
2 Biến con trỏ và kiểu dữ liệu con trỏ
3 Biến con trỏ và khởi tạo
4 Thao tác đọc và ghi trên con trỏ
5 Triển khai bài tập con trỏ
6 Ý nghĩa của kiểu dữ liệu con trỏ
7 Ý nghĩa của kiểu dữ liệu con trỏ
1 Tầm quan trọng của
1 Toán tử trong 'C'
2 Toán tử một ngôi trong 'C'
3 Toán tử một ngôi với con trỏ
4 Toán tử quan hệ trong 'C'
5 Toán tử logic trong 'C'
1 Câu lệnh 'if'
2 Bài tập câu lệnh if
3 Bài giải câu lệnh 'if'
4 'if' và 'else'
5 Triển khai bài tập 'if' và 'else' phần-1
6 Triển khai bài tập 'if' và 'else' phần-2
7 Triển khai bài tập 'if' và 'else' phần-3
8 Câu lệnh thang 'if -else-if'
9 Bài tập 'if-else-if' thang
10 Bài giải 'if-else-if' thang
11 Toán tử điều kiện
12 Câu lệnh switch case trong 'C'
13 Bài tập switch case
14 Bài giải switch case
15 Bài giải switch case (tiếp)
1 Toán tử bitwise trong 'C'
2 Bitwise AND và bitwise OR
3 Ứng dụng toán tử bitwise: Kiểm tra bit
4 Tìm số chẵn/lẻ bằng cách kiểm tra bit
5 Ứng dụng toán tử bitwise: Thiết lập bit
6 Ứng dụng toán tử bitwise: Xóa bit
7 Ứng dụng toán tử bitwise: xor
1 Lập trình bật một LED
2 Điều khiển chân IO bằng phần mềm
3 Vùng bộ nhớ có thể định địa chỉ của bộ xử lý
4 Sơ đồ bộ nhớ STM32
5 Thanh ghi ngoại vi ánh xạ bộ nhớ và truy cập IO
6 Quy trình bật LED
7 Kích hoạt xung nhịp ngoại vi
8 Tính toán địa chỉ thanh ghi ngoại vi
9 Lập trình bài tập bật LED
1 Toán tử dịch phải bitwise
2 Toán tử dịch trái bitwise
3 Ứng dụng của toán tử dịch bitwise
4 Sửa đổi bài tập bật LED bằng toán tử dịch bitwise
5 Trích xuất bit
1 Vòng lặp trong 'C'
2 Vòng lặp While
3 Bài tập while loop
4 while loop và dấu chấm phẩy
5 Bài tập while loop
6 Vòng lặp 'do while'
7 Vòng lặp 'for'
8 Bài tập 'for' loop
9 Bài tập kim tự tháp số 'for' loop
10 Bài giải 'for' loop
11 Sửa đổi bật LED với độ trễ phần mềm
12 Đảo trạng thái LED sử dụng độ trễ phần mềm
1 Bổ từ kiểu 'const'
2 Vị trí đặt biến 'const' trong bộ nhớ
3 Cách sử dụng 'const' và các tình huống nghiên cứu khác nhau
4 Cách sử dụng 'const' và các tình huống nghiên cứu khác nhau (tiếp)
1 Bài tập đọc chân IO
2 Triển khai bài tập đọc chân IO
1 Tối ưu hóa trình biên dịch và cờ
2 Các mức tối ưu hóa trình biên dịch khác nhau
3 Phân tích disassembly bài tập đọc chân với O0 và O2
1 volatile và ảnh hưởng của tối ưu hóa
2 Khi nào sử dụng bổ từ volatile?
3 Sử dụng volatile để sửa lỗi bài tập đọc chân
4 Sử dụng 'volatile' với ISR Phần-1
5 Sử dụng 'volatile' với ISR Phần 2
6 Cách dùng chung const và volatile
1 Giới thiệu về cấu trúc
2 Truy cập các thành phần của cấu trúc
3 Kích thước của một cấu trúc (sizeof)
4 Lưu trữ dữ liệu có căn chỉnh và không căn chỉnh
5 Đệm cấu trúc (Structure padding)
6 Tính toán kích thước cấu trúc thủ công: có và không có padding
7 Phân tích mã Assembly của cấu trúc có và không có đóng gói
8 Typedef và cấu trúc
9 Cấu trúc và con trỏ
10 Bài tập về cấu trúc
11 Triển khai bài tập về cấu trúc
12 Cấu trúc và trường bit
13 Cấu trúc và trường bit (tiếp theo)
1 Union
2 Ứng dụng của union
1 Bài tập trường bit: Tạo cấu trúc trường bit cho thanh ghi ngoại vi
2 Cấu trúc trường bit cho RCC_AHB1ENR
3 Cấu trúc trường bit cho GPIOx_ODR
4 Sửa bài tập nháy LED với cấu trúc và trường bit
5 Kiểm thử
1 Giao tiếp bàn phím ma trận
2 Tại sao cần điện trở kéo lên?
3 Phát hiện sự kiện nhấn phím
4 Lưu đồ triển khai
5 Triển khai mã đọc phím bàn phím
6 Phân tích độ trễ
1 Mảng trong 'C'
2 Thao tác Đọc-Ghi trên mảng
3 Truyền mảng vào hàm
4 Hoán đổi mảng
5 Hoán đổi mảng (tiếp theo)
1 Chuỗi trong 'C'
2 Chuỗi hằng
3 Chuỗi biến so với chuỗi hằng
4 Nhập một chuỗi
5 Scanf và scanset
6 Bài tập
1 Chỉ thị tiền xử lý trong 'C'
2 Chỉ thị biên dịch có điều kiện
3 Toán tử 'defined'
4 Sửa bài tập nháy LED với macro
5 BÀI GIẢNG BỔ SUNG

Giới thiệu khóa học

==> This should be your very first course to dive into the exciting world of "Embedded Systems" <==

This is our new course mainly targeted for absolute beginners to learn microcontroller programming using the 'C ' programming language.

Please note that "Embedded C" is NOT a separate programming language. 'Embedded C' is rather embedded target aware programming using traditional 'C' programming language. In this course you work closely with hardware such as registers, peripherals, interrupts, and real time constraints.

Some of the critical microcontroller-related 'C' concepts such as

  1. Importance of bitwise operators

  2. Usage of bit manipulation techniques to program MCU peripheral registers

  3. accessing memory-mapped registers using pointers

  4. pointers and casting

  5. structures, bitfields, unions, and bit extraction techniques

  6. representing hardware registers details and configuring them using 'C' structure definitions

  7. Usage of const and volatile type qualifiers

  8. Interpret complex variable definitions involving the combination of const and volatile

  9. The precise usage of const pointers, const data, volatile const, with pointer and non-pointer variables

  10. The behavior of the code during compiler optimization and solution using volatile

  11. Functions and friends

  12. Data types, variables definitions, storage class specifiers and much more

  13. Loops: while, for, do. while

  14. MCU internal architecture and programming peripherals

  15. Interfacing projects

All these concepts are discussed with clear examples and writing code for the target embedded board.

According to 2017 embedded dot com survey still 'C' is one of the most widely used programming languages  for embedded code development

This course gives particular emphasis to learn 'C' programming concepts practically for microcontroller use cases.


Hardware:

1. You need ARM Cortex M4 based STM32F407 DISCOVERY board from ST if you want to try out code on the target.

2. Additional interfacing components may be required for interfacing projects

3. You can also be able to follow this course if you have any other boards from ST such as Nucleo or evaluation.


Software:

1. In this course, Eclipse-based STM32CubeIDE is used as the  IDE ( works on Windows/Linux/Mac) (FREE)


Learning order of FastBit Embedded Brain Academy Courses,

If you are a beginner in the field of embedded systems, then you can take our courses in the below-mentioned order.
This is just a recommendation from the instructor for beginners.

1) Microcontroller Embedded C Programming: absolute beginners(Embedded C)

2) Embedded Systems Programming on ARM Cortex-M3/M4 Processor(ARM Cortex M4 Processor specific)

3) Mastering Microcontroller with Embedded Driver Development(MCU1)

4) Mastering Microcontroller: TIMERS, PWM, CAN, RTC,LOW POWER(MCU2)

5) Mastering Microcontroller: STM32-LTDC, LCD-TFT, LVGL(MCU3)

6) Embedded System Design using UML State Machines(State machine)

7) Mastering RTOS: Hands-on FreeRTOS and STM32Fx with Debugging(RTOS)

8) ARM Cortex M Microcontroller DMA Programming Demystified(DMA)

9) STM32Fx Microcontroller Custom Bootloader Development(Bootloader)

10) Embedded Linux Step by Step using Beaglebone Black(Linux)

11) Linux device driver programming using Beaglebone Black(LDD1)


Other programming courses

1) Mastering Embedded Rust: Bare Metal, FFI, Crates, Projects (STM32+Rust)

2) Master The Rust Programming Language : Beginner To Advanced

Khóa học liên quan

Khám phá thêm các khoá học cùng chủ đề

Hiển thị tất cả khoá học C Programming
Hiển thị tất cả khoá học Embedded C
Hiển thị tất cả khoá học Embedded Systems
Hiển thị tất cả khoá học Microcontrollers
Zalo
Tôi có thể tư vấn khoá học cho bạn 😊