درایور تعبیه شده: ساخت درایورها و کنترل بازی Dino
✅ سرفصل و جزئیات آموزش
آنچه یاد خواهید گرفت:
- تسلط به توسعه درایور bare-metal برای تجهیزات جانبی ضروری مانند GPIO ،USART/UART ،Timer (Output Compare و PWM) - بدون HAL، بدون جادو، فقط کنترل کامل
- یادگیری رمزگشایی راهنماهای مرجع فنی و استخراج جزئیات سطح رجیستر - مهارتی قابل انتقال به هر خانواده میکروکنترلر، نه فقط STM32
- تفکر مانند یک مهندس Embedded: دیباگ، ساخت و حل مشکلات واقعی
- کنترل یک بازی واقعی Dino با استفاده از درایورهای Embedded خودتان
- درک معماری میکروکنترلر: باسها، بلوک دیاگرامها و نحوه صحبت CPU با تجهیزات جانبی
- پیادهسازی برنامهنویسی وقفه محور برای GPIOها، USART و تایمرها
- آزاد کردن تفکر خلاق با بررسی اینکه چگونه سیستمهای Embedded میتوانند بازیها را قدرت دهند - نه فقط LEDها و سنسورها
- به دست آوردن اعتماد به نفس در تکنیکهای دیباگ با استفاده از breakpoints و نمای watch رجیستر برای عیبیابی
- کسب ذهنیت توسعهدهنده: به جای تکیه بر کتابخانهها، ابزارهای خود را خواهید ساخت - درک آنچه در پایینترین سطح اتفاق میافتد
- سازماندهی کد به صورت واضح با ساختار مناسب، کامنتگذاری و جداسازی
پیش نیازهای دوره
- دانش اولیه زبان برنامهنویسی C
توضیحات دوره
مدرس به عنوان یک مبتدی (یا "کنجکاو") شروع کرد، و مطمئن نبود از کجا آغاز کند. امروز، او با اطمینان دانش Embedded را در پروژههای حرفهای به کار میبرد و در بحثهای فنی سطح خبره شرکت میکند. به همین دلیل است که او دقیقاً میداند کدام بخشها برای مبتدیان گیجکننده هستند - و او ماموریت خود قرار داده است که آنها را به سادگی و به وضوح توضیح دهد.
آیا آمادهاید که تکیه بر کتابخانهها را متوقف کنید و شروع به نوشتن درایورهای Embedded خود از ابتدا کنید؟
این دوره عملی طراحی شده است تا به شما بیاموزد چگونه درایورهای Embedded ضروری - برای GPIO ،USART/UART ،Timers - را بدون HAL، بدون انتزاع و بدون میانبر بسازید. چه مبتدی باشید و چه مشتاق خودآموخته، این دوره به شما کمک میکند تا با برنامهنویسی مستقیم در سطح رجیستر، کنترل کامل میکروکنترلر را به دست آورید.
به جای تئوریهای بیپایان، ما از یک رویکرد یادگیری مبتنی بر پروژه استفاده میکنیم. در طول دوره، شما هر درایوری را که میسازید برای کنترل یک بازی Dino سرگرمکننده و تعاملی به کار خواهید برد - روشی عالی برای دیدن فوری نتیجه کد خود در عمل و با انگیزه ماندن همزمان با پیشرفت.
شما به هیچ تجربه قبلی در برنامهنویسی Embedded سطح پایین نیاز ندارید. ما از همان ابتدا شروع خواهیم کرد: نصب ابزارهای لازم، راهاندازی محیط و نوشتن اولین درایور Embedded شما قدم به قدم.
برای کمک به یادگیری موثر شما، این دوره از انیمیشنها، نمودارها و دیاگرامها برای شکستن ایدههای پیچیده استفاده میکند - به جای اینکه شما را با اسلایدهای پرمتن خسته کند. مدرس همچنین از سبک کدنویسی زنده در طول دوره استفاده میکند، بنابراین احساس خواهید کرد که شما و مدرس در حال اشتراکگذاری یک صفحه نمایش هستید و در کنار هم یاد میگیرید. شما دقیقاً خواهید دید که او چگونه فکر میکند، عیبیابی میکند و کد Embedded واقعی را در عمل مینویسد.
این دوره با دقت طراحی شده است تا در حدود 8.5 ساعت تکمیل شود، بنابراین میتوانید آن را در یک تا دو هفته - یا حتی سریعتر اگر یادگیرنده سریعی هستید - به پایان برسانید. شما با مهارتهای عملی، تجربه پروژه واقعی و اعتماد به نفس برای ساخت سیستمهای Embedded بدون تکیه بر کتابخانههای از پیش نوشته شده، دوره را ترک خواهید کرد.
اگر آمادهاید که کنترل کامل سیستمهای Embedded را به دست آورید و واقعاً زنده شدن کد خود را ببینید، این دوره برای شماست.
بیایید درایورها را بسازیم - و کاری کنیم که Dino بدود!
این دوره برای چه کسانی مناسب است؟
- برنامهنویسان Embedded مبتدی - که میخواهند فراتر از چشمک زدن LEDها بروند و شروع به ساخت درایورهای واقعی از ابتدا کنند.
- دانشجویان مهندسی - که میخواهند راهی عملی و کاربردی برای درک تجهیزات جانبی میکروکنترلر داشته باشند.
- توسعهدهندگان خسته از کتابخانههای جعبه سیاه (مانند HAL) و آماده برای یادگیری آنچه واقعاً در سطح رجیستر اتفاق میافتد.
- علاقهمندان و سازندگان - که به دنبال اعمال دانش Embedded در پروژههای سرگرمکننده مانند کنترل بازی Dino هستند.
- هر کسی که به سیستمهای Embedded بلادرنگ، مدیریت وقفه و کنترل سطح پایین علاقهمند است.
- یادگیرندگانی که از دورههای مبتنی بر پروژه لذت میبرند و میخواهند در حین یادگیری مهارتهای ضروری، چیزی سرگرمکننده بسازند.
درایور تعبیه شده: ساخت درایورها و کنترل بازی Dino
-
این ویدیو را تماشا کنید 03:09
-
چگونه بازی Dino و STM32 با هم کار میکنند؟ 02:02
-
اجرای بازی Dino در ویندوز 10:29
-
اجرای بازی Dino در لینوکس 05:17
-
عیبیابی و پشتیبانی 02:30
-
این بخش درباره چیست؟ 00:33
-
معرفی برد STM32F407 DISC - چه چیزهایی روی این برد داریم؟ 03:41
-
مستندات مورد نیاز 04:27
-
نرمافزارهای مورد نیاز 01:38
-
نصب Keil uVision 5 01:46
-
نصب VSCode 01:26
-
نصب درایور STLink 01:32
-
نصب Git 01:07
-
دانلود Hercules 01:01
-
نصب Pack 02:59
-
Git init 00:58
-
Hello world 06:49
-
اولین کامیت 04:26
-
کلمه کلیدی Volatile 05:57
-
کامیت Volatile و مقایسه کد بین کامیتها 02:15
-
این بخش درباره چیست؟ 01:02
-
بلوک دیاگرام MCU 04:55
-
مثال اتصال باس داده 00:50
-
بلوک دیاگرام ساده شده MCU 02:16
-
ماتریس باس 03:56
-
سیستم کلاک MCU 04:55
-
نقشه حافظه 05:06
-
آزمون بخش None
-
در بخشهای GPIO چه داریم؟ 01:00
-
پورت GPIO چیست؟ 02:27
-
بافر خروجی 01:00
-
بافر ورودی 00:53
-
ورودی شناور 01:48
-
ورودی pull-up/pull-down 03:15
-
خروجی push-pull و خروجی open drain 02:55
-
سرعت خروجی 02:16
-
آزمون بخش None
-
پورت GPIO در STM32F407 00:55
-
پیکربندی ورودی در MCU 02:24
-
پیکربندی خروجی در MCU 01:10
-
پیکربندی تابع جایگزین در MCU 01:14
-
پیکربندی آنالوگ در MCU 00:59
-
آزمون بخش None
-
بهترین روش برای برخورد با این بخش 00:32
-
رجیسترهای GPIO 03:24
-
رجیستر حالت پین GPIO 07:30
-
رجیستر نوع خروجی GPIO 01:00
-
رجیستر پول-آپ/پول-داون GPIO 00:51
-
رجیستر سرعت خروجی GPIO 00:47
-
رجیستر داده ورودی GPIO 01:00
-
رجیستر داده خروجی GPIO 00:37
-
رجیستر تنظیم/بازنشانی بیت GPIO 00:51
-
رجیستر پیکربندی قفل پورت GPIO 01:52
-
رجیسترهای تابع جایگزین GPIO 05:54
-
آزمون بخش None
-
چگونه این بخش را به طور موثر یاد بگیریم؟ 00:27
-
نحوه دسترسی به رجیسترهای GPIO با استفاده از Struct 02:50
-
تعریف ساختار تعریف رجیستر GPIO 04:54
-
تعریف آدرس پایه GPIO 04:23
-
ساختار پیکربندی پین GPIO 03:03
-
ماکروهای پیکربندی پین 05:58
-
پروتوتایپهای تابع 03:58
-
تابع ()GPIO_Init 04:37
-
تابع ()GPIO_Init (ادامه) 06:36
-
تابع ()GPIO_WritePin 01:28
-
تست ()GPIO_WritePin - چشمک زدن یک LED 04:46
-
فعالسازی کلاک GPIO 02:27
-
تعریف ماکروهای فعال/غیرفعالسازی کلاک GPIO و تست برنامه 06:51
-
پیکربندی ریست و اجرا 00:58
-
کامیت کد 03:41
-
کنترل LEDهای خارجی 00:44
-
تابع ()GPIO_ReadPin 07:23
-
تست ()GPIO_ReadPin - خواندن وضعیت دکمه کاربر 00:50
-
خواندن وضعیت دکمه خارجی 01:13
-
تابع ()GPIO_TogglePin 04:58
-
تست ()GPIO_TogglePin - فشردن دکمه برای تغییر وضعیت LED 03:26
-
کامیت کد و چالش 01:05
-
چالش GPIO پذیرفته شد! 02:23
-
تابع ()GPIO_WritePinBit و تست آن 05:51
-
تابع ()GPIO_LockConf 04:28
-
تست ()GPIO_LockConf - قفل کردن رجیسترهای پیکربندی GPIO 03:34
-
کد خود را کامنتگذاری کنید! 03:22
-
در بخشهای وقفه چه داریم؟ 00:41
-
مفهوم اولیه وقفهها 02:29
-
جدول بردار 05:20
-
چگونه برنامه یک وقفه را مدیریت میکند؟ 01:07
-
آزمون بخش None
-
وقفه GPIO با EXTI و NVIC 05:00
-
درون EXTI 04:00
-
راهاندازی وقفه GPIO 01:11
-
آزمون بخش None
-
ساختار تعریف رجیستر SYSCFG 05:49
-
ساختار تعریف رجیستر EXTI 03:15
-
تابع ()GPIO_IT_Init - مراحل پیکربندی 06:06
-
تابع ()GPIO_IT_Init - مشخص کردن پورت GPIO برای نقشهبرداری 05:31
-
تابع ()GPIO_IT_Init - پیکربندی EXTI 04:45
-
تابع ()GPIO_IT_Init - تعریف ساختار تعریف رجیستر NVIC 05:36
-
تابع ()GPIO_IT_Init - تابع ()NVIC_SetPriority 06:38
-
تابع ()GPIO_IT_Init - تابع ()NVIC_EnableIRQ 01:47
-
تابع ()GPIO_IT_Init - تعریف ماکروهای شماره IRQ 04:41
-
وقفه GPIO - تشخیص فشار دکمه 06:11
-
وقفه GPIO - وقت دیباگ است! 08:48
-
ایجاد سیگنال "پرش" Dino 00:36
-
در بخشهای USART چه داریم؟ 01:05
-
پروتکل USART چیست؟ 01:47
-
پینهای USART 02:09
-
حالت همزمان USART 01:58
-
حالت غیرهمزمان USART 02:05
-
حالت کنترل جریان سختافزاری 03:12
-
آزمون میاندوره None
-
فرمت فریم 02:20
-
بیت شروع/بیت پایان 02:46
-
بیت توازن 05:25
-
محدودیت بررسی توازن 02:49
-
نرخ باود 03:01
-
نمونهبرداری بیش از حد 04:45
-
محاسبه نرخ باود 03:45
-
مثال 1 محاسبه نرخ باود 02:27
-
مثال 2 محاسبه نرخ باود 01:28
-
مدیریت سرریز در محاسبه نرخ باود 01:25
-
محاسبه نرخ باود در کد 03:54
-
آزمون بخش None
-
مروری بر رجیسترهای USART 04:25
-
تعریف ساختار تعریف رجیستر USART 05:19
-
تعریف ساختار پیکربندی USART 06:20
-
تعریف ساختار پیکربندی USART (ادامه) 04:32
-
تابع USART_Init() - مراحل پیکربندی 02:23
-
تابع USART_Init() - پیادهسازی 08:18
-
دریافت فرکانس کلاک APB1 09:52
-
دریافت فرکانس کلاک APB2 01:30
-
تابع ()USART_Transmit 07:56
-
تابع ()USART_Receive 06:53
-
پیکربندی یک دستگاه جانبی USART 06:13
-
کنترل یک LED با فرمان های از Hercules 06:53
-
وقفه ارسال و دریافت با فشردن دکمه 07:24
-
وقفه ارسال و دریافت با فشردن دکمه (ادامه) 02:45
-
وقفه ارسال و دریافت با فشردن دکمه - تست 01:58
-
ارسال سیگنال "پرش" Dino به بازی Dino 01:39
-
در بخشهای تایمر چه داریم؟ 01:18
-
مقدمه اولیه تایمر 06:40
-
انواع تایمرها در STM32F407 و ویژگیهای آنها 05:22
-
محاسبه دوره زمانی تایمر 01:41
-
آزمون بخش None
-
تعریف ساختار تعریف رجیستر تایمر 01:26
-
تعریف آدرسهای پایه تایمر و کنترل کلاک 02:23
-
تعریف ساختار پیکربندی پایه تایمر 05:49
-
تابع ()TIM_Base_Init 04:17
-
توابع ()Timer_Base_Start و ()Timer_Base_Stop 00:58
-
تولید تاخیر غیرمسدودکننده با تایمر 03:52
-
چشمک زدن LED با تولید تاخیر تایمر 02:16
-
وقفه رویداد بروزرسانی تایمر 06:52
-
تست وقفه رویداد بروزرسانی با حذف نویز دکمه 01:16
-
مقایسه خروجی 03:42
-
مدولاسیون عرض پالس (PWM) 01:37
-
تولید PWM با استفاده از واحد مقایسه خروجی 04:18
-
کنترل روشنایی LED با PWM 01:09
-
آزمون بخش None
-
بهروزرسانی ساختار تعریف رجیستر تایمر 02:30
-
درک ساختار پیکربندی مقایسه خروجی 02:30
-
تعریف ساختار پیکربندی مقایسه خروجی 02:58
-
تابع ()TIM_OC_Init 07:53
-
مقداردهی اولیه مقایسه خروجی برای تولید PWM 03:57
-
کنترل روشنایی LED با فرمان - پیادهسازی 01:48
-
کنترل روشنایی LED با فرمان - تست 02:09
-
کنترل روشنایی LED بر اساس پرشهای Dino 01:07
مشخصات آموزش
درایور تعبیه شده: ساخت درایورها و کنترل بازی Dino
- تاریخ به روز رسانی: 1404/12/10
- سطح دوره:همه سطوح
- تعداد درس:165
- مدت زمان :08:39:54
- حجم :4.59GB
- زبان:دوبله زبان فارسی
- دوره آموزشی:AI Academy