آموزش جامع کتابخانه hal و کار با نرم افزار cubemx
بسمه تعالی
سلام به همه دوستان با توجه اینکه چند سالی است که برنامه نویسی و طراحی مدارات میکروکنترلری با میکروهای ARM سری STM32 در کشورهای بالاخص صنعتی باب شده و چند مدتی هم هست که کتابخانه HAL و نرم افزار CUBEMX به هدف سهولت برنامه نویسی برای این سری میکرو ها عرضه شده تصمیمم بر این شد که با توجه به نیاز شغلی که داشتم و باید تا جای ممکن روی این میکروها تحقیق و بررسی میکردم سعی من بر این شد که کتابخانه HAL و نرمافزار CUBEMX بخصوص از ویدئو های اموزشی سایت یوتیوب فرا بگیرم و نتایج انرا در اینجا برای شما دوستان عزیزم قرار بدم سیستم اموزشی به این ترتیب است که من و بعضی دوستان دیگه مثل اقا سجاد بعضا ویدئو های اموزشی خودمان و یا بیشتر یوتیوب را برای شما اپلود میکنیم و در کنارش هم فایل های مربوطه از جمله پروژه کیل یا IAR و البته فایل برنامه CUBEMX را در اختیارتان میگذاریم برای شروع تصمیم گرفتم مبحث نیمه تمام USB HID و اتصال ان به نرم افزاری که با ویژوال استو دیو نوشته شده را قرار بدم رفیق عزیزم اقا سجاد عزیز قبلا مبحثی را در این مورد قرار داده بودند ولی مشکل اینجا بود که DLL که ایشان برای نرمافزار ویژوال استودیو استفاده کرده بودند فقط در ویندوز 8 و 10 جواب میداد ولیکن من برای شما یک DLL جدید قرار دادم که میتوانید برنامه ویژوال استو دیو را در هر سیستم عاملی و حتی با دات نیم فریم ورک 2 اجرا کنید برنامه میکروکنترلر را هم با سری cortexm3 نوشتم که ارزان باشه و در دسترس همه دوستان در پایان هم لینک دانلود برنامه میکرو و cubemx و برنامه ویژوال استودیو بزبان vb.net قرار داده میشه به همراه چند عکس مخصوص این پروژه که توضیحات درش قرار داده شده در ضمن ویدئو که قرار داده شده همان ویدئو اموزشی موجود در سایت یوتیوب است منتظر قستهای بعدی اموزش باشید یا علی مدد التماس دعا
آموزش استفاده از رابط 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 قرار دهیم فرمان یکبار اجرا میشودو برای دفعات بعدی احتیاج به تحریک دوباره دارد:125:
اموزش کار با قسمت 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 به کامپایلر معرفی میکنیم تا در کامپایل کردن برنامه به خطا برنخوریم و اصولا این یک قانون در برنامه نویسی است و ما باید در تمام توابع انرا رعایت کنیم
اموزش کار با sd کارت و fatfs در نرم افزار cubemx
سلام دوستان قصد دارم اموزش کار با SD کارت و FATFS کتابخانه فت در نرم افزار CUBEMX را قرار بدم خیلی کار اسونی هست در برنامه ای که گذاشتم شما میتونید یک فایل TXT را ایجاد کنید و داخلش متن بنویسید و یا متن نوشته شده داخل فایل TXT را بخونید در ضمن فیلم و عکسهای راهنما را هم ببنید تا متوجه تنظیمات بشید من خودم برنامه را با میکرو STM32F407ZGT6 نوشتم و کامل تست کردم خوب جواب میده هم بصورت چهار بیتی امتحان کردم و هم بصورت 1 بیتی خیلی راحت میتونید با CUBEMX این قضیه را تعیین کنید در ضمن در ادامه یک فایل اموزشی هم برای اشنایی شما بچه های خوب با توابع کتابخانه فت قرار میدم برای جلسه بعد هم ان شاء لله تصمیم دارم اموزش کار با کتابخانه فت اینبار با فلش USB را قرار بدم که اون هم کار خیلی اسون و لذت بخشیه
[Dear Guest/Member you can't see link before replyclick here to register]
[Dear Guest/Member you can't see link before replyclick here to register]
اموزش کار با فلش usb و fatfs در نرم افزار cubemx
سلام دوستان امشب قصد دارم اموزش ارتباط میکرو با flash usb با استفاده از کتابخانه فت را اموزش بدیم فیلم اموزشی را حتما ببنید چون جزئیات تغییرات بعد از خروجی گرفتن از cubemx زیاد است فایل پروژه را هم براتون گذاشتم منتها من خودم برنامه را با stm32f407zgt6 نوشتم اموزش کتابخانه فت را هم که قبلا گذاشتم خودتون تحلیل کنید
[Dear Guest/Member you can't see link before replyclick here to register]
اموزش کار با چند کانال adc توسط نرم افزار cubemx
سلام دوستان اول از همه جا داره مناسبتهای شهادت ائمه اطهار را به همه شیعیان امیرالمومنین تسلیت عرض کنم دوم از اون امشب تصمیم گرفتم اموزش کار با چند ورودی انالوگ به دیجیتال در یک برنامه را اموزش بدم برای این مورد نرمافزار CUBEMX اتکانات بسیار جالبی قرار داده ولیکن برای اینکه متوجه بشید چطور میشه اون را به کار گرفت حتما باید فیلم را ببنید فقط چند نکته را باید تذکر بدم یکی اینکه شما میتونید پایه های انالوگ را بصورت گروهی به دو شکل بخونید یکی از REGULAR یا معمولی خودمون یا از طریق روش INJECTED یا همون تزریقی فرق این دو هم با هم این است که شما در مد تزریقی میتونید افست تعیین کنید که اینجا بکار ما نمیاد نکته دوم اینکه این فیلمی که میگذارم طرف با ای سی دی اطلاعات را نمایش میده ولی من اطلاعات را طبق معمول با رابط سریال و برحسب میلی ولت نمایش میدم بهر ترتیب سعی کنید خودتون هم کار کنید تا بیشتر با جزئیات این مبحث اشنا باشید یا علی
[Dear Guest/Member you can't see link before replyclick here to register]