inflearn logo

Nhập môn phát triển firmware STM32 (Blue Pill) – Học CubeIDE & FreeRTOS mà không cần linh kiện bổ sung

Đồng hồ thông minh, tai nghe không dây, robot hút bụi, ô tô, máy bay không người lái, kiosk và các thiết bị y tế mà chúng ta sử dụng hằng ngày đều được tích hợp một máy tính nhỏ có khả năng tiếp nhận thông tin đầu vào của người dùng, phán đoán tình huống và điều khiển thiết bị. Những hệ thống như vậy được gọi là hệ thống nhúng (Embedded System). Tuy nhiên, khi bắt đầu học về hệ thống nhúng, mọi thứ khó hơn bạn tưởng. Bạn có thể dễ dàng tìm thấy các ví dụ bật LED trên Internet, nhưng để học một cách có hệ thống về nguyên lý hoạt động của các thiết bị điện tử thực tế như: "Thiết bị điện tử sẽ phản ứng như thế nào khi nhấn nút?" "Làm thế nào để thiết bị hoạt động chính xác vào những thời điểm đã định?" "Làm thế nào để nhiều chức năng chạy đồng thời?" "Làm thế nào để ghi nhớ các giá trị cài đặt ngay cả khi tắt rồi bật lại nguồn?" thì không hề đơn giản. Trong khóa học này, thay vì ghi nhớ những lý thuyết hay đoạn mã phức tạp, bạn sẽ trực tiếp điều khiển một bo mạch phát triển nhỏ để từng bước hiểu các nguyên lý cốt lõi của hệ thống nhúng. Bắt đầu từ những bài thực hành cơ bản nhất như điều khiển LED và nút nhấn, bạn sẽ lần lượt học các chức năng cốt lõi được sử dụng để chế tạo các thiết bị điện tử thực tế, chẳng hạn như Interrupt, Timer, PWM, ADC, Memory và Watchdog. Cuối khóa học, bạn sẽ sử dụng RTOS (Real-Time Operating System) để kết hợp các chức năng đã học riêng lẻ cho đến lúc này thành một hệ thống duy nhất, trong đó nhiều chức năng có thể hoạt động đồng thời. Mục tiêu của khóa học không chỉ là học cách sử dụng một bo mạch phát triển cụ thể, mà là xây dựng năng lực nền tảng để khi tiếp xúc với nhiều loại thiết bị điện tử và bo mạch phát triển khác nhau trong tương lai, bạn có thể hiểu phần cứng hoạt động như thế nào nhờ phần mềm và tự mình triển khai được điều đó.

9 học viên đang tham gia khóa học này

Độ khó Nhập môn

Thời gian Không giới hạn

stm32
stm32
stm32cubeide
stm32cubeide
embedded-systems
embedded-systems
C
C
FreeRTOS
FreeRTOS
stm32
stm32
stm32cubeide
stm32cubeide
embedded-systems
embedded-systems
C
C
FreeRTOS
FreeRTOS

Bạn sẽ nhận được điều này sau khi học.

  • Nguyên lý hoạt động của thiết bị điện tử bằng phần mềm

  • Hiểu các chức năng cốt lõi của hệ thống thiết bị điện tử

  • Kỹ năng gỡ lỗi phần mềm

  • Lập trình đa nhiệm (nhiều chức năng hoạt động đồng thời)

Tự mình phát triển firmware STM32

Từ GPIO đến dự án tổng hợp FreeRTOS

Bạn đã mua STM32 nhưng cảm thấy bối rối không biết nên học gì tiếp theo sau khi lập trình LED nhấp nháy?

Bật thử GPIO một lần và sao chép mã ví dụ trên Internet để chạy ADC hoặc PWM thì không khó.

Tuy nhiên, khi bắt tay vào tự mình viết chương trình, bạn sẽ nảy sinh nhiều câu hỏi.

Tại sao lại sử dụng Interrupt?
Timer khác HAL_Delay như thế nào?
Giá trị ADC thực tế được đọc như thế nào?
Chu kỳ và Duty Ratio của PWM được xác định như thế nào?
Làm thế nào để dữ liệu vẫn được lưu lại ngay cả khi tắt rồi bật nguồn?
Tại sao FreeRTOS cần Task, Priority và Queue?

Khóa học này được xây dựng để giải đáp những câu hỏi như vậy.

Sử dụng Blue Pill dựa trên STM32F103C8T6 và STM32CubeIDE để tự mình triển khai từ GPIO, Interrupt, Timer, ADC, PWM, Flash Memory đến FreeRTOS.

Đây không phải là một khóa học đơn thuần liệt kê cách sử dụng các hàm HAL.

Sau khi học một chức năng, tự mình thực thi, kiểm tra hoạt động của các biến và MCU, cuối cùng bạn sẽ kết nối những chức năng đã học cho đến nay để hoàn thiện một Embedded System nhỏ dựa trên FreeRTOS.


Đừng dừng lại ở việc nhấp nháy LED

Khi mới học STM32, thông thường bạn sẽ bắt đầu như sau.

Sử dụng HAL_GPIO_TogglePin() để làm LED nhấp nháy, rồi thay đổi số trong HAL_Delay() để kiểm tra hoạt động.

Tuy nhiên, trong các chương trình nhúng thực tế, chỉ như vậy là chưa đủ.

Cần xử lý ngay lập tức các sự kiện từ nút bấm hoặc cảm biến, thực hiện các tác vụ theo những khoảng thời gian chính xác, đọc tín hiệu analog, tạo PWM và lưu dữ liệu cần thiết vào Flash.

Khi hệ thống trở nên phức tạp hơn một chút, việc xử lý tất cả chức năng trong một while(1) duy nhất cũng trở nên khó khăn.

Vì vậy, cuối cùng FreeRTOS xuất hiện.

Khóa học này được xây dựng theo lộ trình học tập tự nhiên, bắt đầu từ LED Blink và tiếp nối đến FreeRTOS.

GPIO ↓ Ngắt ngoài ↓ Ngắt Timer ↓ ADC ↓ PWM ↓ Bắt tín hiệu đầu vào ↓ Bộ nhớ Flash ↓ Tác vụ FreeRTOS ↓ Độ ưu tiên / Trạng thái tác vụ ↓ Hàng đợi ↓ Dự án tổng hợp FreeRTOS

Không học từng chức năng riêng lẻ rồi kết thúc, mà sau khi hiểu tại sao chúng cần thiết, bạn sẽ kết nối chúng với chức năng tiếp theo.


Những gì bạn sẽ đạt được trong khóa học này

Trước khi học Sau khi học Cảm thấy STM32CubeIDE khó sử dụng Tự thực hiện từ tạo dự án đến gỡ lỗi Sao chép và sử dụng mã HAL Hiểu vai trò của từng API HAL Chỉ thực hiện được LED Blink Tự triển khai GPIO·Interrupt·Timer·ADC·PWM Không biết tại sao cần Interrupt Có thể giải thích sự khác nhau giữa Polling và Interrupt Cảm thấy các giá trị cài đặt Timer khó hiểu Hiểu ý nghĩa của Prescaler·Period Chỉ kiểm tra các con số ADC Chuyển đổi giá trị ADC thành điện áp và nhiệt độ Chỉ hiểu PWM là chức năng xuất tín hiệu đơn giản Liên kết đến chu kỳ·Duty Ratio·Input Capture Dữ liệu bị mất khi tắt nguồn Lưu dữ liệu vào Flash Memory Chỉ sử dụng Super Loop Hiểu cấu trúc chương trình dựa trên Task Cảm thấy các thuật ngữ RTOS khó hiểu Hiểu Scheduler·Priority·Blocked·Suspended Không biết cách truyền dữ liệu giữa các Task Truyền dữ liệu bằng Queue Chỉ thực hành từng chức năng riêng lẻ Triển khai dự án tổng hợp ADC + Queue + FreeRTOS + LED


Bắt đầu mà không cần thiết bị đắt tiền

Khi học các khóa học về hệ thống nhúng, đôi khi bạn sẽ cần đến máy hiện sóng, máy phân tích logic, nhiều loại cảm biến và bo mạch phát triển.

Khóa học này được thiết kế với mục tiêu trải nghiệm các chức năng cốt lõi của STM32 với số lượng thiết bị ít nhất có thể.

Về cơ bản, các thiết bị được sử dụng gồm những thứ sau.

Dụng cụCông dụngSTM32F103C8T6 Blue PillMCU thực hànhST-LinkTải chương trình và DebugCáp USBCấp nguồn và kết nốiDây jumperKết nối các chân cần thiếtPCMở STM32CubeIDE

Ngay cả khi không có máy hiện sóng riêng, hãy tích cực tận dụng tính năng Debug và Live Expressions của STM32CubeIDE.

Trực tiếp quan sát sự thay đổi của các biến để hiểu chương trình hoạt động như thế nào.

Ví dụ, trong buổi học về ADC, thay vì chỉ chạy mã rồi bỏ qua,

Giá trị ADC thô ↓ Điện áp ↓ Nhiệt độ

thay đổi trực tiếp.

Trong buổi học FreeRTOS:

Độ ưu tiên của Task Số lần hoạt động của Task Số lượng dữ liệu trong Queue Giá trị truyền Giá trị nhận

Kiểm tra ... trong Live Expressions để hiểu cách RTOS hoạt động.


Đây không đơn thuần là một bài giảng chỉ yêu cầu bạn gõ theo mã.

Trong khóa học này, mỗi khi xuất hiện một chức năng mới, trước tiên chúng ta sẽ giải thích **“Tại sao nó cần thiết?”**.

Ví dụ, trước khi học về Interrupt, chúng ta hãy suy nghĩ về các vấn đề của phương thức Polling.

Trước khi học Timer, chúng ta sẽ xem xét những hạn chế khi chỉ sử dụng HAL_Delay().

Trước khi học FreeRTOS, trước tiên chúng ta sẽ tìm hiểu những vấn đề có thể phát sinh khi xử lý nhiều chức năng đồng thời trong cấu trúc Super Loop.

Trước khi học Queue, hãy hình dung tình huống cần truyền dữ liệu giữa hai Task vốn được thực thi độc lập với nhau.

Do đó, trình tự cơ bản của bài học luôn như sau.

Phát hiện vấn đề ↓ Hiểu khái niệm ↓ Thiết lập CubeMX ↓ Viết mã trong CubeIDE ↓ Debug ↓ Xác nhận hoạt động thực tế

Tập trung vào việc hiểu tại sao sử dụng hàm đó thay vì học thuộc các hàm.


Sử dụng STM32CubeMX và CubeIDE cùng nhau

Trong phát triển STM32, bạn cũng có thể tự thiết lập trực tiếp tất cả các Register của MCU ngay từ đầu.

Tuy nhiên, ở giai đoạn nhập môn, bạn rất dễ mải học vô số Register chỉ để sử dụng một GPIO mà bỏ lỡ toàn bộ quy trình phát triển.

Trong khóa học này, bạn sẽ thiết lập Peripheral bằng STM32CubeMX và viết chương trình bằng thư viện STM32 HAL.

CubeMX → Cấu hình MCU và Peripheral CubeIDE → Viết mã HAL Library → Điều khiển các chức năng của MCU Debugger → Kiểm tra hoạt động thực tế

Thông qua đó, bạn sẽ nắm được toàn bộ quy trình từ khi dự án STM32 được tạo, Peripheral được khởi tạo cho đến khi mã người dùng được thực thi.


Bắt đầu từ GPIO

처음부터 RTOS를 다루지 않습니다.

Bắt đầu với GPIO cơ bản nhất.

Sau khi hiểu GPIO là gì, MCU Pin được sử dụng làm Input và Output như thế nào, cũng như phương thức Source và Sink là gì, chúng ta sẽ điều khiển LED thực tế.

Sau đó, chúng ta chuyển từ việc xuất đơn giản sang xử lý Event.

GPIO Output ↓ Ngắt ngoài ↓ Ngắt Timer

Các chức năng được mở rộng từng bước như vậy.


Không chỉ sử dụng Polling

Có sự khác biệt giữa cách liên tục kiểm tra trạng thái nút nhấn và cách sử dụng Interrupt để chỉ xử lý khi cần thiết.

Trong bài thực hành External Interrupt, bạn sẽ hiểu về Rising Edge và Falling Edge, đồng thời trực tiếp kiểm tra cách hàm Callback được gọi.

Trong bài thực hành Timer Interrupt, bạn sẽ thực hành cấu trúc trong đó sự kiện phát sinh định kỳ theo một khoảng thời gian nhất định ngay cả khi không có chân pin.

Do đó, không chỉ đơn thuần là viết mã:

Sự kiện phát sinh ↓ Ngắt ↓ Callback ↓ Thực thi mã người dùng

có thể hiểu được luồng quan trọng của chương trình nhúng được gọi là … .


Đọc giá trị thực tế bằng ADC

Không chỉ xử lý các tín hiệu Digital.

Bạn cũng sẽ học quy trình sử dụng ADC của STM32 để chuyển đổi giá trị analog thành giá trị Digital.

Sử dụng cảm biến nhiệt độ bên trong STM32 để thực hành ADC mà không cần thêm cảm biến riêng.

Cảm biến nhiệt độ bên trong ↓ ADC ↓ Giá trị thô ADC ↓ Điện áp ↓ Nhiệt độ

Không chỉ dừng lại ở việc đọc các giá trị ADC, mà còn kết nối đến cách giá trị ADC được chuyển đổi thành đại lượng vật lý thực tế.


PWM được tìm hiểu riêng phần lý thuyết và thực hành.

PWM đôi khi chỉ được giải thích ở mức điều khiển độ sáng LED, nhưng trong các hệ thống nhúng thực tế, đây là một chức năng rất quan trọng.

Trong bài giảng, về PWM:

Tần số
Chu kỳ
Tỷ lệ nhiệm vụ

Trước hết, hãy hiểu mối quan hệ.

Sau đó, sử dụng cài đặt Timer của CubeMX để trực tiếp tạo PWM.

Bạn cũng sẽ trải nghiệm quá trình Capture Rising Edge và Falling Edge thông qua Input Capture để hiểu chu kỳ và Duty Ratio của tín hiệu đầu vào.

Tức là,

Tạo PWM

không chỉ kết thúc ở đó,

Hiểu PWM là gì ↓ Tạo PWM ↓ Đo thời gian của PWM

Tiếp tục cho đến khi đạt được điều đó.


Hãy thử giữ lại giá trị ngay cả khi mất điện

Các biến trong RAM sẽ biến mất khi tắt nguồn.

Vậy thì những dữ liệu cần được duy trì ngay cả khi tắt rồi bật nguồn, chẳng hạn như các giá trị cài đặt của sản phẩm hoặc số lần sử dụng, nên được lưu ở đâu?

Trong bài thực hành Flash Memory, dữ liệu được:

Mở khóa ↓ Xóa ↓ Ghi ↓ Đọc

lưu theo trình tự.

Thông qua ví dụ Boot Counter, bạn có thể xác nhận rằng giá trị tăng lên mỗi khi MCU được Reset và giá trị trước đó vẫn được giữ lại ngay cả khi tắt rồi bật nguồn.

Qua đó, bạn sẽ trải nghiệm sự khác biệt giữa bộ nhớ khả biến và bộ nhớ bất biến bằng mã nguồn thực tế.


Và bắt đầu với FreeRTOS.

Sau khi trải nghiệm những kiến thức cơ bản về thiết bị ngoại vi, chúng ta sẽ chuyển sang FreeRTOS.

Ngay từ đầu, chúng ta không đi sâu vào tất cả các chức năng RTOS khó.

Trước tiên, hãy đặt câu hỏi.

“Tại sao cần RTOS?”

Xem xét các vấn đề có thể phát sinh khi chạy nhiều chức năng trong Super Loop, đồng thời hiểu lý do bắt đầu từ việc chia chương trình thành các Task.

Super Loop Task A → Task B → Task C → Lặp lại

ở,

FreeRTOS Task A ─┐ Task B ─┼→ Bộ lập lịch Task C ─┘

Mở rộng thành một cấu trúc.


Quan sát Scheduler và Trạng thái Task bằng mắt thường

Điều quan trọng trong FreeRTOS không chỉ đơn giản là tạo nhiều Task.

Bạn cần hiểu khi nào Task được thực thi và khi nào Task phải chờ.

Trong bài giảng:

Đang chạy Sẵn sàng Bị chặn Tạm ngưng

học các trạng thái này.

Khi gọi osDelay(), CPU không dừng lại mà Task tương ứng chuyển sang trạng thái Blocked và Task khác có thể được thực thi.


Priority ảnh hưởng như thế nào đến việc thực thi thực tế?

So sánh trực tiếp khi Priority của hai Task giống nhau và khi tăng Priority của một Task.

LedTask Bình thường CounterTask Bình thường

trong,

LedTask Normal CounterTask AboveNormal

thay đổi thành.

Trong Live Expressions, hãy quan sát số lần thực hiện của từng Task để kiểm tra Task có Priority cao giành quyền thực thi CPU như thế nào.

Và sử dụng Suspend và Resume để:

Đang chạy / Sẵn sàng ↓ Bị tạm dừng ↓ Tiếp tục ↓ Sẵn sàng

Cũng thực hành quy trình này.


Truyền dữ liệu giữa các Task

Nếu đã tạo nhiều Task, sẽ nảy sinh câu hỏi sau.

“Làm thế nào để sử dụng giá trị do SensorTask tạo ra trong ControlTask?”

Tại đây, Queue xuất hiện.

ProducerTask │ │ Đưa vào ▼ Queue │ │ Lấy ra ▼ ConsumerTask

Hiểu khái niệm Producer và Consumer, đồng thời truyền dữ liệu theo phương thức FIFO.

Ngoài ra, khi Producer nhanh hơn Consumer:

Queue tăng dữ liệu ↓ Queue đầy ↓ Có thể Put thất bại

Bạn cũng trực tiếp kiểm tra tình huống.

Chúng tôi xây dựng nội dung để bạn có thể hiểu Queue không chỉ là một API đơn thuần mà còn là đường truyền dữ liệu kết nối giữa các Task.


Cuối cùng, chúng ta sẽ hoàn thiện một Embedded System.

Trong bài 14 cuối cùng, chúng ta sẽ tổng hợp tất cả những nội dung đã học cho đến nay.

Chủ đề của dự án là:

Điều khiển tốc độ nhấp nháy LED theo nhiệt độ bên trong

.

STM32 đo nhiệt độ từ cảm biến nhiệt độ bên trong bằng ADC.

Nhiệt độ được SensorTask đo sẽ được truyền đến ControlTask thông qua Queue.

Trong ControlTask, nhiệt độ được đánh giá để quyết định khoảng thời gian bật/tắt LED.

LedTask điều khiển đèn LED PB2 theo khoảng thời gian đã được xác định.

Cảm biến nhiệt độ bên trong ↓ ADC ↓ Tác vụ cảm biến ↓ Hàng đợi cảm biến ↓ Tác vụ điều khiển ↓ blink_interval_ms ↓ Tác vụ LED ↓ LED PB2

Khi nhiệt độ của MCU thấp, LED sẽ nhấp nháy chậm.

Khi làm nóng MCU bằng máy sấy tóc, nếu nhiệt độ bên trong tăng lên:

Nhiệt độ ↑ ↓ Khoảng thời gian nhấp nháy ↓ ↓ Tốc độ nhấp nháy LED ↑

Đèn LED nhấp nháy nhanh hơn.

Đây là lúc ADC, Queue, Task, Scheduler, osDelay() và GPIO được kết nối với nhau trong một hệ thống.


Lộ trình học tập của khóa học này

Nội dung cốt lõi của khóa học Bài 1: Tìm hiểu về hệ thống nhúng và Blue Pill Bài 2: Chuẩn bị môi trường phát triển Blue Pill Bài 3: Tìm hiểu về GPIO và thư viện HAL Bài 4: Điều khiển LED bằng GPIO Output Bài 5: Tìm hiểu về External Interrupt Bài 6: Điều khiển thời gian bằng Timer Interrupt Bài 7: Đọc tín hiệu analog bằng ADC Bài 8: Tìm hiểu về PWM và SPWM Bài 9: Thực hành tạo PWM và Input Capture Bài 10: Lưu dữ liệu vào Flash Memory Bài 11: Tìm hiểu lý do cần RTOS và thực hành FreeRTOS đầu tiên Bài 12: Task Priority và điều khiển trạng thái Bài 13: Truyền dữ liệu giữa các Task bằng Queue Bài 14: Dự án tổng hợp FreeRTOS

Ở phần đầu, bạn sẽ lần lượt tìm hiểu từng Peripheral của MCU, còn ở phần sau, bạn sẽ sử dụng FreeRTOS để kết nối nhiều chức năng thành một hệ thống duy nhất.


Khuyến nghị cho những người sau đây

Đối tượng học | Lý do nên tham gia Người mới bắt đầu với STM32 | Bắt đầu từng bước từ môi trường phát triển Người muốn biết bước tiếp theo sau Arduino | Trải nghiệm quy trình phát triển STM32 dựa trên HAL Sinh viên đại học ngành điện, điện tử hoặc máy tính | Có thể nắm được quy trình cơ bản của thực hành MCU và RTOS Người đang chuẩn bị đồ án tốt nghiệp | Có thể kết nối các kiến thức nền tảng về GPIO, ADC, PWM, Flash và RTOS Người trước đây chỉ sao chép và sử dụng mã ví dụ STM32 | Giải thích từ những khái niệm cơ bản, bao gồm cả lý do cần sử dụng mã Người lần đầu làm quen với FreeRTOS | Học theo trình tự Task → Scheduler → Priority → Queue Người không chuyên ngành nhưng quan tâm đến firmware nhúng | Giải thích bằng các ví dụ thực tế và hình minh họa trong khả năng có thể Người muốn học từ thiết kế phần cứng đến firmware | Có thể nắm được quy trình phần mềm trực tiếp điều khiển MCU


Cần có kiến thức nền tảng ở mức nào?

Không cần có kinh nghiệm chuyên môn về hệ thống nhúng.

Tuy nhiên, nếu bạn nắm được những kiến thức cơ bản về ngôn ngữ C ở mức độ sau thì sẽ thuận tiện hơn khi tham gia khóa học.

biến
if / else
for / while
hàm
khái niệm cơ bản về mảng

Không cần phải biết trước rõ về Pointer hay RTOS.

Giải thích từ những phần cần thiết để hiểu mã được sử dụng trong bài giảng có ý nghĩa gì.


Phạm vi được đề cập trong khóa học này

Mục tiêu của khóa học này không phải là tìm hiểu tất cả các Peripheral của STM32 trong một lần.

trải nghiệm xuyên suốt từ GPIO đến FreeRTOS dành cho người học mới bắt đầu với firmware nhúng.

Vì vậy, khóa học tập trung vào GPIO, External Interrupt, Timer Interrupt, ADC, PWM, Input Capture, Flash Memory, FreeRTOS Task, Scheduler, Priority, Suspend/Resume và Queue.

Các Peripheral giao tiếp như UART, SPI, I2C, CAN, USB hoặc các chức năng đồng bộ hóa RTOS nâng cao như Semaphore·Mutex không nằm trong phạm vi của khóa học này.

Thay vì liệt kê nhiều tính năng, chúng tôi ưu tiên cho từng tính năng hoạt động thực tế và kết nối với khái niệm tiếp theo.


Nếu học cùng với bài giảng đầu tiên thì

Trong khóa học “Tự thiết kế mạch điện tử (bo mạch phát triển) – từ sơ đồ mạch đến PCB Artwork”, chúng tôi đã đề cập đến quá trình tạo ra phần cứng bằng STM32.

Trong bài giảng này, chúng ta sẽ tìm hiểu về firmware điều khiển phần cứng bằng STM32.

Mối quan hệ giữa hai khóa học như sau.

Bài giảng thứ nhất Thiết kế mạch ↓ Sơ đồ nguyên lý ↓ Thiết kế PCB ↓ Hoàn thiện bo mạch phát triển Bài giảng thứ hai Môi trường phát triển ↓ GPIO / Interrupt / ADC / PWM ↓ Flash ↓ FreeRTOS ↓ Hoàn thiện hệ thống nhúng

Nếu bạn muốn học cả phần cứng và firmware, bạn có thể học liên tiếp hai khóa học này.


Không chỉ dừng lại ở việc bật đèn LED.

Điều quan trọng trong khóa học này không phải là độ dài của mã nguồn.

Mục tiêu là trong quá trình học STM32, bạn có thể tự mình trả lời được những câu hỏi sau.

Tại sao sử dụng Interrupt?

Tại sao cần Timer?

Các con số ADC có ý nghĩa gì?

Chu kỳ và tỷ lệ nhiệm vụ của PWM được xác định như thế nào?

Tại sao sử dụng Flash?

Tại sao cần chia chương trình thành nhiều Task?

Khi Priority thay đổi, Scheduler sẽ thực thi Task nào?

Dữ liệu giữa các Task được truyền như thế nào?

Nếu có thể trả lời những câu hỏi này, bạn không chỉ đơn thuần làm theo ví dụ mà đã bắt đầu hiểu cấu trúc của chương trình nhúng.


Sau khi hoàn thành bài giảng

Ban đầu:

Làm thế nào để bật LED?

Bắt đầu từ đó.

Và cuối cùng:

Cảm biến đo dữ liệu ↓ Task truyền dữ liệu ↓ Task khác đưa ra phán đoán ↓ Thiết bị đầu ra phản hồi

Tự mình triển khai một Embedded System.

Mục tiêu của khóa học này không phải là ghi nhớ tất cả các chức năng của STM32.

Trải nghiệm cách thiết lập MCU, viết mã, kiểm tra hoạt động và kết nối nhiều chức năng thành một hệ thống duy nhất.

Đó là mục tiêu của khóa học này.


Từ GPIO đến FreeRTOS.

Hãy tự mình trải nghiệm quy trình đầu tiên trong phát triển firmware STM32.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Dành cho những ai từng thắc mắc các thiết bị điện tử hoạt động như thế nào

  • Sinh viên bắt đầu theo học các chuyên ngành liên quan đến điện tử, máy tính và AI

  • Dành cho những ai tò mò về bước tiếp theo sau Arduino (những người muốn triển khai MCU cho công việc thực tế)

  • Sinh viên chuẩn bị đồ án tốt nghiệp · thiết kế capstone

  • Dành cho những ai quan tâm đến việc phát triển hệ thống nhúng (sản phẩm điện tử) nhưng không biết nên bắt đầu từ đâu

Cần biết trước khi bắt đầu?

  • Kỹ năng sử dụng máy tính cơ bản

  • Kiến thức cơ bản về ngôn ngữ C (Không biết cũng không sao.)

  • Cơ bản về mạch điện tử (Không biết cũng không sao.)

Xin chào
Đây là jungukko5750

Xác minh sự nghiệp

51

Học viên

8

Đánh giá

3

Trả lời

4.8

Xếp hạng

2

Các khóa học

Giới thiệu giảng viên

Xin chào. Tôi là Tiến sĩ Kỹ thuật Điện tử (hiện là Giáo sư), người đang nghiên cứu và giảng dạy về mạch điện tử và hệ thống nhúng.

Tôi đã từng trải nghiệm nhiều lĩnh vực công nghiệp khác nhau như làm việc tại Samsung Electronics, nghiên cứu và phát triển (R&D) tại các doanh nghiệp vừa và nhỏ, thực hiện các dự án R&D của chính phủ. Hiện tại, tôi đang giảng dạy trong lĩnh vực Kỹ thuật Điện tử và AI tại trường đại học, đồng thời cùng các sinh viên nghiên cứu về thiết kế phần cứng và hệ thống nhúng.

Trong suốt thời gian hướng dẫn vô số sinh viên, tôi đã phát hiện ra một vấn đề chung.

Đó là việc nhiều người có thể sử dụng các bo mạch phát triển như STM32, ESP32 hay Nordic để viết chương trình, nhưng lại không biết rõ bản thân bo mạch phát triển đó được tạo ra như thế nào.

Bạn có thể làm theo các sơ đồ mạch điện trên mạng, nhưng nếu không hiểu tại sao chúng lại được thiết kế như vậy thì sẽ rất khó để tự mình phát triển các sản phẩm mới.

Vì vậy, tôi đã tạo ra khóa học này.

Trong bài giảng này, không chỉ đơn thuần là vẽ theo mạch điện,

  • Tại sao lại sử dụng mạch điện như thế này

  • cách lựa chọn linh kiện như thế nào

  • cách thiết kế PCB như thế nào

  • Cách các sản phẩm thực tế được chế tạo như thế nào

cùng nhau học hỏi và trực tiếp trải nghiệm toàn bộ quá trình hoàn thiện một bảng mạch phát triển.

Tôi coi trọng việc "học thông qua việc trực tiếp chế tạo" hơn là những lý thuyết khó hiểu.

Khi các bạn kết thúc khóa học này, các bạn sẽ không chỉ đơn thuần là một người sử dụng bo mạch phát triển, mà là

Bạn sẽ trở thành một kỹ sư có thể tự mình thiết kế và chế tạo các mạch điện tử cũng như bo mạch phát triển của riêng mình.


Kinh nghiệm chính

  • Tiến sĩ Kỹ thuật Điện tử

  • Làm việc tại Samsung Electronics

  • Thực hiện các dự án R&D của chính phủ

  • Phát triển mạch điện tử và hệ thống nhúng

  • Thiết kế phần cứng dựa trên STM32

  • Thiết kế PCB và phát triển sản phẩm

  • Giảng dạy lĩnh vực Kỹ thuật điện tử · AI tại trường đại học

  • Thực hiện hợp tác đại học - doanh nghiệp và phát triển công nghệ doanh nghiệp


Lĩnh vực quan tâm

  • Thiết kế mạch điện tử

  • Thiết kế PCB Artwork

  • STM32 và hệ thống nhúng

  • Cảm biến và hệ thống IoT

  • Thiết bị chăm sóc sức khỏe kỹ thuật số

  • Hệ thống nhúng dựa trên AI

  • Phát triển và sản xuất hàng loạt sản phẩm

Thêm

Chương trình giảng dạy

Tất cả

14 bài giảng ∙ (7giờ 17phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Chưa có đủ đánh giá.
Hãy trở thành tác giả của một đánh giá giúp mọi người!

Khóa học khác của jungukko5750

Hãy khám phá các khóa học khác của giảng viên!

Khóa học tương tự

Khám phá các khóa học khác trong cùng lĩnh vực!

Ưu đãi có thời hạn, kết thúc sau 5 ngày ngày

11 ₫

89%

2.722.682 ₫