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

Embedded driver: Build Drivers and Control Dino Game

Driver nhúng: Xây dựng Driver và Điều khiển Game Khủng long

Driver nhúng: Xây dựng Driver và Điều khiển Game Khủng long

Học cách viết driver cho GPIO, USART, Timer từ đầu và ứng dụng vào dự án game Khủng long thú vị

4.8
(11 đánh giá)
165 học viên
Giảng viên
Embedded Coding
Phụ đề Việt chất lượng cao Phụ đề tiếng Anh Bán chạy Đánh giá cao
50.000đ 399.000đ -87%
✓ Xem giỏ hàng và thanh toán
Bao gồm phụ đề tiếng Việt, tiếng Anh
8.5 giờ video
156 bài giảng
10 bài quiz
Truy cập vĩnh viễn
Học trên mọi thiết bị
Cập nhật: 31/05/2026

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

Làm chủ phát triển driver bare-metal cho các ngoại vi thiết yếu như GPIO, USART/UART, Timer (Output Compare và PWM) — không có HAL, không có phép thuật, chỉ có kiểm soát hoàn toàn
Học cách đọc tài liệu tham khảo kỹ thuật và trích xuất thông tin chi tiết cấp thanh ghi — một kỹ năng có thể áp dụng cho bất kỳ họ vi điều khiển nào, không chỉ STM32
Tư duy như một kỹ sư nhúng: gỡ lỗi, xây dựng và giải quyết các vấn đề thực tế
Điều khiển một game Khủng long thật sử dụng driver nhúng do chính bạn viết
Hiểu kiến trúc vi điều khiển: bus, sơ đồ khối, và cách CPU giao tiếp với ngoại vi
Triển khai lập trình dựa trên ngắt cho GPIO, USART và Timer
Khai phá tư duy sáng tạo bằng cách khám phá cách hệ thống nhúng có thể vận hành game — không chỉ là đèn LED và cảm biến
Tự tin trong kỹ thuật gỡ lỗi bằng cách sử dụng breakpoints, cửa sổ xem thanh ghi để xử lý sự cố
Phát triển tư duy lập trình viên: thay vì phụ thuộc vào thư viện, bạn sẽ tự xây dựng công cụ của riêng mình — hiểu điều gì đang xảy ra ở mức thấp nhất
Tổ chức mã nguồn rõ ràng với cấu trúc, chú thích và phân tách hợp lý

Yêu cầu

Kiến thức cơ bản về ngôn ngữ lập trình C

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

Lập trình viên nhúng mới bắt đầu - những người muốn vượt qua việc nhấp nháy LED và bắt đầu xây dựng driver thực thụ từ đầu
Sinh viên kỹ thuật - những người muốn một cách tiếp cận thực tế, thực hành để hiểu ngoại vi vi điều khiển
Lập trình viên chán ngấy với các thư viện dạng hộp đen (như HAL) và sẵn sàng tìm hiểu điều gì thực sự xảy ra ở cấp thanh ghi
Người đam mê và tự chế - muốn áp dụng kiến thức nhúng vào các dự án thú vị như điều khiển game Khủng long
Bất kỳ ai quan tâm đến hệ thống nhúng thời gian thực, xử lý ngắt và điều khiển cấp thấp
Người học yêu thích các khóa học dựa trên dự án và muốn xây dựng thứ gì đó thú vị trong khi học kỹ năng thiết yếu

Nội dung khóa học

19 phần • 156 bài giảng
1 XEM NGAY
2 Cách game Khủng long và STM32 phối hợp với nhau
1 Tải game Khủng long
2 Chạy game Khủng long trên Windows
3 Chạy game Khủng long trên Linux
4 Xử lý sự cố và hỗ trợ
1 Phần này nói về gì?
2 Giới thiệu board STM32F407 DISC - Board này có những gì?
3 Tài liệu cần thiết
4 Phần mềm cần thiết
5 Cài đặt Keil uVision 5
6 Cài đặt VSCode
7 Cài đặt driver STLink
8 Cài đặt Git
9 Tải Hercules
10 Cài đặt Pack
11 Khởi tạo Git
12 Hello world
13 Commit đầu tiên
14 Từ khóa Volatile
15 Commit volatile và so sánh mã giữa các commit
1 Phần này nói về gì?
2 Sơ đồ khối vi điều khiển
3 Ví dụ kết nối bus dữ liệu
4 Sơ đồ khối vi điều khiển đơn giản hóa
5 Ma trận bus
6 Hệ thống clock vi điều khiển
7 Bản đồ bộ nhớ
1 Chúng ta có gì trong các phần GPIO?
2 GPIO là gì?
3 Bộ đệm đầu ra
4 Bộ đệm đầu vào
5 Đầu vào thả nổi
6 Đầu vào kéo lên/kéo xuống
7 Đầu ra push-pull và đầu ra open drain
8 Tốc độ đầu ra
1 GPIO trên STM32F407
2 Cấu hình đầu vào trong vi điều khiển
3 Cấu hình đầu ra trong vi điều khiển
4 Cấu hình chức năng thay thế trong vi điều khiển
5 Cấu hình Analog trong vi điều khiển
1 Cách tiếp cận tốt nhất cho phần này
2 Thanh ghi GPIO
3 Thanh ghi chế độ chân GPIO
4 Thanh ghi kiểu đầu ra GPIO
5 Thanh ghi kéo lên/kéo xuống GPIO
6 Thanh ghi tốc độ đầu ra GPIO
7 Thanh ghi dữ liệu đầu vào GPIO
8 Thanh ghi dữ liệu đầu ra GPIO
9 Thanh ghi đặt/xóa bit GPIO
10 Thanh ghi cấu hình khóa cổng GPIO
11 Thanh ghi chức năng thay thế GPIO
1 Làm thế nào để học phần này hiệu quả?
2 Cách truy cập thanh ghi GPIO bằng Struct
3 Định nghĩa struct định nghĩa thanh ghi GPIO
4 Định nghĩa địa chỉ cơ sở GPIO
5 Cấu trúc cấu hình chân GPIO
6 Macro cấu hình chân
7 Nguyên mẫu hàm
8 GPIO_Init()
9 GPIO_Init() (tiếp theo)
10 GPIO_WritePin()
11 Kiểm thử GPIO_WritePin() - Nhấp nháy một LED
12 Bật clock GPIO
13 Định nghĩa macro bật/tắt clock GPIO và ứng dụng kiểm thử
14 Cấu hình reset và chạy
15 Commit mã
16 Điều khiển LED ngoài
17 GPIO_ReadPin()
18 Kiểm thử GPIO_ReadPin() - Đọc trạng thái nút nhấn người dùng
19 Đọc trạng thái nút nhấn ngoài
20 GPIO_TogglePin()
21 Kiểm thử GPIO_TogglePin() - Nhấn nút để chuyển đổi trạng thái LED
22 Commit mã và thử thách
23 Thử thách GPIO đã được chấp nhận!
24 GPIO_WritePinBit() và kiểm thử
25 GPIO_LockConf()
26 Kiểm thử GPIO_LockConf() - Khóa thanh ghi cấu hình GPIO
27 Hãy chú thích mã của bạn!
1 Chúng ta có gì trong các phần về ngắt?
2 Khái niệm cơ bản về ngắt
3 Bảng vector
4 Cách chương trình xử lý một ngắt
1 Ngắt GPIO với EXTI và NVIC
2 Bên trong EXTI
3 Thiết lập ngắt GPIO
1 Cấu trúc định nghĩa thanh ghi SYSCFG
2 Cấu trúc định nghĩa thanh ghi EXTI
3 GPIO_IT_Init() - Các bước cấu hình
4 GPIO_IT_Init() - Chỉ định cổng GPIO cần ánh xạ
5 GPIO_IT_Init() - Cấu hình EXTI
6 GPIO_IT_Init() - Định nghĩa cấu trúc thanh ghi NVIC
7 GPIO_IT_Init() - NVIC_SetPriority()
8 GPIO_IT_Init() - NVIC_EnableIRQ()
9 GPIO_IT_Init() - Định nghĩa macro số hiệu IRQ
10 Ngắt GPIO - Phát hiện nhấn nút
11 Ngắt GPIO - Đến lúc gỡ lỗi!
12 Tạo tín hiệu "Nhảy" cho game Khủng long
1 Chúng ta có gì trong các phần USART?
2 USART là gì?
3 Chân USART
4 Chế độ đồng bộ USART
5 Chế độ bất đồng bộ USART
6 Chế độ điều khiển luồng bằng phần cứng
7 Định dạng Frame
8 Bit bắt đầu/Bit kết thúc
9 Bit chẵn lẻ
10 Hạn chế của kiểm tra chẵn lẻ
11 Tốc độ Baud
12 Lấy mẫu quá mức
13 Tính toán tốc độ Baud
14 Ví dụ tính toán tốc độ Baud 1
15 Ví dụ tính toán tốc độ Baud 2
16 Xử lý tràn khi tính toán tốc độ Baud
17 Tính toán tốc độ Baud trong mã
1 Tổng quan thanh ghi USART
2 Định nghĩa cấu trúc thanh ghi USART
3 Định nghĩa cấu trúc cấu hình USART
4 Định nghĩa cấu trúc cấu hình USART (tiếp theo)
5 USART_Init() - Các bước cấu hình
6 USART_Init() - Triển khai
7 Lấy tần số clock APB1
8 Lấy tần số clock APB2
9 USART_Transmit()
10 USART_Receive()
11 Cấu hình một ngoại vi USART
12 Điều khiển một LED bằng lệnh từ Hercules
1 Truyền và nhận ngắt khi nhấn nút
2 Truyền và nhận ngắt khi nhấn nút (tiếp theo)
3 Kiểm thử truyền và nhận ngắt khi nhấn nút
4 Gửi tín hiệu "Nhảy" của Khủng long tới game Khủng long
1 Chúng ta có gì trong các phần Timer?
2 Giới thiệu timer cơ bản
3 Các loại timer trong STM32F407 và đặc điểm của chúng
4 Tính toán chu kỳ timer
1 Định nghĩa cấu trúc thanh ghi timer
2 Định nghĩa địa chỉ cơ sở timer và điều khiển clock
3 Định nghĩa cấu trúc cấu hình cơ bản timer
4 TIM_Base_Init()
5 Timer_Base_Start() và Timer_Base_Stop()
6 Tạo độ trễ không chặn bằng timer
7 LED nhấp nháy với tạo độ trễ bằng timer
1 Ngắt sự kiện cập nhật timer
2 Kiểm thử ngắt sự kiện cập nhật với chống rung nút nhấn
1 Output Compare
2 PWM - Điều chế độ rộng xung
3 Tạo PWM sử dụng bộ Output Compare
4 Điều khiển độ sáng LED với PWM
1 Cập nhật cấu trúc thanh ghi timer
2 Hiểu cấu trúc cấu hình Output Compare
3 Định nghĩa cấu trúc cấu hình Output Compare
4 TIM_OC_Init()
5 Khởi tạo Output Compare để tạo PWM
6 Điều khiển độ sáng LED bằng lệnh - Triển khai
7 Điều khiển độ sáng LED bằng lệnh - Kiểm thử
8 Điều khiển độ sáng LED dựa trên số lần nhảy của Khủng long

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

I started out as a beginner (or “snoop”), unsure where to start. Today, I confidently apply embedded knowledge in professional projects and take part in expert-level technical discussions. That’s why I know exactly which parts are confusing for beginners — and I’ve made it my mission to explain them simply and clearly.

Are you ready to stop relying on libraries and start writing your own embedded drivers from scratch?

This hands-on course is designed to teach you how to build essential embedded drivers — for GPIO, USART/UART, Timers — with no HAL, no abstraction, and no shortcuts. Whether you're a beginner or a self-taught enthusiast, this course will help you gain full control of the microcontroller by programming directly at the register level.

Instead of endless theory, we use a project-based learning approach. Throughout the course, you'll apply each driver you build to control a fun, interactive Dino game — a perfect way to instantly see the result of your code in action and stay motivated as you progress.

You don’t need any prior experience with low-level embedded programming. We’ll start from the very beginning: installing the necessary tools, setting up your environment, and writing your first embedded driver step-by-step.

To help you learn effectively, this course uses animations, graphs, and diagrams to break down complex ideas — instead of overwhelming you with text-heavy slides. I also use a live coding style throughout the course, so it’ll feel like you and I are sharing the same screen, learning side by side. You'll see exactly how I think, troubleshoot, and write real embedded code in action.

This course is carefully designed to be completed in around 8.5 hours, so you can finish it in one to two weeks — or even faster if you're a quick learner. You’ll walk away with practical skills, real project experience, and the confidence to build embedded systems without relying on pre-written libraries.

If you’re ready to take full control of embedded systems and actually see your code come to life, this course is for you.

Let’s build drivers — and make the Dino run!

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 Arm Cortex M
Hiển thị tất cả khoá học C Language
Hiển thị tất cả khoá học Microcontroller Programming
Zalo
Tôi có thể tư vấn khoá học cho bạn 😊