NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 1785 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
صفحه 1 از 5 12345 آخرینآخرین
نمایش نتایج: از 1 به 20 از 92

موضوع: آموزش جامع کتابخانه hal و کار با نرم افزار cubemx

  1. #1
    مدیر انجمن M.ABDOLLAHI آواتار ها
    تاریخ عضویت
    Dec 2008
    نام
    مهدی عبدالهی
    نوشته ها
    976
    تشکر
    1,567
    تشکر شده 2,677 بار در 667 پست

    Icon17 آموزش جامع کتابخانه hal و کار با نرم افزار cubemx

    بسمه تعالی
    سلام به همه دوستان با توجه اینکه چند سالی است که برنامه نویسی و طراحی مدارات میکروکنترلری با میکروهای ARM سری STM32 در کشورهای بالاخص صنعتی باب شده و چند مدتی هم هست که کتابخانه HAL و نرم افزار CUBEMX به هدف سهولت برنامه نویسی برای این سری میکرو ها عرضه شده تصمیمم بر این شد که با توجه به نیاز شغلی که داشتم و باید تا جای ممکن روی این میکروها تحقیق و بررسی میکردم سعی من بر این شد که کتابخانه HAL و نرمافزار CUBEMX بخصوص از ویدئو های اموزشی سایت یوتیوب فرا بگیرم و نتایج انرا در اینجا برای شما دوستان عزیزم قرار بدم سیستم اموزشی به این ترتیب است که من و بعضی دوستان دیگه مثل اقا سجاد بعضا ویدئو های اموزشی خودمان و یا بیشتر یوتیوب را برای شما اپلود میکنیم و در کنارش هم فایل های مربوطه از جمله پروژه کیل یا IAR و البته فایل برنامه CUBEMX را در اختیارتان میگذاریم برای شروع تصمیم گرفتم مبحث نیمه تمام USB HID و اتصال ان به نرم افزاری که با ویژوال استو دیو نوشته شده را قرار بدم رفیق عزیزم اقا سجاد عزیز قبلا مبحثی را در این مورد قرار داده بودند ولی مشکل اینجا بود که DLL که ایشان برای نرمافزار ویژوال استودیو استفاده کرده بودند فقط در ویندوز 8 و 10 جواب میداد ولیکن من برای شما یک DLL جدید قرار دادم که میتوانید برنامه ویژوال استو دیو را در هر سیستم عاملی و حتی با دات نیم فریم ورک 2 اجرا کنید برنامه میکروکنترلر را هم با سری cortexm3 نوشتم که ارزان باشه و در دسترس همه دوستان در پایان هم لینک دانلود برنامه میکرو و cubemx و برنامه ویژوال استودیو بزبان vb.net قرار داده میشه به همراه چند عکس مخصوص این پروژه که توضیحات درش قرار داده شده در ضمن ویدئو که قرار داده شده همان ویدئو اموزشی موجود در سایت یوتیوب است منتظر قستهای بعدی اموزش باشید یا علی مدد التماس دعا
    ویرایش توسط M.ABDOLLAHI : 30-10-2016 در ساعت 22:57
    و هر كس از ياد [خداى‏] رحمان دل بگرداند، بر او شيطانى مى‏گماريم تا براى وى دمسازى باشد. (36)و مسلّماً آنها ايشان را از راه باز مى‏دارند و [آنها] مى‏پندارند كه راه يافتگانند. (37)تا آن گاه كه او [با دمسازش‏] به حضور ما آيد، [خطاب به شيطان‏] گويد: «اى كاش ميان من و تو، فاصله خاور و باختر بود، كه چه بد دمسازى هستى!» (38)(سوره زخرف)بگو: «پليد و پاك يكسان نيستند، هر چند كثرت پليد [ها] تو را به شگفت آوَرَد. پس اى خردمندان، از خدا پروا كنيد، باشد كه رستگار شويد.» (100)(سوره مائده(

  2. کاربران : 16 تشکر کرده اند از شما M.ABDOLLAHI برای ارسال این پست سودمند:


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

  4. #2
    مدیر انجمن M.ABDOLLAHI آواتار ها
    تاریخ عضویت
    Dec 2008
    نام
    مهدی عبدالهی
    نوشته ها
    976
    تشکر
    1,567
    تشکر شده 2,677 بار در 667 پست

    پیش فرض آموزش مقدماتی رابط uarts

    سلام دوستان امشب تصمیم دارم اموزش مقدماتی کار با رابط سریال UARTS را در اختیار شمار قرار بدم که اعم هست از توابع دریافت و ارسال و همچنین کار با وقفه رابط سریال UARTS در ادامه هم فایل برنامه با KEIL و CUBEMX و همچنین در ادامه نیز ویدئو اموزشی و همچنین عکسهای راهنما در اختیار شما قرار خواهد گرفت نکته هایی که حائض اهمیت هستند از این قرار است که شما برای دریافت از رابط سریال بدون وقفه میتوانید از فرمان
    کد:
    HAL_UART_Receive(&huart3, bufferrx, 10,1000);
    استفاده کنید که در این فرمان huart3 اسم رابط سریال مد نظر ماست و bufferrx اسم ارایه ای است که قرار است بایتهای دریافتی در ان ریخته شود و عدد 10 تعداد بایتهایی است که ما میخواهیم از رابط سریال دریافت کنیم و عدد 1000 هم به معنی حداکثر 1000 میلی ثانیه صبر کردن برای دریافت 10 بایت که البته ما در برنامه مورد نظرمان میخواهیم از وقفه دریافت سریال برای دریافت اطلاعات بهره ببریم و از این فرمان استفاده نمیکنیم

    فرمانها و توابع مربوط به فعال و غیر فعال کردن وقفه های این رابط سریال و همچنین پاک کردن پرچم ها بصورت ماکرو در برگه هدر فایل stm32f4xx_hal_uart موجود هستند به عنوان مثال با ماکرو
    کد:
    __HAL_UART_ENABLE_IT(&huart3, UART_IT_RXNE);
    شما وقفه دریافت رابط سریال شماره 3 را فعال میکنید که اگر در سر برگ فایل هدر stm32f4xx_hal_uart در زیر ماکرو مربوطه توجه کنید دقیقا با کامنت مشخص کرده که دیگر چه وقفه های دیگری را میتوانید با این ماکرو فعال کنید و همچنین متعاقبا با ماکرو __HAL_UART_DISABLE_IT میتوانید یک وقفه خاص را غیر فعال نمایید
    یا مثلا با ماکرو __HAL_UART_GET_FLAG میتوانید وضعیت یک پرچم مورد نظر از رابط سریال را بررسی کنید
    خوب اگر تا اینجا توجه کرده باشید فهمیدیم که با چه ماکروهایی میتونیم وقفه ها ی مربوط به رابطUARTS را فعال و غیر فعال کنیم و همچنین به وضعیت پرچم ها رسیدگی کنیم حال میرسیم به یک سری نکته مهم و اساسی ا گر توجه کرده باشید ما در سربرگ فایل سی stm32f4xx_it توابع مربط به وقفه ها را داریم وقتی داخل نرم افزار CUBEMX درقسمت NVIC SETTING مربوط به رابط UART مورد نظر (که ما در اینجا UART3 را داریم) یعنی قسمت تنظیمات وقفه های ان تیک فعال کردن وقفه رابط سریال را بزنیم در همان سربرگ که ذکر شد تابعی به وجود می اید به نام USART3_IRQHandler داخل این تابع یک تابع دیگر فراخوانی شده بنام HAL_UART_IRQHandler اگر به سربرگ فایل سی stm32f4xx_hal_uart برویم و محتوا داخل این تابع را بررسی کنیم در ابتدای ان مشاهده میکنیم یک سری پرچم های فعال شده پاک میشوند و در ادامه ان چه از داخل خود تابع و چه از داخل تابعهایی که در خل این تابع قرار دارند یک سری توابعی فراخوانی میشوند با پسوند Callback که ما در اینجا با HAL_UART_RxCpltCallback کار داریم خوب حالا ما میخوایم بفهمیم چطور باید از این تابع استفاده کنیم و اصلا این تابع به چه درد ما میخوره کاری که اول از همه انجام میدیم این هست که تابع
    کد:
    void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
    را از همان سربرگ فایل سی stm32f4xx_hal_uart کپی برمیداریم و انرا در فایل MAIN خودمان جایگذاری میکنیم حالا میخواهیم بفهمیم چطور از ان استفاده کنیم بعد از اینکه وقفه دریافت رابط سریال را با همان فرمانی که گفتم فعال کردیم میریم داخل همون تابع USART3_IRQHandler و فرمان
    کد:
    HAL_UART_Receive_IT(&huart3, bufferrx, 10);
    رادقیقا بعد از فرمان HAL_UART_IRQHandler(&huart3); مینویسم اگر توجه کنید bufferrx همان ارایه ای است که قرار است اطلاعات دریافتی ما در اون جا بگیره و عدد 10 تعداد دریافتهای ماست که بعد از اینکه 10 بار دریافت به اتمام رسید ما بصورت خودکار به تابع HAL_UART_RxCpltCallback در داخل MAIN رجعت میکنیم و در اونجا هر 10 بایت دریافتی را داخل ارایه bufferrx مشاهده میکنیم منظور من این است که در اینجا هر ده بار دریافت در داخل تابع USART3_IRQHandler سبب میشود یکبار تابع HAL_UART_RxCpltCallback
    فعال شود که حالا این دیگه دست خودمونه که به جای عدد 10 چه عدد دیگری قرار بدیم مثلا یکی ممکنه بخواد 500 بایت دریافت کنه و به همین راحتی حالا من همه برنامه و فایلها را قرار دادم تا خودتون کار نکنید درست یاد نمیگیرید برای قضیه ارسال هم شما میتونید از فرمان HAL_UART_Transmit استفاده کنید و به یک تعداد معین کاراکتر به پورت سریال ارسال کنید که من از این فرمان را در برنامه قرار دادم و میتونید ببنید چطور میشه از اون استفاده کرد ولیکن من این فرمان را کامنت کردم ولی همین فرمان را به کتابخانه STDIO معرفی کردم و از طریق فرمان PRINTF ارسال را انجام دادم که میتونید در برنامه مشاهده کنید در ضمن حتما محتوا ارایه دریافت را با دیباگر مشاهده کنید راستی میخواستم بنویسم این برنامه را من با STM32F407ZGT6 نوشتم خلاصه این قضیه ارسال و دریافت جزئیات زیاد داره که خودتون باید فیلم را ببینید و برنامه را هم مطالعه کنید در اینده هم ان شاءلله کار با DMA رابط سریال را اموزش میدم که خیلی کار اسونی هست و واقعا خیلی خیلی کاربرد داره یا علی مدد التماس دعا برای ظهور هر چه سریعتر حضرت ولی عصر عج
    ویرایش توسط dariush_ab : 17-11-2016 در ساعت 00:16
    و هر كس از ياد [خداى‏] رحمان دل بگرداند، بر او شيطانى مى‏گماريم تا براى وى دمسازى باشد. (36)و مسلّماً آنها ايشان را از راه باز مى‏دارند و [آنها] مى‏پندارند كه راه يافتگانند. (37)تا آن گاه كه او [با دمسازش‏] به حضور ما آيد، [خطاب به شيطان‏] گويد: «اى كاش ميان من و تو، فاصله خاور و باختر بود، كه چه بد دمسازى هستى!» (38)(سوره زخرف)بگو: «پليد و پاك يكسان نيستند، هر چند كثرت پليد [ها] تو را به شگفت آوَرَد. پس اى خردمندان، از خدا پروا كنيد، باشد كه رستگار شويد.» (100)(سوره مائده(

  5. کاربران : 12 تشکر کرده اند از شما M.ABDOLLAHI برای ارسال این پست سودمند:


  6. #3
    مدیر انجمن M.ABDOLLAHI آواتار ها
    تاریخ عضویت
    Dec 2008
    نام
    مهدی عبدالهی
    نوشته ها
    976
    تشکر
    1,567
    تشکر شده 2,677 بار در 667 پست

    پیش فرض

    فقط یک نکته مهم دیگه مونده که باید بنویسم ممکنه یکی بپرسه اگر ما همزمان وقفه چند عدد از رابطهای UART را فعال کرده باشیم چطوری میتونیم اونها را از هم در تابع CALLBACK تفکیک کنیم این عکس را ببنید تا متوجه بشید در ضمن برای بقیه ادوات میکرو هم مثل تایمر و بقیه رابطهای سریال همین قضیه صادق هست

    و هر كس از ياد [خداى‏] رحمان دل بگرداند، بر او شيطانى مى‏گماريم تا براى وى دمسازى باشد. (36)و مسلّماً آنها ايشان را از راه باز مى‏دارند و [آنها] مى‏پندارند كه راه يافتگانند. (37)تا آن گاه كه او [با دمسازش‏] به حضور ما آيد، [خطاب به شيطان‏] گويد: «اى كاش ميان من و تو، فاصله خاور و باختر بود، كه چه بد دمسازى هستى!» (38)(سوره زخرف)بگو: «پليد و پاك يكسان نيستند، هر چند كثرت پليد [ها] تو را به شگفت آوَرَد. پس اى خردمندان، از خدا پروا كنيد، باشد كه رستگار شويد.» (100)(سوره مائده(

  7. کاربران : 9 تشکر کرده اند از شما M.ABDOLLAHI برای ارسال این پست سودمند:


  8. #4
    کاربر فعال
    تاریخ عضویت
    May 2010
    نوشته ها
    119
    تشکر
    361
    تشکر شده 85 بار در 46 پست

    پیش فرض

    سلام اقا ممنون اموزشتون عالیه
    2 تا سئوال دارم
    1- اگه ارایه مثلا 50 بایتی باشه , ما یه رشته مثلا 35 بایتی دریافت کنیم خب با دباگ در کیل 35 ارایه اول متغیر 50 بایتی پر میشه و اگر در دریافت بعدی ارایه 20 بایتی باشه متاسفانه 15 تا اول در ادامه اون 35 بایتی میاد و 5 تا باقیمونده جایگزین 5 ارایه اول متغیر 50 بایتی میشه
    یعنی رشته دومی میشکنه و منقطع میشه یا 2 تیکه میشه برای اینکه اینطور نشه چیکار باید کرد ؟
    2- سئوال بعدیم اینه که مثلا شما گفتید تا دریافت 10 بایت میره درcall back خب اگه ما ندونیم ارایمون چند بایتیه چکار کنیم؟


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


  10. #5
    کاربر فعال
    تاریخ عضویت
    May 2010
    نوشته ها
    119
    تشکر
    361
    تشکر شده 85 بار در 46 پست

    پیش فرض

    یعنی فرض کنید یه کی پدگذاشتیم یه نام یا رمزی برای مدار گذاشتیم حالا یکی میخواد مثلا رمز یا اسم رو 4 باتی انتخاب کنه یکی میخواد 8 بایتی (یکی میخواد رمز با 1234 و یکی میخواد رمز رو 12345678 بزاره ) اگه call back منتظر باشه که فلان بایت مشخص شده دریافت بشه اجرا شه که معلوم نیست که طرف رمزش چند حرفیه ؟ اون وقت تا ابد منتظر باید بمونه که شما مثلا در بالا گفتید 10 بایت تکمل بشه و call back اجر بشه حالا اگه رشته دریافتی 8 بایتی باشه call back بخاطر اون 2 تا باید منتظر بمونه تا دستورات اجرا بشه

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


  12. #6
    مدیر انجمن M.ABDOLLAHI آواتار ها
    تاریخ عضویت
    Dec 2008
    نام
    مهدی عبدالهی
    نوشته ها
    976
    تشکر
    1,567
    تشکر شده 2,677 بار در 667 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mahdi8866 نمایش پست ها
    سلام اقا ممنون اموزشتون عالیه
    2 تا سئوال دارم
    1- اگه ارایه مثلا 50 بایتی باشه , ما یه رشته مثلا 35 بایتی دریافت کنیم خب با دباگ در کیل 35 ارایه اول متغیر 50 بایتی پر میشه و اگر در دریافت بعدی ارایه 20 بایتی باشه متاسفانه 15 تا اول در ادامه اون 35 بایتی میاد و 5 تا باقیمونده جایگزین 5 ارایه اول متغیر 50 بایتی میشه
    یعنی رشته دومی میشکنه و منقطع میشه یا 2 تیکه میشه برای اینکه اینطور نشه چیکار باید کرد ؟
    2- سئوال بعدیم اینه که مثلا شما گفتید تا دریافت 10 بایت میره درcall back خب اگه ما ندونیم ارایمون چند بایتیه چکار کنیم؟

    علیکم السلام دوست عزیزم لطف دارید در مورد سوالاتی که پرسیدید بنده منظورتون را کامل متوجه شدم جفت سوال شما در اصل یکی است برای رفع اون مشکل یا باید به جای اون عدد یک متغیر قرار بدیم یا باید عدد یک قرار بدیم و یکی یکی مقادیر دریافتی را بررسی کنیم جدا از این مبحث این قضیه جزو امکانات سخت افزاری خود میکرو نیست و جزو قابلیتهای کتابخانه hal هست و ما باید در اصل از dma برای اینگونه موارد استفاده کنیم که این مبحث را هم حتما در ادمه اگر خدا توفیق داد اموزش میدم چون هم خیلی هم اسونه و هم خیلی کاربردی و شیرین

    - - - Updated - - -

    سلام دوستان در این بخش از اموزش میخوام کار با واحد adc را اموزش بدم که در این مرحله سعی میکنیم ساده ترین برنامه ممکن را برای خواندن مقادیر روی یک پایه ورودی انالوگ به دیجیتال را بنویسیم ان شا ء لله در جلسه بعد به طور خیلی حرفه ای تر با این بخش کار میکنیم و طریقه کار با بخصوص بخش dma واحد انالوگ به دیجیتال و واحد uart و دیجیتال به انالوگ را بررسی که خیلی مبحث مهم و حیاتی هست میکنیم و البته این واحد خیلی حالتهای دیگه هم داره مثل کار با چند کانال بصورت همزمان و تحریک این واحد از خارج که اموزشهای اونها را هم ان شاء لله قرار میدم در ادامه این بخش هم من ویدئو اموزشی و برنامه نمونه و عکسهای راهنما را قرار میدم فقط در مورد یکی از دستورات که ممکنه براتون سوال بیاد توضیح میدم اونهم دستور
    کد:
    HAL_ADC_PollForConversion(&hadc1,100);
    این دستور به حداکثر زمان 100 میلی ثانیه صبر میکنه تا عملیات تبدیل انالوگ به دیجیتال روی واحد adc مورد نظر تمام بشه و بعد برنامه به خط بعد منتقل میشه به همین راحتی که البته عدد 100 که برحسب میلی ثانیه هم هست دست خودتونه در ضمن من تو این برنامه برای نمایش مقادیر از واحد سریال استفاده کردم که شما میتونید از خود دیباگر کیل هم استفاده کنید ولیکن شما هم سعی کنید در همه برنامه هایی که مینویسید همیشه یک رابط سریال برای دیباگ برنامتون قرار بدین



    ویرایش توسط dariush_ab : 17-11-2016 در ساعت 00:11
    و هر كس از ياد [خداى‏] رحمان دل بگرداند، بر او شيطانى مى‏گماريم تا براى وى دمسازى باشد. (36)و مسلّماً آنها ايشان را از راه باز مى‏دارند و [آنها] مى‏پندارند كه راه يافتگانند. (37)تا آن گاه كه او [با دمسازش‏] به حضور ما آيد، [خطاب به شيطان‏] گويد: «اى كاش ميان من و تو، فاصله خاور و باختر بود، كه چه بد دمسازى هستى!» (38)(سوره زخرف)بگو: «پليد و پاك يكسان نيستند، هر چند كثرت پليد [ها] تو را به شگفت آوَرَد. پس اى خردمندان، از خدا پروا كنيد، باشد كه رستگار شويد.» (100)(سوره مائده(

  13. کاربران : 8 تشکر کرده اند از شما M.ABDOLLAHI برای ارسال این پست سودمند:


  14. #7
    مدیر انجمن M.ABDOLLAHI آواتار ها
    تاریخ عضویت
    Dec 2008
    نام
    مهدی عبدالهی
    نوشته ها
    976
    تشکر
    1,567
    تشکر شده 2,677 بار در 667 پست

    پیش فرض آموزش استفاده از رابط dma در ادوات جانبی adc و uart

    سلام مجدد به همه دوستان عزیز و گرامی طبق قولی که قبلا داده بودم قراره به مبحث کار با واحد DMA در ادوات ADC و UART بپردازیم همانطور که میدونید ما میتونیم بوسیله واحد dma از ادوات جانبی میکرو استفاده کنیم بدون اینکه در یک یا چند خط فرمان در برنامه متوقف بشیم بعنوان مثال میتونیم به میکرو فرمان بدیم یک تعداد بایت مشخص از یک بافر مشخص را به رابط سریال ارسال کنه و وقتی کارش تمام شد تو یک وقفه به ما اعلام کنه و یا اینکه یک تعداد بایت مشخص را دریافت کنه و بعد که کارش تمام شد در یک وقفه به ما اعلام کنه و تو تمام این مدت که اون کارش را انجام میده هیچ احتیاجی به دخالت ما نداره و ما میتونیم خطوط فرمان دیگر را اجرا کنیم برای فرا گرفتن کامل این اموزش شما باید فیلم اموزشی را حتما ببینید تا متوجه توضیحات من بشین در ضمن اول کار این را بنویسم که از این به بعد من ویدئو های اموزشی را با کیفیت اچ دی در سایت اپارات قرار میدم تا دوستان دسترسی ساده تری به ویدئو ها داشته باشند در ویدئو برنامه را طرف با برنامه IAR مینویسه ولیکن من همون برنامه را با KEIL برای شما میگذارم که دوستان برای کار کردن راحت باشند حالا بد نیست بعضی از دستورات را همینجا توضیح مختصری بدم تا کمی هم که شده مبحث برای دوستان جا بیفته
    کد:
    HAL_UART_Transmit_DMA(&huart1, buffer, len);
    بوسیله این دستور ما به تعداد بایتی که توسط متغیر len مشخص میکنیم از بافر buffer به رابط سریال مورد نظرمون ارسال میکنیم توجه داشته باشید که در اینجا چون ما از dma استفاده کردیم همینکه ما این فرمان را بنویسیم خود میکرو بصورت خودکار و بدون اینکه برنامه مشغول بشه به تعداد مشخص بایت را به رابط سریال ارسال میکنه و بعد از اینکه کارش تمام شد در روتین وقفه پایان کار را به ما اعلام میکنه
    کد:
    HAL_ADC_Start_DMA(&hadc1, (uint32_t*) buffer, len);
    بوسیله این دستور ما به تعداد بایتی که توسط متغیر len مشخص میکنیم به همون تعداد از رابط انالوگ به دیجیتال میخونه و مقادیرش را هم در ارایه buffer میریزه و این هم مثل قبلی وقتی کارش تموم شد تو یک روتین وقفه به ما پایان کار را اعلام میکنه
    یک نکته مهم دیگه هم هست موقعی که شما در cubemx واحد dma را تنظیم میکنید یک گزینه ای هست به نام circular یعنی اینکه بصورت چرخشی یکسره فرمان dma بدون دخالت شما اجرا میشه یعنی مثلا به محض اینکه شما فرمان HAL_UART_Transmit_DMA را بزنید بعد از اینکه عملیات ارسال ان به تعداد مشخص از ارایه مورد نظر به پایان رسید بدون اینکه ما دوباره همین فرمان را بنویسم خودش دوباره محتوا بافر را ارسال میکند فایده این خاصیت بخصوص در رابط dma رابط dac بسیار مشهود است که ما به راحتی با این روش میتوانیم بدون مشغول شدن میکرو یک موج سینوسی بصورت متداوم در خروجی ایجاد کنیم که این را ان شاءلله در جلسه بعدی اموزش خواهیم داد و اگر هم گزینه circular را به normal قرار دهیم فرمان یکبار اجرا میشودو برای دفعات بعدی احتیاج به تحریک دوباره دارد
    ویرایش توسط dariush_ab : 17-11-2016 در ساعت 00:11
    و هر كس از ياد [خداى‏] رحمان دل بگرداند، بر او شيطانى مى‏گماريم تا براى وى دمسازى باشد. (36)و مسلّماً آنها ايشان را از راه باز مى‏دارند و [آنها] مى‏پندارند كه راه يافتگانند. (37)تا آن گاه كه او [با دمسازش‏] به حضور ما آيد، [خطاب به شيطان‏] گويد: «اى كاش ميان من و تو، فاصله خاور و باختر بود، كه چه بد دمسازى هستى!» (38)(سوره زخرف)بگو: «پليد و پاك يكسان نيستند، هر چند كثرت پليد [ها] تو را به شگفت آوَرَد. پس اى خردمندان، از خدا پروا كنيد، باشد كه رستگار شويد.» (100)(سوره مائده(

  15. کاربران : 12 تشکر کرده اند از شما M.ABDOLLAHI برای ارسال این پست سودمند:


  16. #8
    مدیر انجمن M.ABDOLLAHI آواتار ها
    تاریخ عضویت
    Dec 2008
    نام
    مهدی عبدالهی
    نوشته ها
    976
    تشکر
    1,567
    تشکر شده 2,677 بار در 667 پست

    New اموزش کار با قسمت dma مربوط به رابطهای adc و uart و dac

    سلام دوستان در این اموزش میخواهیم قسمت دوم مربوط به اموزش DMA در اوات UART و ADC و DAC بپردازیم در اموزش قبلی قسمت DAC وجود نداشت اگز به کدها توجه کنید کار کردن با واحد DMA مشابه و بسیار ساده میباشد در مثال که من برای دانلود قرار میدهم خیلی راحت میتوانید توسط توابع مثلثاتی و واحد DAC با استفاده از DMA بدون دخالت میکرو یک موج سینوسی ثابت در خروجی ایجاد کنید
    کد:
    HAL_DAC_Start_DMA(&hdac, DAC_CHANNEL_1, (uint32_t*) bufferIn, 256, DAC_ALIGN_8B_R);
    توسط این تابع به تعداد 256 بایت از بافر bufferIn در خروجی DAC بصورت متداوم ایجاد میشود البته اگر ما در تنظیمات CUBEMX حالت CIRCULAR را برای DMA رابط DAC انتخاب کرده باشیم نکته دیگری که در این خط فرمان موجود است اینکه ممکن است کسی سوال کند اگر بافر bufferIn از نوع uint8_t است پس چرا کلمه (uint32_t*) در پشت ان نوشته شده است دلیل ان این است که در بدنه تابع ان ارگومان در اصل بعنوان یک uint32_t معرفی شده است و ما با نوشتن این متن در پشت ان این بافر را به عنوان یک uint32_t به کامپایلر معرفی میکنیم تا در کامپایل کردن برنامه به خطا برنخوریم و اصولا این یک قانون در برنامه نویسی است و ما باید در تمام توابع انرا رعایت کنیم
    و هر كس از ياد [خداى‏] رحمان دل بگرداند، بر او شيطانى مى‏گماريم تا براى وى دمسازى باشد. (36)و مسلّماً آنها ايشان را از راه باز مى‏دارند و [آنها] مى‏پندارند كه راه يافتگانند. (37)تا آن گاه كه او [با دمسازش‏] به حضور ما آيد، [خطاب به شيطان‏] گويد: «اى كاش ميان من و تو، فاصله خاور و باختر بود، كه چه بد دمسازى هستى!» (38)(سوره زخرف)بگو: «پليد و پاك يكسان نيستند، هر چند كثرت پليد [ها] تو را به شگفت آوَرَد. پس اى خردمندان، از خدا پروا كنيد، باشد كه رستگار شويد.» (100)(سوره مائده(

  17. کاربران : 10 تشکر کرده اند از شما M.ABDOLLAHI برای ارسال این پست سودمند:


  18. #9
    مدیر انجمن M.ABDOLLAHI آواتار ها
    تاریخ عضویت
    Dec 2008
    نام
    مهدی عبدالهی
    نوشته ها
    976
    تشکر
    1,567
    تشکر شده 2,677 بار در 667 پست

    Icon16 اموزش کار با sd کارت و fatfs در نرم افزار cubemx

    سلام دوستان قصد دارم
    اموزش کار با SD کارت و FATFS کتابخانه فت در نرم افزار CUBEMX را قرار بدم خیلی کار اسونی هست در برنامه ای که گذاشتم شما میتونید یک فایل TXT را ایجاد کنید و داخلش متن بنویسید و یا متن نوشته شده داخل فایل TXT را بخونید در ضمن فیلم و عکسهای راهنما را هم ببنید تا متوجه تنظیمات بشید من خودم برنامه را با میکرو STM32F407ZGT6 نوشتم و کامل تست کردم خوب جواب میده هم بصورت چهار بیتی امتحان کردم و هم بصورت 1 بیتی خیلی راحت میتونید با CUBEMX این قضیه را تعیین کنید در ضمن در ادامه یک فایل اموزشی هم برای اشنایی شما بچه های خوب با توابع کتابخانه فت قرار میدم برای جلسه بعد هم ان شاء لله تصمیم دارم اموزش کار با کتابخانه فت اینبار با فلش USB را قرار بدم که اون هم کار خیلی اسون و لذت بخشیه



    دانلود مثال برنامه میکروکنترلر با نرم افزار keil و cubemx



    ویرایش توسط M.ABDOLLAHI : 23-11-2016 در ساعت 22:35
    و هر كس از ياد [خداى‏] رحمان دل بگرداند، بر او شيطانى مى‏گماريم تا براى وى دمسازى باشد. (36)و مسلّماً آنها ايشان را از راه باز مى‏دارند و [آنها] مى‏پندارند كه راه يافتگانند. (37)تا آن گاه كه او [با دمسازش‏] به حضور ما آيد، [خطاب به شيطان‏] گويد: «اى كاش ميان من و تو، فاصله خاور و باختر بود، كه چه بد دمسازى هستى!» (38)(سوره زخرف)بگو: «پليد و پاك يكسان نيستند، هر چند كثرت پليد [ها] تو را به شگفت آوَرَد. پس اى خردمندان، از خدا پروا كنيد، باشد كه رستگار شويد.» (100)(سوره مائده(

  19. کاربران : 9 تشکر کرده اند از شما M.ABDOLLAHI برای ارسال این پست سودمند:


  20. #10
    کاربر علاقه مند
    تاریخ عضویت
    Nov 2016
    نام
    حسین
    نوشته ها
    28
    تشکر
    37
    تشکر شده 24 بار در 12 پست

    پیش فرض

    سلام آقا مهدی
    داداش من با کیوب برای یوزارت 1 پروژه ساختم ولی روی ترمینال هیچی نمیفرسته
    برنامه رو دیباگ کردم main اجرا میشه اما هیچی روی ترمینال نمیفرسته
    رجیستر دیتای یوزارت رو هم چک کردم هیچ دیتایی روش قرار نمیگیره

    میتونی یه پروژه ساده و سریع برام بسازی که فقط یه دیتایی روی ترمینال نشون بده

    میکرو stm32f407VGT
    یوزارت 1 باشه پین A9 و A10

    یه سوالی هم داشتم اینه که فقط بین PC و میکرو 3 تا پین GND و RX و TX وصل باشه کافیه؟
    ویرایش توسط ZoZi : 25-11-2016 در ساعت 15:15

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


  22. #11
    کاربر فعال
    تاریخ عضویت
    May 2010
    نوشته ها
    119
    تشکر
    361
    تشکر شده 85 بار در 46 پست

    پیش فرض

    سلام
    2 تا نرم افزار گذاشتم با اینها تست کن
    usart_terminal

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


  24. #12
    کاربر علاقه مند
    تاریخ عضویت
    Nov 2016
    نام
    حسین
    نوشته ها
    28
    تشکر
    37
    تشکر شده 24 بار در 12 پست

    پیش فرض

    ممنون ولی rx tx رو به هم وصل کردم و با کیبورد تست کردم ترمینال مشکلی نداره دیتا سند و ریسیو میشه
    خودم شکم به برنامس
    اگه یه پروژه ای باشه که جواب بده نیگاا کنم میفهمم مشکل کارم کجاس./

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


  26. #13
    کاربر علاقه مند
    تاریخ عضویت
    Nov 2016
    نام
    حسین
    نوشته ها
    28
    تشکر
    37
    تشکر شده 24 بار در 12 پست

    پیش فرض

    برادر عبداللهی یه جوابی به ما بده

    این پروژه ای که من درست کردم ولی روی سریال چرت و پرت نشون میده

    یوزارت

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


  28. #14
    مدیر انجمن M.ABDOLLAHI آواتار ها
    تاریخ عضویت
    Dec 2008
    نام
    مهدی عبدالهی
    نوشته ها
    976
    تشکر
    1,567
    تشکر شده 2,677 بار در 667 پست

    پیش فرض اموزش کار با فلش usb و fatfs در نرم افزار cubemx

    سلام دوستان امشب قصد دارم اموزش ارتباط میکرو با flash usb با استفاده از کتابخانه فت را اموزش بدیم فیلم اموزشی را حتما ببنید چون جزئیات تغییرات بعد از خروجی گرفتن از cubemx زیاد است فایل پروژه را هم براتون گذاشتم منتها من خودم برنامه را با stm32f407zgt6 نوشتم اموزش کتابخانه فت را هم که قبلا گذاشتم خودتون تحلیل کنید



    دانلود مثال برنامه میکروکنترلر با نرم افزار keil و cubemx

    و هر كس از ياد [خداى‏] رحمان دل بگرداند، بر او شيطانى مى‏گماريم تا براى وى دمسازى باشد. (36)و مسلّماً آنها ايشان را از راه باز مى‏دارند و [آنها] مى‏پندارند كه راه يافتگانند. (37)تا آن گاه كه او [با دمسازش‏] به حضور ما آيد، [خطاب به شيطان‏] گويد: «اى كاش ميان من و تو، فاصله خاور و باختر بود، كه چه بد دمسازى هستى!» (38)(سوره زخرف)بگو: «پليد و پاك يكسان نيستند، هر چند كثرت پليد [ها] تو را به شگفت آوَرَد. پس اى خردمندان، از خدا پروا كنيد، باشد كه رستگار شويد.» (100)(سوره مائده(

  29. کاربران : 8 تشکر کرده اند از شما M.ABDOLLAHI برای ارسال این پست سودمند:


  30. #15
    کاربر علاقه مند
    تاریخ عضویت
    Nov 2016
    نام
    حسین
    نوشته ها
    28
    تشکر
    37
    تشکر شده 24 بار در 12 پست

    پیش فرض

    سوالم یعنی اینقدر سخت بوود؟!!!

    باواا این برنامه که چیزی نداره کلا main برنامه اینه

    کد:
    int main(void)
    {
    char str[10] = "123456789";
    
    
      HAL_Init();
    
    
      SystemClock_Config();
    
    
      MX_GPIO_Init();
      MX_USART1_UART_Init();
        
      while (1)
      {
       
    HAL_UART_Transmit(&huart1,(uint8_t*) str,10 , 0xFFFF);      
    HAL_Delay(1000);      
          
      }
    
    
    }

  31. کاربران : 3 تشکر کرده اند از شما ZoZi برای ارسال این پست سودمند:


  32. #16
    مدیر انجمن M.ABDOLLAHI آواتار ها
    تاریخ عضویت
    Dec 2008
    نام
    مهدی عبدالهی
    نوشته ها
    976
    تشکر
    1,567
    تشکر شده 2,677 بار در 667 پست

    پیش فرض

    سلام من از صبح بیرون بودم الان برنامه را تست کردم جواب میده جدا از اون شما قسمت کلاک را در cubemx اشتباه تنظیم کردید از یک طرف کلاک را روی خارجی گذاشتید ولی باز اون تیک کلاک 16 مگ داخلی را انتخاب کردید شما لطف کنید برنامه ای را که من برای رابط سریال گذاشتم را دانلود کنید و برنامه تان را براساس ان بنویسید
    و هر كس از ياد [خداى‏] رحمان دل بگرداند، بر او شيطانى مى‏گماريم تا براى وى دمسازى باشد. (36)و مسلّماً آنها ايشان را از راه باز مى‏دارند و [آنها] مى‏پندارند كه راه يافتگانند. (37)تا آن گاه كه او [با دمسازش‏] به حضور ما آيد، [خطاب به شيطان‏] گويد: «اى كاش ميان من و تو، فاصله خاور و باختر بود، كه چه بد دمسازى هستى!» (38)(سوره زخرف)بگو: «پليد و پاك يكسان نيستند، هر چند كثرت پليد [ها] تو را به شگفت آوَرَد. پس اى خردمندان، از خدا پروا كنيد، باشد كه رستگار شويد.» (100)(سوره مائده(

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


  34. #17
    کاربر علاقه مند
    تاریخ عضویت
    Nov 2016
    نام
    حسین
    نوشته ها
    28
    تشکر
    37
    تشکر شده 24 بار در 12 پست

    پیش فرض

    سلام ممنون بابت پاسختون
    اون قسمت کلاک رو هم حواسم نبود بهش الان درستش کردم
    با این حساب برنامه درسته و فقط میمونه اتصالات
    من فقط 3 تا پین ارسال و دریافت و زمین رو وصل کردم. ایا نیازه همه پینهارو وصلشون کنم؟

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


  36. #18
    مدیر انجمن M.ABDOLLAHI آواتار ها
    تاریخ عضویت
    Dec 2008
    نام
    مهدی عبدالهی
    نوشته ها
    976
    تشکر
    1,567
    تشکر شده 2,677 بار در 667 پست

    پیش فرض

    نقل قول نوشته اصلی توسط ZoZi نمایش پست ها
    سلام ممنون بابت پاسختون
    اون قسمت کلاک رو هم حواسم نبود بهش الان درستش کردم
    با این حساب برنامه درسته و فقط میمونه اتصالات
    من فقط 3 تا پین ارسال و دریافت و زمین رو وصل کردم. ایا نیازه همه پینهارو وصلشون کنم؟
    سلام نه لازم نیست شما فقط پایه txd و gnd را هم وصل کنید کافیه باز هم میگم شما برنامتون را برطبق مثالی که من گذاشتم بنویسید و سعی کنید از فرمان printf استفاده کنید
    و هر كس از ياد [خداى‏] رحمان دل بگرداند، بر او شيطانى مى‏گماريم تا براى وى دمسازى باشد. (36)و مسلّماً آنها ايشان را از راه باز مى‏دارند و [آنها] مى‏پندارند كه راه يافتگانند. (37)تا آن گاه كه او [با دمسازش‏] به حضور ما آيد، [خطاب به شيطان‏] گويد: «اى كاش ميان من و تو، فاصله خاور و باختر بود، كه چه بد دمسازى هستى!» (38)(سوره زخرف)بگو: «پليد و پاك يكسان نيستند، هر چند كثرت پليد [ها] تو را به شگفت آوَرَد. پس اى خردمندان، از خدا پروا كنيد، باشد كه رستگار شويد.» (100)(سوره مائده(

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


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

    پیش فرض

    نقل قول نوشته اصلی توسط ZoZi نمایش پست ها
    سلام ممنون بابت پاسختون
    اون قسمت کلاک رو هم حواسم نبود بهش الان درستش کردم
    با این حساب برنامه درسته و فقط میمونه اتصالات
    من فقط 3 تا پین ارسال و دریافت و زمین رو وصل کردم. ایا نیازه همه پینهارو وصلشون کنم؟
    سلام
    دوست عزیز برنامه مشکلی نداره تست کردم درست کار میکنه
    قطعا مشکل شما باید از سخت افزارتون باشه
    ممکنه یکی از مشکلات زیر پیش اومده باشه:
    1- max232 معیوب باشه
    2- اگر اتصالاتتون روی برد بورد هست اتصالات مشکل داشته باشه
    3- ترکیب مقاومت و خازن های max232 رو خارج از رنج اصلی انتخاب کرده باشین
    4- باوود ریت ترمینالتون با میکرو یکی نباشه
    *** اللّهم عجّل لولیک الفرج ***

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


  40. #20
    مدیر انجمن M.ABDOLLAHI آواتار ها
    تاریخ عضویت
    Dec 2008
    نام
    مهدی عبدالهی
    نوشته ها
    976
    تشکر
    1,567
    تشکر شده 2,677 بار در 667 پست

    پیش فرض اموزش کار با چند کانال adc توسط نرم افزار cubemx

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


    دانلود مثال برنامه میکروکنترلر با نرم افزار keil و cubemx




    و هر كس از ياد [خداى‏] رحمان دل بگرداند، بر او شيطانى مى‏گماريم تا براى وى دمسازى باشد. (36)و مسلّماً آنها ايشان را از راه باز مى‏دارند و [آنها] مى‏پندارند كه راه يافتگانند. (37)تا آن گاه كه او [با دمسازش‏] به حضور ما آيد، [خطاب به شيطان‏] گويد: «اى كاش ميان من و تو، فاصله خاور و باختر بود، كه چه بد دمسازى هستى!» (38)(سوره زخرف)بگو: «پليد و پاك يكسان نيستند، هر چند كثرت پليد [ها] تو را به شگفت آوَرَد. پس اى خردمندان، از خدا پروا كنيد، باشد كه رستگار شويد.» (100)(سوره مائده(

  41. کاربران : 11 تشکر کرده اند از شما M.ABDOLLAHI برای ارسال این پست سودمند:


صفحه 1 از 5 12345 آخرینآخرین

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

  1. پاسخ: 11
    آخرين نوشته: 10-01-2019, 23:15
  2. پاسخ: 20
    آخرين نوشته: 28-11-2016, 21:10
  3. آموزش برنامه نویسی اندروید گام به گام همراه با فیلم آموزشی
    توسط ahmadigonabad در انجمن اندروید-برنامه نویسی و سخت افزار
    پاسخ: 0
    آخرين نوشته: 08-12-2015, 17:13
  4. [سوال] جزوه آموزشی برد آموزشی lpc1768
    توسط pooriya_nic18 در انجمن LPC series (NXP)
    پاسخ: 5
    آخرين نوشته: 07-12-2013, 14:49
  5. ثبت نام در مسابقات رباتیک وزارت آموزش و پرورش
    توسط elhghasemi در انجمن طراحی و ساخت و آزمایش مدارت الکترونیک
    پاسخ: 0
    آخرين نوشته: 03-08-2012, 21:14

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

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