پیاده‌سازی کتابخانه ۴۱-STDIO برای stm32f4

DSC_0177

پس از آنکه آموزش استفاده از printf را برای stm32f4 قرار دادیم. به این نتیجه رسیدیم که یک کتابخانه برای printf و تابع های دیگری که اطلاعات را خروجی میگیرند بنویسیم. این کتابخانه به شما اجازه میدهد تا به صورت ساده از خروجی های نامحدودی از استریم ها بهره ببرید. ولی فقط یکی از آن‌ها را میتوان برای استفاده با prinft استفاده کرد. و بقیه آن‌ها را در نهایت میتوانید با تابعی مثل fprintf استفاده کنید.

کتابخانه

ویژگی‌ها :

خروجی رشته‌ها با printf و دیگر تابع ها مانند fprintf

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

استریم های نامحدود برای خروجی میتوان استفاده کرد

پشتیبانی از خواندن با ورودی استاندارد stdin به صورت استریم یا …

نیازمندی ها :

cmsis

stm32f4xx

tm

defines.h

attributes.h

فرمت خروجی :

با توجه به کتابخانه stdio مخصوصARM شما میتوانید printf یا هر تابع خروجی استریمی را استفاده کنید. انواع این خروجی های ممکن در سایت رسمی ARM آمده است

Printf format

printf

تابع اصلی این قسمت همین printf است . با صدا کردن آن میتوانید رشته خود را استریم کرده و آن را به خروجی دلخواه خود ارسال کنید. این خروجی میتواند usart یا lcd باشد. ولی با printf فقط میتوانید یک استریم خروجی داشته باشید. بزارید آن را usart1 بنامیم. حال اگر بخواهیم خروجی را روی lcd نیز نمایش دهید شما نیاز به یک روش دیگر برای انجام آن دارید مانند استفاده از fprintf . در این قسمت به شما یاد میدهم که چطور از printf با کتابخانه من استفاده کنید.

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

حال اگر میخواهید اطلاعات را با printf بر روی usart1 خروجی بگیرید نیاز به بارگذاری آن در یک جایگاه اصلی دارید . سپس نیاز دارید تا تابعی مانند زیر بنویسید

حال شما میتوانید pprintf را در هرجایی که بخواهید استفاده کنید.

استریم های خروجی بیشتر

اگر شما میخواهید رشته‌های بیشتری را برای خروجی استریم کنید باید آن‌ها را تکه‌تکه کنید و سپس باید بدانید که هر استریم را روی کجا خروجی بدهید . این کار را میتوانید با fprintf و vfpintf انجام دهید. اولین آرگومان این تابع همان نشانگر خروجی استریم است پس وقتی شما از تابع خروجی استریم استفاده میکنید شما میدانید که کدام استریم را میخواهید خروجی بگیرید.

برای اینکار من چند چیز به کتابخانه ام اضافه کرده‌ام . ابتدا نیاز داریم تا متغیر هایی را که با هم تا حد امکان متفاوت هستند ایجاد کنیم. اگر میخواهید خروجی را برای usrat یا lcd استفاده کنیدمیتوانید از همان دستور printf استفاده کنید و یک روش دیگر نیز برای خروجی lcd وجود دارد.

ابتدا یک متغیر بسازید

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

اما استریم هنوز نمیداند که کدام تابع را صدا کند و شما باید این را بگویید پس کد زیر آن را برایمان انجام خواهد داد

استریم ورودی

شما همچنین قادرید تا اطلاعات را از یک استریم دریافت کنید. برای اینکار ما دوباره یک تابع استاندارد با نام stdin داریم و همچنین میتوانیم توابعی با نام های مشابه نیز برای قابلیت‌های دلخواه ایجاد کنیم. برای اجرای stdin نیاز به نوشت کد زیر دارید :

حال با صدا زدن تابع fget میتوانید رشته را از استریم دریافت کنید.

برای استریم های کاستوم نیز مانند استریم usart6 شما باید ابتدا یک تابع کاستوم ایجاد کنید تا اطلاعات ورودی استریم usrat6 را مدیریت کند. میتوانید به آن هر اسمی بدهید ولی ساختار آن باید درست باشد

و شما نیاز به لینک کرددن تابع ورودی با یک استریم دارید در ابتدای main باید چنین کدی را اضافه کنید.

تمام شد؛ حالا میتوانید از تابع استاندارد ورودی نیز استفاده کنید

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

مثال :

در این مثال اطلاعات در ۳ کانال usart پخش خواهند شد :

TM STM32F4 STDIO Library

موفق باشید 

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *