آموزش درایورهای سیستم‌های نهفته: ساخت درایور و کنترل بازی دایناسور - آخرین آپدیت

دانلود Embedded driver: Build Drivers and Control Dino Game

نکته: ممکن هست محتوای این صفحه بروز نباشد ولی دانلود دوره آخرین آپدیت می باشد.
نمونه ویدیوها:
توضیحات دوره: یاد بگیرید چگونه درایورهای GPIO، USART و Timer را از پایه بنویسید و آن‌ها را در یک پروژه جذاب یعنی بازی دایناسور پیاده‌سازی کنید. تسلط بر توسعه درایورهای Bare-metal برای محیط‌های ضروری مانند GPIO، USART/UART و تایمرها (Output Compare و PWM) بدون استفاده از HAL، بدون جادو، و با کنترل کامل. یاد بگیرید چگونه دفترچه‌های راهنمای فنی (Technical Reference Manuals) را رمزگشایی کرده و جزئیات سطح رجیستر را استخراج کنید؛ مهارتی که در تمامی خانواده‌های میکروکنترلر و نه تنها STM32 قابل استفاده است. مانند یک مهندس سیستم‌های نهفته فکر کنید: عیب‌یابی کنید، بسازید و مشکلات واقعی را حل کنید. یک بازی واقعی دایناسور را با استفاده از درایورهای نهفته‌ای که خودتان نوشته‌اید کنترل کنید. درک معماری میکروکنترلر: باس‌ها، نمودارهای بلوکی و نحوه ارتباط CPU با محیط‌های جانبی. پیاده‌سازی برنامه‌نویسی مبتنی بر وقفه (Interrupt-driven) برای GPIOها، USART و تایمرها. شکفتن تفکر خلاق با بررسی اینکه چگونه سیستم‌های نهفته می‌توانند بازی‌ها را اجرا کنند، نه فقط LEDها و سنسورها. کسب اعتماد به نفس در تکنیک‌های دیباگ با استفاده از Breakpoints و مشاهده رجیسترها برای رفع خطا. به دست آوردن ذهنیت یک توسعه‌دهنده: به جای اتکا به کتابخانه‌ها، ابزارهای خودتان را بسازید و درک کنید در پایین‌ترین سطح چه اتفاقی می‌افتد. سازماندهی کدها به صورت شفاف با ساختار مناسب، کامنت‌گذاری و جداسازی صحیح. پیشنیازها: دانش مقدماتی زبان برنامه‌نویسی C.

من هم مسیرم را به عنوان یک مبتدی شروع کردم و نمی‌دانستم از کجا آغاز کنم. امروز با اعتماد به نفس کامل، دانش سیستم‌های نهفته را در پروژه‌های حرفه‌ای به کار می‌گیرم و در بحث‌های فنی سطح خبره شرکت می‌کنم. به همین دلیل دقیقاً می‌دانم کدام بخش‌ها برای مبتدیان گیج‌کننده است و ماموریتم را بر این گذاشته‌ام که آن‌ها را ساده و واضح توضیح دهم.

آیا آماده‌اید که اتکا به کتابخانه‌ها را کنار بگذارید و نوشتن درایورهای خودتان را از صفر شروع کنید؟

این دوره عملی برای آموزش ساخت درایورهای ضروری سیستم‌های نهفتهبرای GPIO، USART/UART و تایمرهاطراحی شده است؛ بدون HAL، بدون انتزاع و بدون میان‌بر. چه مبتدی باشید و چه علاقه‌مندی که به صورت خودآموز یاد گرفته است، این دوره به شما کمک می‌کند تا با برنامه‌نویسی مستقیم در سطح رجیستر، کنترل کامل میکروکنترلر را به دست آورید.

به جای تئوری‌های بی‌پایان، ما از روش یادگیری پروژه-محوراستفاده می‌کنیم. در طول دوره، هر درایوری که می‌سازید را برای کنترل یک بازی دایناسورتعاملی و سرگرم‌کننده به کار می‌گیرید؛ روشی عالی برای مشاهده فوری نتیجه کدهایتان و حفظ انگیزه در مسیر پیشرفت.

شما به هیچ تجربه قبلی در برنامه‌نویسی سطح پایین سیستم‌های نهفته نیاز ندارید. ما از همان ابتدا شروع می‌کنیم: نصب ابزارهای لازم، آماده‌سازی محیط و نوشتن اولین درایور شما به صورت گام‌به‌گام.

برای یادگیری موثرتر، این دوره از انیمیشن‌ها، نمودارها و دیاگرام‌هابرای ساده‌سازی مفاهیم پیچیده استفاده می‌کند تا شما را با اسلایدهای متنی خسته نکند. همچنین من از سبک کدنویسی زندهاستفاده می‌کنم، بنابراین احساس می‌کنید من و شما یک صفحه نمایش مشترک داریمو شانه به شانه هم یاد می‌گیریم. شما دقیقاً خواهید دید که من چگونه فکر می‌کنم، عیب‌یابی می‌کنم و کدهای واقعی را می‌نویسم.

این دوره با دقت طراحی شده تا در حدود ۸.۵ ساعتتکمیل شود، بنابراین می‌توانید آن را در یک تا دو هفته (یا حتی سریع‌تر) به پایان برسانید. در نهایت، شما مهارت‌های عملی، تجربه پروژه واقعی و اعتماد به نفس لازم برای ساخت سیستم‌های نهفته بدون اتکا به کتابخانه‌های آماده را به دست خواهید آورد.

اگر آماده‌اید کنترل کامل سیستم‌های نهفته را به دست بگیرید و کدتان را در دنیای واقعی ببینید، این دوره برای شماست.

بیایید درایورها را بسازیم و دایناسور را به دویدن بیندازیم!


سرفصل ها و درس ها

معرفی دوره و انگیزه Course overview & Motivation

  • حتما تماشا کنید WATCHME

  • نحوه تعامل بازی دایناسور و STM32 How the Dino Game and STM32 work together

اجرای بازی Run the game

  • دانلود بازی دایناسور Download Dino game

  • اجرای بازی دایناسور در ویندوز Run Dino game on Windows

  • اجرای بازی دایناسور در لینوکس Run Dino game on Linux

  • عیب‌یابی و پشتیبانی Troubleshooting and support

راه اندازی محیط توسعه Development environment setup

  • این بخش درباره چیست؟ What is this section about?

  • معرفی برد STM32F407 DISC؛ چه امکاناتی روی این برد داریم؟ STM32F407 DISC board introduction - What do we have on this board?

  • اسناد مورد نیاز Required document

  • نرم‌افزارهای مورد نیاز Required software

  • نصب Keil uVision 5 Install Keil uVision 5

  • نصب VSCode Install VSCode

  • نصب درایور STLink Install STLink driver

  • نصب Git Install Git

  • دانلود Hercules Download Hercules

  • نصب Pack Pack installation

  • مقداردهی Git init Git init

  • برنامه Hello world Hello world

  • اولین کامیت (Commit) First commit

  • کلمه کلیدی Volatile Volatile keyword

  • کامیت Volatile و مقایسه کد بین کامیت‌ها Volatile commit and code compare between commits

درون میکروکنترلر: معماری، سیستم باس، نقشه حافظه و کلاک Inside the MCU: Architecture, Bus system, Memory map and Clock

  • این بخش درباره چیست؟ What is this section about?

  • نمودار بلوکی میکروکنترلر MCU block diagram

  • مثال اتصال باس داده Data bus connection example

  • نمودار بلوکی ساده شده میکروکنترلر Simplified MCU block diagram

  • ماتریس باس Bus matrix

  • سیستم کلاک میکروکنترلر MCU clock system

  • نقشه حافظه Memory map

  • کوییز بخش Section Quiz

بررسی عمیق GPIO: ورودی و خروجی GPIO deep dive: Input & Output

  • در بخش‌های GPIO چه مباحثی داریم؟ What do we have in GPIO sections?

  • GPIO چیست؟ What is GPIO?

  • بافر خروجی Output buffer

  • بافر ورودی Input buffer

  • ورودی شناور (Floating) Input floating

  • ورودی Pull-up/Pull-down Input pull-up/pull-down

  • خروجی Push-pull و Open-drain Output push-pull and Output open drain

  • سرعت خروجی Output speed

  • کوییز بخش Section Quiz

GPIO در عمل: پیکربندی در سطح میکروکنترلر GPIO in practice: MCU-level configuration

  • GPIO در STM32F407 GPIO in STM32F407

  • پیکربندی ورودی در میکروکنترلر Input configuration in the MCU

  • پیکربندی خروجی در میکروکنترلر Output configuration in the MCU

  • پیکربندی عملکرد جایگزین (Alternate Function) Alternate function configuration in the MCU

  • پیکربندی آنالوگ در میکروکنترلر Analog configuration in the MCU

  • کوییز بخش Section Quiz

تسلط بر رجیسترهای GPIO Mastering GPIO registers

  • بهترین روش برای یادگیری این بخش Best way to approach this section

  • رجیسترهای GPIO GPIO registers

  • رجیستر حالت پین GPIO GPIO pin mode register

  • رجیستر نوع خروجی GPIO GPIO output type register

  • رجیستر Pull-up/Pull-down در GPIO GPIO pull-up/pull-down register

  • رجیستر سرعت خروجی GPIO GPIO output speed register

  • رجیستر داده ورودی GPIO GPIO input data register

  • رجیستر داده خروجی GPIO GPIO output data register

  • رجیستر Set/Reset بیت‌های GPIO GPIO bit set/reset register

  • رجیستر پیکربندی قفل پورت GPIO GPIO port lock configuration register

  • رجیسترهای عملکرد جایگزین GPIO GPIO alternate function registers

  • کوییز بخش Section Quiz

کار عملی: نوشتن اولین درایور GPIO Hands-On: Writing your first GPIO driver

  • چگونه این بخش را به طور موثر یاد بگیریم؟ How to learn this section effectively?

  • نحوه دسترسی به رجیسترهای GPIO با استفاده از Struct How to access GPIO registers by using Struct

  • تعریف استراکت رجیسترهای GPIO Define GPIO register definition struct

  • تعریف آدرس پایه (Base Address) برای GPIO GPIO base address definition

  • استراکت پیکربندی پین GPIO GPIO pin configuration struct

  • ماکروهای پیکربندی پین Pin configuration macros

  • پروتوتایپ توابع Function prototypes

  • تابع ()GPIO_Init GPIO_Init()

  • تابع ()GPIO_Init (ادامه) GPIO_Init() (continued)

  • تابع ()GPIO_WritePin GPIO_WritePin()

  • تست تابع ()GPIO_WritePin؛ چشمک‌زن LED GPIO_WritePin() testing - Blink an LED

  • فعال‌سازی کلاک GPIO Enable GPIO clock

  • تعریف ماکروهای فعال/غیرفعال سازی کلاک و برنامه تست Define GPIO clock enable/disable macros and test application

  • پیکربندی Reset و Run Reset and run configuration

  • کامیت کردن کد Commit code

  • کنترل LEDهای خارجی Control external LEDs

  • تابع ()GPIO_ReadPin GPIO_ReadPin()

  • تست تابع ()GPIO_ReadPin؛ خواندن وضعیت دکمه کاربر GPIO_ReadPin() testing - Read user button state

  • خواندن وضعیت دکمه خارجی Read external button's state

  • تابع ()GPIO_TogglePin GPIO_TogglePin()

  • تست تابع ()GPIO_TogglePin؛ تغییر وضعیت LED با فشردن دکمه GPIO_TogglePin() testing- Press button to toggle an LED state

  • کامیت کد و چالش Commit code and challenge

  • پذیرش چالش GPIO! GPIO challenge accepted!

  • تابع ()GPIO_WritePinBit و تست آن GPIO_WritePinBit() and testing

  • تابع ()GPIO_LockConf GPIO_LockConf()

  • تست تابع ()GPIO_LockConf؛ قفل کردن رجیسترهای پیکربندی GPIO GPIO_LockConf() testing - Lock GPIO configuration registers

  • کدهایتان را کامنت کنید! Comment your code!

درک وقفه‌ها: مفاهیم و موارد استفاده Understanding interrupts: Concepts & Use cases

  • در بخش وقفه‌ها چه مباحثی داریم؟ What do we have in interrupt sections?

  • مفهوم پایه وقفه‌ها Basic concept of interrupts

  • جدول بردار (Vector Table) Vector table

  • نحوه مدیریت وقفه توسط برنامه How the program handles an interrupt

  • کوییز بخش Section Quiz

وقفه GPIO در میکروکنترلر GPIO interrupt in the MCU

  • وقفه GPIO با EXTI و NVIC GPIO interrupt with EXTI and NVIC

  • درون EXTI Inside the EXTI

  • راه اندازی وقفه GPIO GPIO interrupt setup

  • کوییز بخش Section Quiz

کار عملی: کدنویسی وقفه GPIO Hands-On: Coding GPIO interrupt

  • استراکت تعریف رجیسترهای SYSCFG SYSCFG register definition struct

  • استراکت تعریف رجیسترهای EXTI EXTI register definition struct

  • تابع ()GPIO_IT_Init؛ مراحل پیکربندی GPIO_IT_Init() - Configuration steps

  • تابع ()GPIO_IT_Init؛ تعیین پورت GPIO برای مپ شدن GPIO_IT_Init() - Specify GPIO port to be mapped

  • تابع ()GPIO_IT_Init؛ پیکربندی EXTI GPIO_IT_Init() - EXTI configuration

  • تابع ()GPIO_IT_Init؛ تعریف استراکت رجیسترهای NVIC GPIO_IT_Init() - Define NVIC register definition struct

  • تابع ()GPIO_IT_Init؛ متد ()NVIC_SetPriority GPIO_IT_Init() - NVIC_SetPriority()

  • تابع ()GPIO_IT_Init؛ متد ()NVIC_EnableIRQ GPIO_IT_Init() - NVIC_EnableIRQ()

  • تابع ()GPIO_IT_Init؛ تعریف ماکروهای شماره IRQ GPIO_IT_Init()- Define IRQ number macros

  • وقفه GPIO؛ تشخیص فشردن دکمه GPIO interrupt - Button press detection

  • وقفه GPIO؛ زمان دیباگ! GPIO interrupt - It's debug time!

  • ایجاد سیگنال «پرش» برای دایناسور Create the Dino "Jump" signal

توضیحات USART: ساختار فریم و حالت‌های ارتباطی USART explained: Frame structure & Communication modes

  • در بخش‌های USART چه مباحثی داریم؟ What do we have in the USART sections?

  • USART چیست؟ What is USART?

  • پین‌های USART USART pins

  • حالت همگام (Synchronous) در USART USART Synchronous mode

  • حالت ناهمگام (Asynchronous) در USART USART Asynchronous mode

  • حالت کنترل جریان سخت‌افزاری (Hardware Flow Control) Hardware flow control mode

  • کوییز میان‌دوره Mid Quiz

  • فرمت فریم Frame format

  • بیت شروع و بیت پایان Start bit/Stop bit

  • بیت توازن (Parity bit) Parity bit

  • محدودیت‌های بررسی Parity Parity check limitation

  • نرخ انتقال (Baud rate) Baud rate

  • بیش‌نمونه‌برداری (Oversampling) Oversampling

  • محاسبه Baud rate Baud rate calculation

  • مثال ۱ محاسبه Baud rate Baud rate calculation Example 1

  • مثال ۲ محاسبه Baud rate Baud rate calculation Example 2

  • مدیریت سرریز (Overflow) در محاسبه Baud rate Baud rate calculation Overflow handling

  • پیاده‌سازی محاسبه Baud rate در کد Baud rate calculation in code

  • کوییز بخش Section Quiz

کار عملی: نوشتن درایور USART Hands-On: Writing your USART driver

  • مرور کلی رجیسترهای USART USART registers overview

  • تعریف استراکت رجیسترهای USART Define USART register definition struct

  • تعریف استراکت پیکربندی USART Define USART configuration struct

  • تعریف استراکت پیکربندی USART (ادامه) Define USART configuration struct (continued)

  • تابع ()USART_Init؛ مراحل پیکربندی USART_Init() - Configuration steps

  • تابع ()USART_Init؛ پیاده‌سازی USART_Init() - Implementation

  • دریافت فرکانس کلاک APB1 Get APB1 clock frequency

  • دریافت فرکانس کلاک APB2 Get APB2 clock frequency

  • تابع ()USART_Transmit USART_Transmit()

  • تابع ()USART_Receive USART_Receive()

  • پیکربندی یک محیط جانبی USART Configure a USART peripheral

  • کنترل LED از طریق دستورات Hercules Control an LED by commands from Hercules

کار عملی: وقفه‌های USART؛ ارتباط سریال بهینه Hands-On: USART interrupts: Efficient serial communication

  • وقفه ارسال و دریافت هنگام فشردن دکمه Button press transmit and receive interrupt

  • وقفه ارسال و دریافت هنگام فشردن دکمه (ادامه) Button press transmit and receive interrupt (continued)

  • تست وقفه ارسال و دریافت هنگام فشردن دکمه Button press transmit and receive interrupt - testing

  • ارسال سیگنال «پرش» به بازی دایناسور Send the Dino "Jump" signal to the Dino game

اصول تایمر: شمارش و تولید رویداد به‌روزرسانی Timer fundamentals: Counting and update event generation

  • در بخش‌های تایمر چه مباحثی داریم؟ What do we have in Timer sections?

  • معرفی مقدماتی تایمر Basic timer introduction

  • انواع تایمرها در STM32F407 و ویژگی‌های آن‌ها Types of timers in STM32F407 and their characteristics

  • محاسبه دوره (Period) تایمر Timer period calculation

  • کوییز بخش Section Quiz

کار عملی: ساخت درایور پایه تایمر Hands-On: Building basic timer driver

  • تعریف استراکت رجیسترهای تایمر Define timer register definition struct

  • تعریف آدرس‌های پایه تایمر و کنترل کلاک Define timer base addresses and clock control

  • تعریف استراکت پیکربندی پایه تایمر Define timer base configuration struct

  • تابع ()TIM_Base_Init TIM_Base_Init()

  • توابع ()Timer_Base_Start و ()Timer_Base_Stop Timer_Base_Start() and Timer_Base_Stop()

  • تولید تأخیر غیرمسدودکننده (Non-blocking) با تایمر Non-blocking delay generation with timer

  • LED چشمک‌زن با تولید تأخیر توسط تایمر Blinky LED with timer delay generation

کار عملی: وقفه‌های تایمر Hands-On: Timer interrupts

  • وقفه رویداد به‌روزرسانی تایمر Timer update event interrupt

  • تست وقفه رویداد به‌روزرسانی با لرزش‌گیر دکمه (Debouncing) Update event interrupt testing with button debouncing

مقایسه خروجی و PWM: مفاهیم و موارد استفاده Output compare & PWM: Concepts & Use cases

  • مقایسه خروجی (Output Compare) Ouput compare

  • مدولاسیون پهنای پالس (PWM) PWM - Pulse Width Modulation

  • تولید PWM با استفاده از واحد مقایسه خروجی PWM generation using output compare unit

  • کنترل شدت روشنایی LED با PWM Control LED brightness with PWM

  • کوییز بخش Section Quiz

کار عملی: توسعه درایور PWM و کاربرد آن Hands-On: PWM driver development & Application

  • به‌روزرسانی استراکت تعریف رجیستر تایمر Update timer register definition struct

  • درک استراکت پیکربندی مقایسه خروجی Understanding the output compare configuration struct

  • تعریف استراکت پیکربندی مقایسه خروجی Define output compare configuration struct

  • تابع ()TIM_OC_Init TIM_OC_Init()

  • مقداردهی مقایسه خروجی برای تولید PWM Initialize output compare to generate PWM

  • پیاده‌سازی کنترل روشنایی LED از طریق دستور Control LED brightness by command - Implementation

  • تست کنترل روشنایی LED از طریق دستور Control LED brightness by command - Testing

  • کنترل روشنایی LED بر اساس پرش‌های دایناسور Control LED brightness based on Dino’s Jumps

نمایش نظرات

آموزش درایورهای سیستم‌های نهفته: ساخت درایور و کنترل بازی دایناسور
جزییات دوره
8.5 hours
156
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
165
4.7 از 5
دارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Embedded Coding Embedded Coding

مهندس ارشد نرم‌افزار