NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 2728 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید

نمایش نتیجه های نظرسنجی ها: چگونه STM32 را ياد بگيريم؟

رأی دهندگان
263. شما نمی توانید در این نظرسنجی رای دهید.
  • سطحي و كار راه انداز

    20 7.60%
  • دقيق و حرفه اي

    243 92.40%
صفحه 11 از 58 نخستنخست 123456789101112131415161718192021222324252627282930 ... آخرینآخرین
نمایش نتایج: از 201 به 220 از 1155

موضوع: شروع آموزش stm32 بر پایه برد سفارشی

  1. #201
    مدیر باز نشسته armstk آواتار ها
    تاریخ عضویت
    Mar 2009
    نوشته ها
    926
    تشکر
    839
    تشکر شده 1,198 بار در 573 پست

    پیش فرض

    اقا کسی تا حالا UCOS رو واسه stm32 راه انداخته ؟؟ اگه کسی هست راهنمایی کنید واسه شروع چی کار باید کرد
    سلام
    من قبلا رویه یک برد آماده uc-ii + gui رو بوتش کرده بودم , البته فقط ایمیج بود و منم پروگرمش کردم و نتیجه رو دیدم
    چیزه خاصی نداره , البته چون اماده بودش ولی کلا اصولش اینه که براش تسک بنویسیم و اونم تسک هایه ما رو اجرا کنه
    سورسش موجود هست البته تریال بودش - ولی نسخه education رو هم گرفته بودم ولی گمش کردم !!


    میکروکنترلر STM32103-RBT6 بطور کامل راه اندازی شد !!!
    مرحله بعدی اتصال TFT 3.2 به میکرو و بوت کردن UC-OS II + GUI !!!

    .

  2. تشکرها از این نوشته :


  3. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  4. #202
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    در مورد آخری هم بگم که همه این رجیستر ها اگر نوشتنی باشن به صورت GPIOB->ODR=0x0001 و اگه خوندنی باشن بصورت i = GPIOB->ODR نوشته میشند. این ظور نیست که هر کدام به یک صورت خاص باشه !
    این علامت <- هم که می بینید از علایم استاندارد زبان C هست . چون این رجیستر ها بصورت Structure نوشته شدن . برای دسترسی به Structure هم از این علامت استفاده میکنند .
    مهندس واقعا دمت قیژ خیلی کمک تاثیر گذاری بود...
    شاید بگم 50 درصد مشکل منو حل کردی
    50درصد دیگه مشکل خودمم که باید خودم حلش کنم
    بازم تشکر
    *** اللّهم عجّل لولیک الفرج ***

  5. کاربران : 2 تشکر کرده اند از شما Doloop برای ارسال این پست سودمند:


  6. #203
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    راستی مهندس کمه برای شما ، دکتر سعید بگم ایرادی نداره که...
    این CSSON چیه؟؟؟
    فعال سازی سیستم امنیتی کلاک؟؟؟درست گفتم.
    و تو این مورد HSEBYP ، بای پس چیه؟؟
    ببین من درست متوجه شدم!!!
    اگه بای پس فعال باشه کلاک سیستم در برابر نویز ایمن میشه
    مثل همون حذف نویز توی تقویت کننده ترانزیستوری!!!
    اگه اشتب گفتم شما تصحیح کن لطفا.
    ببخشید که اموزش یکطرفه شده ، من همش سوال میکنم و شما پاسخ....
    حالا بگذریم این بای پس در مواقع خاصی باید فعال باشه یا نه دلبخواهیه؟؟؟
    ویرایش توسط Doloop : 10-03-2012 در ساعت 23:28
    *** اللّهم عجّل لولیک الفرج ***

  7. تشکرها از این نوشته :


  8. #204
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    بابا از این حرفا نزن بد آموزی داره ! بعد باورم میشه دکترم ، فردا میرم مطب میزنم صد نفر رو میکشم !!

    Clock security system یا CSS از امکانات جالب این میکرو هست که برای شرایط بدی که ممکنه برای میکرو بوجود بیاد کمک شایانی می کنه . اگر این سیستم سخت افزاری که Clock Detector نام داره فعال بشه کلاک سیستم رو زیر نظر می گیره و در صورت بروز مشکل مثل مختل شدن ، از کار افتادن و ... برای کلاک خارجی تمام عملیات جاری رو رها کرده و یک اینتراپت از نوع مسک ناپذیر یا NMI بنام Clock interrupt ایجاد می کنه . در روتین این اینتراپت میشه آخرین کارهای ممکنه برای نجات اطلاعات و اعمال فرمان اضطراری رو انجام داد .
    **مهم :
    1- این سیستم برای نظارت بر اسیلاتور HSE (خارجی) بصورت مستقیم یا غیر مستقیم است . غیر مستقیم یعنی PLL اگر از HSE استفاده کنه .
    2- در صورت مختل شدن کلاک خارجی منبع کلاک روی HSI (داخلی) سوییچ می کنه !!!!!

    If the HSE oscillator is used directly or indirectly as the system clock (indirectly means: it is
    used as PLL input clock, and the PLL clock is used as system clock), a detected failure
    causes a switch of the system clock to the HSI oscillator and the disabling of the HSE
    oscillator. If the HSE clock (divided or not) is the clock entry of the PLL used as system clock
    when the failure occurs, the PLL is disabled too.

  9. کاربران : 9 تشکر کرده اند از شما sigma-mx برای ارسال این پست سودمند:


  10. #205
    کاربر فعال lpln852 آواتار ها
    تاریخ عضویت
    Dec 2008
    نوشته ها
    344
    تشکر
    53
    تشکر شده 88 بار در 55 پست

    پیش فرض

    نقل قول نوشته اصلی توسط armstk نمایش پست ها
    سلام
    من قبلا رویه یک برد آماده uc-ii + gui رو بوتش کرده بودم , البته فقط ایمیج بود و منم پروگرمش کردم و نتیجه رو دیدم
    چیزه خاصی نداره , البته چون اماده بودش ولی کلا اصولش اینه که براش تسک بنویسیم و اونم تسک هایه ما رو اجرا کنه
    سورسش موجود هست البته تریال بودش - ولی نسخه education رو هم گرفته بودم ولی گمش کردم !!
    ظاهرا این UC/II رو نمیشه با Keil کامپایل کرد باید بریم سراغ ]IAR درسته ؟؟
    دوستان اگه کسی مثال یا نسخه education رو داره بزاره خیلی ممنون میشم

    دوستان بالاخره معلوم شد با چه کامپایلری میخواید کار کنید ؟؟ اخه این پستا هر 10 تاش واسه یه کامپایلر هست
    ویرایش توسط lpln852 : 11-03-2012 در ساعت 11:52

  11. #206
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    سلام به همه مهندسای stm
    بریم سراغ رجیستر بعدی
    rcc_cfgr
    مشکل من توی این رجیستر اینه که چرا بیت های ppre1 و ppre2 به ترتیب با سرعت پائین و بالا وجود داره
    دلیل خاصی داره که باید با سرعت بالا و پائین باشه هر کی میدونه کلا این بیت رو یه مختصر توضیح بده لطفا
    و البته این بیت pllxtpre رو هم کلا متوجه نشدم چیه و برای چیه؟؟؟
    تشکر
    *** اللّهم عجّل لولیک الفرج ***

  12. #207
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

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

  13. #208
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    در سری stm32 دو باس پیشرفته وجود داره . یکی APB1 و دیگری APB2 . اولی نهایت سرعتش 36MHz هست و دومی 72MHz . مثلا GPIO که نیاز به سرعت بالا داره به APB2 وصله .تایمر ها و USART مثلا به APB1 وصله . حالا Pre1 تقسیم کلاک برای APB1 هست و Pre2 برای APB2 . اسم کلاک این باس ها هم به ترتیب PCLK1 وPCLK2 هست .
    PLLXTPRE هم یه تقسیم کننده هست بین خروجی اسیلاتور خارجی HSE و ورودی PLL که میتونه کلاک رو تقسیم بر 1 یا 2 کنه . برای تنظیم محاسبات کلاک و همانند سازی با ورودی کلاک HSI . چون تو HSI فقط تقسیم بر 2 داشتیم .

    یادم رفت بگم . به APB1 باس سرعت پایین و به APB2 باس سرعت بالا میگن .
    ویرایش توسط sigma-mx : 12-03-2012 در ساعت 02:16

  14. کاربران : 8 تشکر کرده اند از شما sigma-mx برای ارسال این پست سودمند:


  15. #209
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

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

  16. کاربران : 3 تشکر کرده اند از شما sigma-mx برای ارسال این پست سودمند:


  17. #210
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    برای تنظیم محاسبات کلاک و همانند سازی با ورودی کلاک HSI . چون تو HSI فقط تقسیم بر 2 داشتیم .
    نافتاد...
    *** اللّهم عجّل لولیک الفرج ***

  18. #211
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    منظورم این بود که چون تو hsi ما فقط تقسیم بر دو داشتیم . برای hse هم این قابلیت رو هم گذاشتن تا مسیر هر دو اسیلاتور تا pll مثل هم باشه . این کار مزایای زیادی داره . مثلا اگه سورس کلاک ما عوض بشه . دیگه نیازی به تنظیم مجدد تقسیم کننده ها و pll برای ساخت فرکانس مورد نظر نداریم .

  19. کاربران : 3 تشکر کرده اند از شما sigma-mx برای ارسال این پست سودمند:


  20. #212
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    سلام
    رجیستر rcc_cir
    من درست متوجه نشدم بیت صفرم و بیتهای متناظر تا بیت 4 نشون میده که وقفه رخ داده یا قسمت وقفه آماده به کاره
    بیت cssf چیکاره بیده؟؟؟ اینجا هم امنیت کلاک سیستم وقفه رو تامین میکنه تا اگه یه وقت کلاک دچار مشکل شد اسیلاتور عوض میکنه.
    بعد،این قسمت امنیتی همه جای میکرو همین کارو انجام میده یا نه کاره دیگه ای هم میکنه؟؟؟
    *** اللّهم عجّل لولیک الفرج ***

  21. #213
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    این رجیستر ، همون رجیستری هست که در صورت تغییر کردن وضع کلاک های مورد نظر سیستم فعال میشه . مربوط به همون قسمت Clock Security هست . در واقع شما وضعیت OK بودن هر کدام از این اسیلاتور ها رو می تونید از بیت 0 تا 4 این رجیستر که فقط خواندنی هم هست ببینید . در صورت تغییر وضعیت هر کدام از اینها باید فلگ رو پاک کنیم تا برای دفعه بعد آماده به کار بشه و این امر با مقدار دهی به بیت 16 تا 20 محقق میشه . بیت 8 تا 12 هم مربوط به فعال یا غیر فعال کردن اینتراپت هایی هست که در صورت تغییر وضعیت اسیلاتورها به روتین مورد نظر پرش کنه . تنظیمات این اینتراپت در بخش Interrupts and Events صورت می گیره که جزو بالاترین اولویت (2-) و از نوع Non Maskable است . و خود CSSF و CSSC مخصوص حالت مختل شدن اسیلاتور خارجی سرعت بالا HSE هست .

  22. کاربران : 6 تشکر کرده اند از شما sigma-mx برای ارسال این پست سودمند:


  23. #214
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    دمت قیژ مهندس (دکتر)
    یه چیزایی فهمیدم ولی بازم باید مطالبم رو بهت نشون بدم که یه وقت اشتب نکرده باشم
    تشکر
    *** اللّهم عجّل لولیک الفرج ***

  24. #215
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    چه رابطه اي هست بين دستورات manual و دستورات هدرها و همچنين cmsis
    مهندس تا اونجا که من میدونم همهی این هدر ها و CMSIS در اصل از رجیستر های manual استفاده کردن برای ساده سازی توابع مختلف
    مثلا شما هدر delay رو اگه دیده باشی برای ایجاد یک تاخیر در حد ثانیه از چندین دستور استفاده شده که ما توی main اصلی فقط delay رو مینویسیم و تاخیر یک ثانیه ایجاد میشه البته باید هدر delay رو هم فرا بخونیم
    مرجع همه اینها همون manual هست
    *** اللّهم عجّل لولیک الفرج ***

  25. #216
    مدیر باز نشسته armstk آواتار ها
    تاریخ عضویت
    Mar 2009
    نوشته ها
    926
    تشکر
    839
    تشکر شده 1,198 بار در 573 پست

    پیش فرض

    سلام
    خیلی شرمنده رفقا که نمیتونم تویه بحث شرکت کنم
    متاسفانه خیلی سرم شلوغه , و بردمم کار نمیکنه
    حسرت میخورم که چرا نمیتونم تویه این بحث همکاری کنم
    خلاصه به بزرگیه خودتون ببخشین , اینو گفتم که فکر نکنین رفیق نیمه راه هستم


    میکروکنترلر STM32103-RBT6 بطور کامل راه اندازی شد !!!
    مرحله بعدی اتصال TFT 3.2 به میکرو و بوت کردن UC-OS II + GUI !!!

    .

  26. تشکرها از این نوشته :


  27. #217
    مدیر باز نشسته armstk آواتار ها
    تاریخ عضویت
    Mar 2009
    نوشته ها
    926
    تشکر
    839
    تشکر شده 1,198 بار در 573 پست

    پیش فرض

    سلام
    خیلی شرمنده رفقا که نمیتونم تویه بحث شرکت کنم
    متاسفانه خیلی سرم شلوغه , و بردمم کار نمیکنه
    حسرت میخورم که چرا نمیتونم تویه این بحث همکاری کنم
    خلاصه به بزرگیه خودتون ببخشین , اینو گفتم که فکر نکنین رفیق نیمه راه هستم


    میکروکنترلر STM32103-RBT6 بطور کامل راه اندازی شد !!!
    مرحله بعدی اتصال TFT 3.2 به میکرو و بوت کردن UC-OS II + GUI !!!

    .

  28. #218
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    کد:
    AFIORST: Alternate function IO reset
    Set and cleared by software.
    0: No effect
    1: Reset Alternate Function
    متناوب یعنی چی؟؟؟
    منظورش همون امکانات دیگه پایه ها به غیر از ورودی و خروجی!!!
    *** اللّهم عجّل لولیک الفرج ***

  29. #219
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    خب ، یه مثال ساده میزنم که چطور کتابخانه cmsis به پین ها برای set یا reset کردن دسترسی پیدا میکنه ( با تبعیت از Reference Manual .
    همه ما می دونیم که رجیستر های میکرو در واقع مکانهایی در حافظه RAM هستند که برای دسترسی به اونها باید طبق جدول ارائه شده توسط کمپانی ، مقادیر یا تنظیمات مورد نظر مون رو در اون آدرس باید بنویسیم یا ازش بخونیم . کنترلر یا cpu هم برای انجام کارش به اون آدرس مراجعه می کنه و مقادیر ما رو پردازش می کنه .

    همون طور که قبلا گفتم این میکرو دارای دو باس برای امکانات محیطی یا Peripheral است . که به APB1 باس سرعت پایین و به APB2 باس سرعت بالا می گن . طبیعیه که در بانک رجیستر ها برای ورود به این باس ها آدرسهای جداگانه قرار دادند . حال ما قراره بریم روی باس 2 . چرا ؟ چون واحد GPIO که ما باهاش کار داریم روی باس 2 قرار داره . طبق دیاگرام Manual . پس باید ببینیم آدرس این باس چنده ؟! حالا اگه فایل stm32f10x.h رو باز کنیم مشاهده می کنیم که داخلش آدرس تمامی باس ها و رجیسترها و .. رو نوشته - اینم اول بگم که این فایل هدر برای کل سری stm32f10x نوشته شده . پس اگه داخلش رجیسترهایی مثل can2, ethernet , dac, timer14, .... دیدید تعجب نکنید اونا برای مدل های دیگه هستند -


    خب . حالا می خایم از گذرگاه AHB که شروع ورود به امکانات محیطی میکرو هست به سمت مقصد نهایی که GPIO هست حرکت کنیم . عبارت
    کد:
    #define PERIPH_BASE           ((uint32_t)0x40000000)
    رو داخل این هدر پیدا کنید . پس مشخص شد که آدرس باس AHB در بانک رجیستر مقدار فوق هست . خب این باس به دو شاخه APB1,APB2 تقسیم میشه . حالا عبارت
    کد:
    #define APB2PERIPH_BASE       (PERIPH_BASE + 0x10000)
    رو پیدا کنید . این میرسونه که اگه از بانک رجیستر AHB به اندازه 0x10000 بریم جلو به محدوده APB2 وارد میشیم . این عدد رو میتونید با آدرسهای جدول بالا مقایسه کنید . عدد قبلی با عدد فعلی جمع شده و عبارت 0x4001xxx بینشون مشترکه . حالا یه مرحله جلوتر میریم . مثلا وارد GPIOA میشیم . عبارت
    کد:
    #define GPIOA_BASE            (APB2PERIPH_BASE + 0x0800)
    v رو پیدا کنید . حالا اگر نتیجه رو با جدول بالا مقایسه کنید معلوم میشه که آدرس شروع واحد GPIOA عدد 0x40010800هست که از جمع مقادیر از ابتدا تا اینجا بدست اومد . عبارت
    کد:
    #define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)
    رو هم مشاهده کنید . حالا تازه وارد محدوده GPIOA شدیم و می تونیم به رجیسترهای اون دسترسی داشته باشیم .




    این جدول و رجیسترهای اون برای پورت های دیگه GPIO تکرار میشه . فقط باید بیس آدرس ما عدد بدست اومده باشه و با افست دادن به اون عدد (اضافه کردن عدد های سمت چپ جدول متناظر با هر رجیستر میتونیم به رجیستر مربوطه دسترسی داشته باشیم . مثلا آدرس مطلق دسترسی به این هفت رجیستر برای GPIOA به ترتیب برابر :
    0X40010818 - 0X40010814-0X40010810-0X4001080C-0X40010808-0X40010804-0X40010800

    هست . حالا با رفتن به این آدرس میشه 32 بیت داخلش نوشت یا خواند . بعضی جاهاش هم که رزرو هست . تو کتابخانه دنبال عبارت :
    کد:
    typedef struct
    {
      __IO uint32_t CRL;
      __IO uint32_t CRH;
      __IO uint32_t IDR;
      __IO uint32_t ODR;
      __IO uint32_t BSRR;
      __IO uint32_t BRR;
      __IO uint32_t LCKR;
    } GPIO_TypeDef;
    بگردید . در اینجا اومدن این جدول رو بصورت یک ساختار یا STRUCTURE تعریف کردن و عناصر این جدول رو هم همانند manual جاگذاری کردند . این ساختار یک جدول رو روی حافظه تشکیل میده به این شکل عمل میکنه که وقتی به نام ساختار که GPIO_TypeDef هست یه آدرس نسبت بدیم ( در اینجا آدرس GPIOA=0x40010800) از این آدرس میاد و 7 رجیستر 32 بیتی رو تو حافظه میچینه . حالا ما خیلی راحت میتونیم با فراخوانی اسم ساختار و یکی از اعضای اون بشکل زیر یه مقدار مثلا تو رجیستر BSRR بنویسیم :
    GPIOA->BSRR=0x00000001

    از این به بعد دیگه کتابخانه مخصوص stm32f10x_gpio.c و هدرش stm32f10x_gpio.h وارد کار میشه . تعریفهای پین 0 تا 15 فقط در واقع مقدار 1 دادن به بیتهای 0و1و... است و فرقی با نوشتن عدد نمی کنه . حالا اگه یک تابع مثلا
    کد:
    void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
    رو نگاه کنیم میبینیم که اونم از همین راه رفته و راه دیگه ای در واقع نیست .
    یه عکس هم براتون میزارم که مقدار پورت رو تو رجیستر ODR در آدرس حافظه مورد نظر بوسیله ابزار Memory در Keil نشون میده .


    پس معلوم شد چیزی که مهمه آدرس رجیستر هست و همون طوری که می دونیم اسامی فقط نام گذاری ما هستن . حالا تو manual مثلا نوشته GPIOx_ODR و تو کتابخانه به یه طریقی دیگه (structure) و اسمی دیگه .... مهم اینه که آدرس ها با هم میخونه .
    خب امیدوارم تا حدی تونسته باشم سر نخ رو دستتون بدم و امیدوارم مفید بوده باشه .....
    در ضمن برای نوشتن این پست حدود 2 ساعت وقت صرف شده
    یا حق



    تصاوير کوچک فايل پيوست تصاوير کوچک فايل پيوست برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 3.jpg
مشاهده: 553
حجم: 87.2 کیلو بایت  


  30. #220
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    متناوب یعنی چی؟؟؟
    منظورش همون امکانات دیگه پایه ها به غیر از ورودی و خروجی!!!
    Alternate Function در واقع کارهایی هست که یک پین بجز GPIO میتونه انجام بده . مثل اتصال پین بعنوان پایه TX واحد سریال . در واقع وظیفه فرعی و ثانوی یک پین بجز GPIO . اگر واحد سریال رو پیکربندی کنیم باید پین TX میکرو رو دیگه با GPIO تعریف نکنیم با AFIO از داخل به TX وصلش کنیم .

  31. کاربران : 9 تشکر کرده اند از شما sigma-mx برای ارسال این پست سودمند:


صفحه 11 از 58 نخستنخست 123456789101112131415161718192021222324252627282930 ... آخرینآخرین

موضوعات مشابه

  1. پاسخ: 515
    آخرين نوشته: 09-12-2018, 12:45
  2. پاسخ: 105
    آخرين نوشته: 02-12-2015, 17:33
  3. Stm32 رو چطوری شروع کنم دوستان ...!
    توسط sarab1 در انجمن stm32
    پاسخ: 18
    آخرين نوشته: 11-10-2013, 18:54
  4. پاسخ: 9
    آخرين نوشته: 01-08-2010, 12:53
  5. انتشار قريب‌الوقوع نخستين به‌روزرساني بزرگ ويندوز سون
    توسط arsalan681 در انجمن اخبار کامپیوتر و IT و مسابقات رباتیک
    پاسخ: 0
    آخرين نوشته: 08-06-2010, 12:43

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •