آموزش Embedded Systems Bare-Metal Programming Ground Up™ (STM32)

Embedded Systems Bare-Metal Programming Ground Up™ (STM32)

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: بدون استفاده از کتابخانه، استاندارد CMSIS حرفه‌ای، ARM Cortex، ADC، UART، TIMERS، DMA، SPI، I2C، RTC، GPIO و غیره. نوشتن میان‌افزار فقط با استفاده از فلز خالی-c درک معماری Cortex-M نوشتن آنالوگ به دیجیتال درایورهای مبدل (ADC) با استفاده از bare-metal embedded-c نوشتن درایورهای PWM با استفاده از bare-metal embedded-c نوشتن درایورهای UART با استفاده از bare-metal embedded-c نوشتن درایورهای تایمر با استفاده از bare-metal embedded-c نوشتن درایورهای وقفه با استفاده از bare-metal-metal -c نوشتن درایورهای SPI با استفاده از bare-metal embedded-c نوشتن درایورهای I2C با استفاده از bare-metal embedded-c تسلط بر استاندارد ARM-Cortex CMSIS نوشتن درایورهای DMA با استفاده از bare-metal embedded-c ساخت هر خط کد از ابتدا با نوشتن در فضای حافظه میکروکنترلر مستقیما از کتابخانه‌های شخص ثالث یا فایل‌های هدر استفاده نکنید هر خط کد را خودتان بفهمید و بنویسید - بدون کپی/پیست کردن از اشکال‌زدا به طور مؤثر برای تجزیه و تحلیل و رفع اشکال استفاده کنید. مهارت‌های توسعه تعبیه‌شده خود را توسعه دهید و با اطمینان قدم‌های بعدی را بردارید. تجهیزات جانبی تجزیه و تحلیل مستندات تراشه ایجاد رجیستر از آدرس های پیش نیازها:بدون نیاز به تجربه برنامه نویسی - هر آنچه را که نیاز دارید به شما آموزش خواهم داد. ما از STM32 IDE که رایگان است استفاده خواهیم کرد.

از کپی و جایگذاری کدهایی که متوجه نمی شوید خسته شده اید؟


با رویکردی مبتنی بر برنامه نویسی، این دوره به شما طراحی شده است تا پایه ای محکم در توسعه سفت افزار فلزی خالی برای میکروکنترلرهای مبتنی بر ARM ارائه دهد. هدف از این دوره آموزش نحوه پیمایش در دفترچه راهنمای میکروکنترلر و دیتاشیت برای استخراج اطلاعات مناسب برای ساخت حرفه ای درایورهای جانبی و سیستم عامل است. برای دستیابی به این هدف، در این دوره از هیچ کتابخانه ای استفاده نمی شود.

هنوز ساده نگه داشته شود، این دوره در بردهای مختلف توسعه ARM Cortex-M ارائه می شود تا دانش آموزان بتوانند تکنیک ها را با استفاده از یک برد توسعه ARM Cortex-M به انتخاب خود تمرین کنند. این نسخه از دوره از STMicroelectronics STM32F4-NUCLEO استفاده می کند که دارای میکروکنترلر ARM Cortex-M4 است.


بنابراین با درک این موضوع، اجازه دهید به شما بگویم…


دقیقاً همان چیزی که دریافت می‌کنید

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

به علاوه، آسان است.

و بلافاصله کل اسطوره‌شناسی را که من شخصاً برای ساختن میان‌افزار برای دستگاه‌های مصرف‌کننده در زندگی حرفه‌ای خود استفاده می‌کنم، «دریافت» خواهید کرد.

چیزی فراتر از اجرای کد است

ببینید، این دوره زندگی حرفه ای شما را برای همیشه تغییر خواهد داد. در اینجا چیزی است که یک دانش آموز درباره این دوره می گوید:


"من این دوره را برای همه مبتدیان پیشنهاد می کنم. مفاهیم به ترتیب درست پوشش داده شده اند. همچنین بهترین بخش این مجموعه سخنرانی، آشنایی با نحوه کاوش کتابچه راهنمای مرجع و دیتاشیت ها است."

>

این چیزی است که دانش‌آموز دیگری باید بگوید:

" برای درک عمیق‌تر برنامه‌نویسی uC بسیار مفید است! برای من از هم‌اکنون توسعه کد بسیار آسان‌تر است، زیرا من پایه پشت آن را می‌دانم، بنابراین مطمئن‌تر و تجربه‌تر برای توسعه و اشکال‌زدایی کد هستم. واقعاً این دوره برای پیوند دادن دانش سخت افزاری با مهارت های کدنویسی بسیار مفید است :) "

یک دانش آموز سوم:

" من یک مهندس نرم افزار چیپست نیمه هادی حرفه ای با 30 سال طراحی محصول جاسازی شده جهانی در برنامه های کاربردی سیستم هستم. می توانم بگویم این معلم با به اشتراک گذاری دانش چندین ساله خود با قلب واقعی خود با دانش آموزان بسیار صادق است. بله. من سرعت و سبک تدریس او را دوست دارم "



گرفته شده توسط بیش از 8000 دانش آموز با بیش از 1000 نظر

اگر حداقل یکی از موارد زیر در مورد شما صدق می کند، اگر نه، به خواندن ادامه دهید، به سادگی این دوره را رد کنید:


"فرار از"

  1. کپی/جاگذاری کدی که متوجه نمی‌شوید

  2. استفاده از کتابخانه های شخص ثالث و فایل های سرصفحه مانند HAL، LL و StdPeriph

  3. اشکال‌هایی را تجربه می‌کنید که درک نمی‌کنید

  4. ترس از مستندات فنی مانند کتابچه راهنمای مرجع و برگه اطلاعات تراشه

  5. سندرم ایمپوستر

" رسیدن به "

  1. ساخت هر خط کد از ابتدا با نوشتن مستقیم در فضای حافظه میکروکنترلر.

  2. استفاده از کتابخانه های شخص ثالث یا فایل های سرصفحه

  3. تک خط کد را خودتان بفهمید و بنویسید - بدون کپی/پیست کردن

  4. استفاده موثر از اشکال زدا برای تجزیه و تحلیل و رفع اشکالات

  5. توسعه مهارت در مهارت‌های توسعه تعبیه‌شده خود و برداشتن مطمئن قدم‌های بعدی


بنابراین همانطور که گفتم، چیزی بیش از به کار انداختن هر قطعه کد وجود دارد.

در اینجا یک نمای کلی از آنچه دریافت می کنید وجود دارد...

  • تجزیه و تحلیل اسناد تراشه:

    قبل از توسعه سیستم عامل برای هر تراشه، باید نحوه خواندن اسناد ارائه شده توسط سازنده تراشه را بیاموزید.


  • تعریف آدرس جانبی

    همه اجزای موجود در میکروکنترلر دارای یک محدوده آدرس هستند. برای نوشتن روی یک مؤلفه یا خواندن از یک مؤلفه، باید محدوده آدرس آن را در اسناد پیدا کنید و آدرس‌ها را به درستی در کد خود تعریف کنید.


  • ایجاد ثبت از آدرس:

    آدرس های موجود در محدوده آدرس یک جزء، نشان دهنده رجیسترهای آن جزء هستند. برای دسترسی به این رجیسترها، به طور موثر آدرس ها را تایپ کرده اید.


  • درک CMSIS:

    Cortex-Microcontroller Interface Standard (CMSIS)CMSIS استانداردی است که توسط Arm برای همه میکروکنترلرهای Cortex توسعه یافته است. این استانداردی است که در توسعه سیستم عامل حرفه ای

    استفاده می شود


اما بهتر می‌شود زیرا شما نیز دارید…


درس های عمیق در مورد توسعه درایورهای جانبی

شما یاد خواهید گرفت که چگونه درایورهای بدون فلز را برای وسایل جانبی زیر ایجاد کنید:

  • مبدل آنالوگ به دیجیتال (ADC)

  • ​رابط جانبی سریال (SPI)

  • مدار یکپارچه (I2C)

  • دسترسی مستقیم به حافظه (DMA)

  • کنترل کننده وقفه برداری تودرتو (NVIC)

  • تایمرهای همه منظوره (TIM)

  • تایمر تیک سیستم (SysTick)

  • ورودی/خروجی با هدف عمومی (GPIO)


طراحی ویژه برای افرادی که از کپی/پیست متنفرند

گوش کن. اگر «کپی/پیست» را دوست ندارید، تنها نیستید. من هم طاقت ندارم من به معنای واقعی کلمه ترجیح می‌دهم یک قطعه کد داشته باشم که از ابتدا نوشته‌ام و کار نمی‌کند تا اینکه کد کاری شخص دیگری که کپی و جایگذاری کرده‌ام.

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


همچنین با ضمانت بازگشت پول همراه است، بنابراین چیزی برای از دست دادن ندارید.



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

شروع - ساخت رجیسترهای جانبی از آدرس های حافظه Getting Started - Constructing Peripheral Registers from Memory Addresses

  • دانلود محیط توسعه یکپارچه ما (IDE) Downloading our Integrated Development Environment (IDE)

  • نصب محیط توسعه یکپارچه ما (IDE) Installing our Integrated Development Environment (IDE)

  • دریافت اسناد و مدارک مناسب برای توسعه بدون فلز Getting the right Documentation for Bare-Metal Development

  • کدگذاری: قرار دادن پورت ها و پین های کامپوننت ها روی برد Nucleo Coding : Locating the Ports and Pins of Components on the Nucleo board

  • کدگذاری: تعیین آدرس ماژول ها با استفاده از اطلاعات اسناد Coding : Defining Addresses of Modules using information from the Documentation

  • کدگذاری: ایجاد رجیسترهای مورد نیاز با استفاده از اطلاعات از اسناد Coding : Creating required Registers using Information from Documentation

  • کدگذاری: پیکربندی پین ها با استفاده از ثبات هایی که ایجاد کردیم Coding : Configuring Pins using the Registers we Created

  • کدگذاری: ایجاد رجیستر از اعضای ساختار Coding : Creating Registers from Structure Members

  • اطلاع Notice

ورودی/خروجی عمومی (GPIO) General Purpose Input/Output(GPIO)

  • مروری بر ماژول ورودی/خروجی عمومی ARM Cortex-M Overview of ARM Cortex-M General Purpose Input/Output Module

  • کدگذاری: در حال توسعه درایور GPIO با استفاده از اطلاعات از دیتاشیت Coding : Developing GPIO Driver Using Information from the Datasheet

  • آشنایی با ثبت BSRR Understanding the BSRR Register

  • کدگذاری: کنترل GPIO با استفاده از BSRR Register Coding : Controlling GPIO using the BSRR Register

  • کدگذاری: خواندن ورودی های GPIO Coding : Reading GPIO Inputs

  • اطلاع Notice

گیرنده-فرستنده ناهمزمان جهانی (UART) Universal Asynchronous Receiver-Transmitter(UART)

  • مروری بر پروتکل UART Overview of the UART Protocol

  • رجیسترهای UART که معمولا استفاده می شود Commonly used UART registers

  • کدگذاری: توسعه درایور UART با استفاده از اطلاعات برگه داده Coding : Developing the UART Driver Using Information from the Datasheet

  • بحث بیشتر در مورد پیکربندی تابع جایگزین UART Further discussion on UART Alternate Function configuration

  • کدگذاری: دریافت داده با UART Coding : Receiving Data with the UART

  • کدگذاری: ارتباط دو طرفه UART Coding : Two-way UART Communication

تبدیل آنالوگ به دیجیتال (ADC) Analog to Digital Conversion (ADC)

  • مقدمه ای بر تبدیل آنالوگ به دیجیتال Introduction to Analog to Digital Conversion

  • کدگذاری: توسعه درایور ADC Coding : Developing the ADC Driver

  • کدگذاری: خواندن دمای CPU با ADC و نمایش آن با UART Coding :Reading the CPU Temperature with the ADC and Displaying it with the UART

تایمر تیک سیستم (SysTick). The System Tick (SysTick) Timer

  • نمای کلی تایمر تیک سیستم Overview of the System Tick Timer

  • کدگذاری: توسعه درایور تایمر تیک سیستم Coding : Developing the System Tick Timer Driver

تایمرهای همه منظوره General Purpose Timers

  • مروری بر تایمرهای همه منظوره Overview of General Purpose Timers

  • رجیسترهای تایمر متداول استفاده می شود Commonly used Timer registers

  • کدگذاری: توسعه درایور تایمر همه منظوره Coding : Developing the General Purpose Timer Driver

  • کدگذاری: توسعه درایور مقایسه خروجی تایمر Coding : Developing the Timer Output Compare Driver

  • کدگذاری: توسعه درایور ضبط ورودی تایمر Coding : Developing the Timer Input Capture Driver

وقفه در برنامه نویسی Interrupt Programming

  • مقدمه ای بر وقفه ها Introduction to Interrupts

  • کدگذاری: توسعه درایور وقفه GPIO Coding : Developing the GPIO Interrupt Driver

  • کدگذاری: تست درایور وقفه GPIO Coding : Testing the GPIO Interrupt Driver

  • کدگذاری: توسعه درایور وقفه گیرنده UART Coding : Developing the UART Receiver Interrupt Driver

  • کدگذاری: توسعه درایور وقفه ADC Coding : Developing the ADC Interrupt Driver

  • کدگذاری: توسعه درایور وقفه سیستمی Coding : Developing the Systick Interrupt Driver

  • کدگذاری: توسعه درایور وقفه تایمر Coding : Developing the Timer Interrupt Driver

توسعه درایور دسترسی مستقیم به حافظه (DMA). Direct Memory Access (DMA) Driver Development

  • مروری بر ماژول دسترسی مستقیم به حافظه (DMA). Overview of the Direct Memory Access (DMA) Module

  • کدگذاری: در حال توسعه UART Transmitter DMA Driver Pt.1 Coding : Developing the UART Transmitter DMA Driver Pt.1

  • کدگذاری: در حال توسعه UART Transmitter DMA Driver Pt.2 Coding : Developing the UART Transmitter DMA Driver Pt.2

  • کدگذاری: تست درایور DMA فرستنده UART Coding : Testing the UART Transmitter DMA Driver

مدار یکپارچه (I2C) Inter-Integrated Circuit (I2C)

  • مقدمه ای بر I2C Introduction to I2C

  • تجزیه و تحلیل ساعت بیدرنگ DS1307 Analyzing the DS1307 Realtime Clock

  • کدگذاری: توسعه درایور I2C Coding : Developing an I2C Driver

رابط جانبی سریال (SPI) Serial Peripheral Interface (SPI)

  • مقدمه ای بر رابط جانبی سریال (SPI) Introduction to Serial Peripheral Interface (SPI)

  • کدگذاری: توسعه یک درایور ساده SPI Coding : Developing a Simple SPI Driver

  • کدگذاری: توسعه یک درایور SPI برای LCD گرافیکی ST7735 (قسمت اول) Coding : Developing an SPI Driver for the ST7735 Graphics LCD (Part I)

  • کدگذاری: توسعه یک درایور SPI برای LCD گرافیکی ST7735 (قسمت دوم) Coding : Developing an SPI Driver for the ST7735 Graphics LCD (Part II)

  • کدگذاری: توسعه یک درایور SPI برای LCD گرافیکی ST7735 (قسمت سوم) Coding : Developing an SPI Driver for the ST7735 Graphics LCD (Part III)

  • کدگذاری: توسعه درایور SPI برای LCD گرافیکی ST7735 (قسمت چهارم) Coding : Developing an SPI Driver for the ST7735 Graphics LCD (Part IV)

شروع نسخه قدیمی دوره - مقدمه Start of Old Version of the Course - Introduction

  • معرفی Introduction

برپایی Set Up

  • دانلود Keil uVision 5 Download Keil uVision 5

  • نصب Keil uVision 5 Installing Keil uVision 5

  • اطلاع Notice

  • نصب پک ها Installing Packs

  • تغییر کامپایلر Changing the Compiler

نوشتن کد Bare-Metal C با STM32CubeIDE Writing Bare-Metal C Code with STM32CubeIDE

  • اطلاع Notice

  • کدنویسی: نوشتن یک درایور GPIO از ابتدا (بخش اول) Coding : Writing a GPIO Driver from Scratch (PART I)

  • کدنویسی: نوشتن یک درایور GPIO از ابتدا (PART II) Coding : Writing a GPIO Driver from Scratch (PART II)

تیک سیستم و تایمرهای همه منظوره System Tick and General Purpose Timers

  • نمای کلی تایمر تیک سیستم Overview of the System Tick Timer

  • مروری بر تایمرهای همه منظوره Overview of General Purpose Timers

  • رجیسترهای تایمر متداول استفاده می شود Commonly used Timer registers

  • کدگذاری: توسعه درایور تایمر تیک سیستم Coding : Developing the System Tick Timer Driver

  • بحث بیشتر در مورد ثبت تیک سیستم Further discussion on System Tick Registers

  • کدگذاری: ایجاد یک تابع تاخیر با استفاده از تایمر تیک سیستم Coding : Creating a Delay Function using the System Tick Timer

  • کدگذاری: توسعه درایور تایمر همه منظوره (GPTM). Coding : Developing the General Purpose Timer (GPTM) Driver

  • کدگذاری: پیکربندی تایمر همه منظوره برای مقایسه خروجی Coding : Configuring the General Purpose Timer for Output Compare

  • کدگذاری: پیکربندی تایمر همه منظوره برای ضبط ورودی Coding : Configuring the General Purpose Timer for Input Capture

  • کدگذاری: اندازه گیری فرکانس جذب ورودی Coding : Input capture frequency measurement

  • کدگذاری: پیکربندی تایمر همه منظوره برای خروجی PWM Coding : Configuring the General Purpose Timer for PWM Output

برنامه نویسی را قطع می کند Interrupts Programming

  • مقدمه ای بر وقفه ها Introduction to Interrupts

  • درک وقفه های خارجی Understanding External Interrupts

  • کدگذاری: توسعه درایور وقفه GPIO Coding : Developing the GPIO Interrupt Driver

  • کدگذاری: کار با چندین وقفه GPIO Coding : Working with Multiple GPIO Interrupts

  • کدگذاری: توسعه درایور وقفه UART Coding : Developing the UART Interrupt Driver

  • کدگذاری: توسعه درایور وقفه تیک سیستم Coding : Developing the System Tick Interrupt Driver

  • کدگذاری: توسعه درایور قطع تایمر همه منظوره Coding : Developing the General Purpose Timer Interrupt Driver

رابط با نمایشگر کریستال مایع (LCD) Interfacing with a Liquid Crystal Display (LCD)

  • کدگذاری: توسعه درایور نمایشگر کریستال مایع (LCD). Coding : Developing the Liquid Crystal Display (LCD) Driver

  • کدگذاری: پیکربندی نمایشگر کریستال مایع برای حالت داده 4 بیتی Coding : Configuring the Liquid Crystal Display for 4-bit Data Mode

فلسفه طراحی ARM و معماری RISC ARM Design Philosophy and RISC Architecture

  • فلسفه طراحی RISC The RISC Design Philosohpy

  • فلسفه طراحی ARM The ARM Design Philosophy

  • سیستم های جاسازی شده با پردازنده های ARM Embedded Systems with ARM Processors

  • فناوری اتوبوس ARM و پروتکل اتوبوس AMBA ARM Bus Technology and AMBA Bus Protocol

  • حافظه Memory

  • لوازم جانبی Peripherals

  • فون نومان و معماری هاروارد Von Nuemann and Harvard architecture

  • حافظه پنهان و محکم زوج Cache and Tightly Couple Memory

  • پسوندهای مدیریت حافظه Memory Management extensions

  • پسوندهای کوپروسسور Cooprocessor extensions

مدل برنامه نویس ARM The ARM Programmer's Model

  • انواع داده ها Data Types

  • حالت های پردازنده Processor Modes

  • رجیسترهای ARM7TDMI ARM7TDMI Registers

  • جدول وکتور ARM7TDMI ARM7TDMI Vector Table

  • ARM Cortex-M Registers ARM Cortex-M Registers

  • جدول وکتور ARM Cortex-M ARM Cortex-M Vector Table

  • مدل جریان داده ARM ARM Data Flow Model

  • خط لوله The Pipeline

  • خانواده پردازنده های ARM ARM Processor Family

  • ARM Cortex-A و Cortex-R ARM Cortex-A and Cortex-R

  • ARM Cortex-M ARM Cortex-M

راه اندازی گزینه 2 - STM32CubeIDE Setting Up Option 2 - STM32CubeIDE

  • در حال دانلود CubeIDE Downloading CubeIDE

  • راه اندازی STM32CubeIDE Setting Up STM32CubeIDE

  • اطلاعیه سریع Quick Notice

  • نصب پکیج ها Installing Packages

  • بررسی اجمالی Overview

بسته شدن Closing

  • سخنان پایانی Closing Remarks

نمایش نظرات

آموزش Embedded Systems Bare-Metal Programming Ground Up™ (STM32)
جزییات دوره
24.5 hours
136
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
14,227
4.6 از 5
دارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Israel Gbati Israel Gbati

Embedded Firmware Engineer نام من اسرائیل است ، من بیش از 7 سال است که در فضای سیستم جاسازی شده تحقیق و کار می کنم. در Udemy ده ها هزار دانش آموز در سیستم های جاسازی شده با تمرکز بر موضوعاتی مانند برنامه نویسی Assembly ، طراحی سیستم عامل های زمان واقعی ، توسعه سیستم عامل و پردازش سیگنال دیجیتال آموزش داده ام. من قادر به آموزش این مباحث هستم زیرا در کارهای روزمره مفاهیمی را از این مباحث استفاده می کنم. به یکی از دوره های من بپیوندید و ببینید چطور پیش می رود. همیشه می توانید درخواست بازپرداخت کنید.

BHM Engineering Academy BHM Engineering Academy

آکادمی مهندسی قرن بیست و یکم