نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
أَللّهُمَّ ارْزُقْنی شَفاعَةَ الْحُسَیْنِ یَومَ الْوُرُودِ
مهدی زمانی

آموزش stm32f103 جلسه ۳ کانفیگ کردن کلاک

298

سلام همگی : از جلسه قبلی اموزش فیدبکی دریافت نکردم اگه مشکلی داره اعلام کنید اصلاح کنم؛ جلسه رو با یه صلوات شروع میکنیم (اللهم صل علی محمد و ال محمد )؛ خب این جلسه قراره که یکم از اطلاعات جلسات قبلی استفاده کنیم و بریم سراغ کانفیگ کردن کلاک
آموزش stm32f103 جلسه 3 کانفیگ کردن کلاک

آموزش stm32f103 جلسه ۳ کانفیگ کردن کلاک


ی مرور کنیم به جلسه قبلی، یادمونه که گفتیم قرار بر اینه از محیط گرفیکی کیوب ببینیم در عمل چیکار قراره بکنیم و ی سری توضیحات راجب کریستال دادیم حالا قراره این کریستال رو توی برنامه به کار ببریم چجوری؟ خیلی سادس فقط یک تابع براش تعریف کنیم.
خب برای اشنایی با توابه کانفیگ کلاک میریم سراغ هدر فایل rcc

آموزش stm32

پروژه stm32

یکم میایم پایین تا به تعریف توابع میرسیم(خط۶۴۷ )

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

این تابع میاد خارجی یا داخلی بودن کلاک رو مشخص میکنه ما برای کلاک خارجی اینجوری ستش میکنیم

برای وصل شدن کلاک یک تاخیر کوچولو لازم هست که برای اون هم یک تابع اماده داریم به این شکل

اگر این تابع خروجی SUCCESS بهمون برگردوند میتونیم برای ادامه کار بریم؛ پس مینویسیم :

حالا باید به میکرو کنترلر بگیم کریستال ورودی رو ضرب در چقد بکن برای کلا اصلی (اصطلاحا pll)، که برای اون هم تابع زیر رو داریم :

چون کریستال ورودی ۸ مگا هرتز دارم و میخوام ۷۲ مگا هرتز رو روی میکرو ست کنم پس داریم : ۷۲/۸=۹
یعنی ۸ مگا هرتزی که کریستال میسازه رو ۹ برابر کنیم به ۷۲ مگاهرتز دست پیدا میکنیم پس تابع pll رو اینجوری کانفیگ میکنیم :

و حالا باید خود pll رو فعال کنیم که برای اینکار این تابع رو داریم :

حالا باید این تابع اینجوری کانفیگ کنیم و بهش ورودی بدیم :

حالا باید منتظر بشیم تا pll فعال بشه برای این کار باید مقدار فلگ رو با این تابع بخونیم و منتظر بشیم تا set بشه؛ مقدار فلک با تابع زیر خونده میشه :

خب برای منتظر بودن هم اینجوری عمل میکنیم :

حالا باید با تابع RCC_SYSCLKConfig سیستم کلاک سورس یا SYSCLKSource رو به خروجی کلاک PLL وصل کنیم؛ برای این کار هم از تابع زیر استفاده میکنیم :

حالا برای کانفیگ هم مقدار تابع رو اینجوری وارد میکنیم :

حالا باید صبر کنیم تا این خط هم کارش تموم بشه و کلاک متصل بشه برای این کار هم اینجوری مینویسیم :

به همین سادگی الان میکرو شروع به کار میکنه با تمام قدرتش ۷۲ مگاهرتز؛ حالا اینارو میکنیم توی یک تابع به اسم RCC_Configuration مینویسیم؛ که این تابه ورودی نداره و خروجی هم نداره پس اینجوری مینویسم :

حالا کانفیگ های بالا رو هم توی این تابع فراخوانی میکنیم تا تابع کامل بشه و کل خروجی تابع به این شکل میشه :

که رو به روی هر خط هم توضیحاتش کامنت شده، اینم بگم که اینا اصلا ترس نداره بعدا میفهمیم این قابلیت ها چقد کاربردی هستند…
حالا باید تابعی که نوشتیم رو توی تابع مین برنامه فراخوانی کنیم تا کلاک کانفیگ بشه؛ اینم کل توابع اصلی برناممون اینجوری میشه :

و تمام دیگه میکرو رسما داره کار میکنه، به همین سادگی victory
فایل پروژه تا اینجا رو هم میتونید از زیر دانلود کنید :

مطلب جلسه آینده :
توی جلسه آینده هم gpio ها رو پیکر بندی میکنیم و یک بلینکر رو میسازیم.
این هم در نظر داشته باشید من میکرویی که دارم stm32f103c8t6 هستش و شما برای میکروی خودتون میتونید این پروژه رو بسازید و طبق اموزش جلو برید.
اگر اموزش مشکلی هم داره بهم بگید حتما درستش میکنم تا مفید تر واقع بشه کار .
ما هم توی دعاهاتون از یاد نبرید… smile
با ارزوی موفقیت برای تک تکتون heart
یا علی

Tiktoknitro.com is an advanced tiktok services marketplace for successfull and fast promotion. We offer to buy tiktok likes and buy tiktok followers of highest quality instant and secure. The mechanisms behind our work are unique and tailored to your goals.

درباره : 
تعداد مطالب : 20 تا
مهدی زمانی هستم متنفر از کلیشه های تکراری پادگان انجام پروژه های التیوم و برنامه نویسی میکروکنترلر پذیرفته میشود تلگرام : @stm32f اینستاگرام:zamanimahdi77 ایمیل:timahdizamani@gmail.com
بقیه جلسات : آموزش آرم stm32f103
ارسال دیدگاه
20
نظرات این مطلب بسته شده است.
  1. محمد

    مهمان

    محمد

    سلام و خسته نباشین بابت مطالب بسیار مفیدتون
    خواستم بگم در این قسمت توضیحی در مورد
    RCC_HCLKConfig(RCC_SYSCLK_Div1); /// HCLK = SYSCLK
    RCC_PCLK2Config(RCC_HCLK_Div1); /// PCLK2 = HCLK
    RCC_PCLK1Config(RCC_HCLK_Div2); /// PCLK1 = HCLK/2
    ندادین که چی هستن و وظیفه اشون چیه:؟

  2. آیدین

    مهمان

    آیدین

    سلام
    آقا یه چند تا سوال ابتدایی داشتم در حد مهد کودک: 1: تفاوت cmsis با std periph driver چیه؟ از این جهت میگم که هم میشه در کیل بر مبنای cmsis پروژه ایجاد کرد هم میشه از پوشه همراه این درایور یکی یکی فایل ها رو اد کرد. 2-: کلاک سیستم رو در خیلی از پروژه های اماده ندیدم تنظیم کنن فقط در تنظیمات کیل مقدار کریستال فقط نوشته شره و یک فایل system_stm32f4xx.c در پروژه ها موجود هست که تنظیمات کلاک ظاهرا داره اما نه در تابع main اینکلود شده و نه تابعی از اون فراخوانی. با اینکه برنامه ها درست کار می کنند چطور میشه بدن تنظیم کلاک؟3: توی کیل زمان ایجاد پروژه دو روش وجود داره یکی که حالت کلی انتخاب سری رو داره و بعد پنجره cmsis باز میشه و دومی خود میکرو رو انتخاب می کنیم. اولین حالت چه کاربردی داره؟

  3. amir

    مهمان

    amir

    با سلام و خسته نباشید من هر کاری میکنم نمیتونم MCO که به پین pa8 متصل است را راه اندازی کنم و کلاک ازش بگیرم اگه میشه راه نمایی کنید

  4. امید

    مهمان

    امید

    سلام خسته نباشید
    ممنونم بابت آموزشاتون
    یه سوال ما مگه توی کیوب از طریق محیط گرافیکی فرکانس 72 مگاهرتز رو(به طور مثال) نمیسازیم یعنی به واحد pll اومدیم ضریب 9 رو دادیم و با کریستال 8 مگ فرکانس 72مگاهرتز رو ساختیم. خب بعد از اینکه پروژه توسط کیوب اجرا شد مگه کانفینگ کلاک هم کدش توسط خود کیوب نوشته نمیشه؟ چه نیازیه ما دستی دوباره کد ها رو بنویسیم؟ no
    یا منظورتون این بوده که اگه کانفینگش رو با کیوب انجام ندادیم میتونیم کدشو خودمون بنویسیم؟ smile

    مشاهده پاسخ ها (2)
    • احمدبهمن پور

      مهمان

      احمدبهمن پور

      پاسخ این سوال

    • احمدبهمن پور

      مهمان

      احمدبهمن پور

      یه سوال ما مگه توی کیوب از طریق محیط گرافیکی فرکانس 72 مگاهرتز رو(به طور مثال) نمیسازیم یعنی به واحد pll اومدیم ضریب 9 رو دادیم و با کریستال 8 مگ فرکانس 72مگاهرتز رو ساختیم. خب بعد از اینکه پروژه توسط کیوب اجرا شد مگه کانفینگ کلاک هم کدش توسط خود کیوب نوشته نمیشه؟ چه نیازیه ما دستی دوباره کد ها رو بنویسیم؟
      یا منظورتون این بوده که اگه کانفینگش رو با کیوب انجام ندادیم میتونیم کدشو خودمون بنویسیم؟ smileno

  5. MI

    مهمان

    MI

    سلام خدمت استاد عزیز
    میشه خروجی یه پایه ی stm32f103c8 با فرکانس 50mhz (ماکزیمم فرکانس ) high / low بشه ؟
    چرا من نمیتونم ؟؟

  6. راوندی

    مهمان

    راوندی

    سلام خدا قوت
    سوالی که دارم اینه که آیا برنامه بوت لودر در میکروهای STM32 در هنگام ساخت در میکرو قرار داده شده یا مثل میکروهای AVR باید خودمون ابتدائا پروگرام کنیم؟
    با تشکر از مطالب خوبتون

  7. parviz

    مهمان

    parviz

    good wink wink

  8. parviz

    مهمان

    parviz

    خدا خیرت بده مهندس

  9. فاطمه برجی

    مهمان

    فاطمه برجی

    سلام خسته نباشید مطالبتون خیلی خوبه فقط اینکه اگه بشه مطالب هر جلسه pdf شه تا بتونیم راحت پرینت بگیریم خیلی ممنون میشیم
    واینکه تاریخ انتشار جلسه بعد هم ذکر شه ممنون

    مشاهده پاسخ ها (1)
    • مهدی زمانی

      نویسنده این مطلب

      مهدی زمانی

      در اخرین جلسه فایل PDF موجود هست

  10. امین

    مهمان

    امین

    با سلام از این که زحمت می کشید و این آموزش ها رو قرار میدید بسیار تشکر می کنم و عجر شما با خداوند که توفیق روز افزون به شما و خانواده هاتون بده. راستش بعد از ۱۰ سال کار با سری های AVR امروز فکر کردم که باید اپدیت بشم و خلاصه این شد که اردوینو و ارم رو باهم شروع کردم. چقدر خوب بود که بردی تهیه می کردید و آموزش هاتونو بر میبنای اون برد قرار میدادید و البته سود مناسبی از فروش برد ها برای ادامه فعالیت سایت بدست میاومد. این آموزش برای تازه کارها یکم گنگ بود شاید بشه گاهی از جاها که نیاز به توضیح بیشتر داره شما فایل صوتی قرار بدید و هم در وقت خودتون و هم در وقت خواننده صرفه جویی کنید. در ضمن میتونید فایل شبیه سازی پروتوس رو هم قرار بدید تا نیاز نباشه هر شخصی که مثلا در فلان شهرستان هست و توان مالی خانواده اش نمی رسه برد های ارم رو تهیه کنه از این آموزش بی بهره بمونه(نمونه اش خود من ۱۰ سال پیش نمیتونستم کتاب AVR بخرم با بدبختی یادگرفتم)

    مشاهده پاسخ ها (1)
    • مهدی زمانی

      نویسنده این مطلب

      مهدی زمانی

      سلام مهندس وقت بخیر
      من خودمم بچه شهرستان هستم و این سختی ها متاسفانه برای همه ما شهرستانی ها هستش ولیکن با یکم تلاش این مشکلات قابل رفع شدنه راجب اپدیت بگم شما اردونیو رو کنار بزارید خیلی موفق تر خواهید بود و اردونیو به درد پروژه های بزرگ تر و تجاری نمیخوره راجب مبحثی که بردی تهیه بشه و اموزش ها بر اساس اون باشه پیشنهاد خوبی بود با اقا مهدی راجب فروشگاه سایت صحبت میکنم اما اگه شما مشتاق هستید میتونم برای شما یک برد جدا مونتاژ کنم بفرستم ( بردی برای تست های خودم به صورت دم دستی طراحی کردم منتظر بازگشایی شرکت ها در بعد از تعطیلات عید نوروز هستم اگر دوست داشتید یک برد اضافه برای شما هم چاپ میکنم) راجب نظر خوب و سازندتون ازتون تشکر میکنم smile موفق باشید ❤

  11. موسی خانی

    مهمان

    موسی خانی

    سلام .خسته نباشید.رزمنده.
    هر وقت هر مشکلی برام پیش مییاد در مورد میکرو اولین سایتی که سر میزنم همین سایت هستش.
    رزمنده به جهاد در راه علمت ادامه بده.
    به امید روزی که کسایی مثل اقا مهدی بتونن میکرو رو بسازن .
    دمت گرم خداییش خیلی خوبه کارت

  12. بهزاد

    مهمان

    بهزاد

    سلام
    من چند وقته زیاد سرمیزنم به سایتت . راستش دارم هرچی سایت و مطلب در مورد ARM هستو زیرو ورو میکنم بلکه سر در بیارم چی به چیه . تا هفته پیش نمیدونستم HAL چیه CMSIS چیه خوردنیه یا پوشیدنی !! . به لطف سایت شما و دیگران الان کمی بهتر شدم . سایت شما خیلی ساده و خوب توضیح داده برای من تازه کار خیلی عالیه . دستتون درد نکنه .مشتاقیم ادامه بدی
    (بفرما اینم فیدبک :)) نگی کسی حمایت نمیکنه دوست من )

    مشاهده پاسخ ها (1)
    • مهدی زمانی

      نویسنده این مطلب

      مهدی زمانی

      چششششششششششششم smile

  13. محمد

    مهمان

    محمد

    خداقوت پهلوان ۲۲بهمن هم تبریک میگم..

  14. محمد

    مهمان

    محمد

    سلام
    داداش او خط 647 هست ملت رو گیج نکن
    فدات

    مشاهده پاسخ ها (1)
    • مهدی زمانی

      نویسنده این مطلب

      مهدی زمانی

      بله وییرایش شد