خب با تاخیری طولانی بریم سراغ آموزش آرم stm32f103 جلسه ۵ کانفیگ اولیه تایمر ؛ اولا از همه دنبال کننده ها عذر خواهی میکنم چون بدلیل کمبود وقت نتونستم جلسه ۵ رو طبق برنامه جلو ببرم.
آموزش آرم stm32f103 جلسه ۵ کانفیگ اولیه تایمر
خب میریم سراغ کانفیگ یک سری تایمری که رو این سری از میکروکنترلر ها هستش به اسم SysTick این تایمر توسط خود ارم ارایه شده و از تایمر سایر قسمت های میکرو کنترلر جدا هست و کاربردش دقیقا اینجاست که برای تنظیم زمان ها توی سیستم عامل ازش استفاده میشه
حالا ما ی جور دیگه هم ازش استفاده میکنیم
این تایمر هیچ ایشنال خاصی لازم نداره فقط باید یک فرکانس کاری رو برای اون تعریف کنیم و وقفه اون رو پیکر بندی کنیم به همین سادگی راه اندازی میشه
برای تنظیم کلاک تایمر یک تابعی داریم توی spl به این اسم :
1 |
SysTick_Config(); |
این تابع میاد یک ورودی میگیره و اون رو به عنوان کلاک روی تایمر ست میکنه حالا من باید این رو کانفیگ کنم و به ورودی این تابع عدد بدم؛ برای زمان ۱ میلی ثانیه ( پریود ۱ میلی ثانیه ( اینجوری مینویسم که :
1 |
SysTick_Config(72000); |
خب حالا باید یک وقفه برای این تایمر در نظر بگیریم که تابع وقفه این تایمر هم اماده هست فقط کافیه کپی و پیست کنیم؛ اینم تابع وقفه این تایمر :
1 2 |
void SysTick_Handler(void){ } |
خب به همین سادگی این تایمر راه اندازی شد حالا این تایمر هر ۱ میلی ثانیه تابع SysTick_Handler رو اجرا میکنه
اینم دانلود کل پروژه و کارایی که تا اینجای اموزش انجام دادیم.
خب انشالله سری بعد اموزش میریم سراغ ساختن دستورات تاخیری دقیق با همین تایمر یعنی توابع delay که جلسات قبل نوشتیم زمان دقیقی رو ارایه نمیکردن و همش تقریبی بود رو دستکاری کنیم و به کمک این تایمر دیلای های دقیق رو بسازیم.
منو هم تو نماز هاتون دعا کنید
با نظراتتون منو کمک کنید ( بتونم فیدبک عملی بگیرم از اموزش )
متشکرم
مهمان
ببخشید من با تایمر systick یه تابع تاخیر delay ساختم که تو برنامه اصلی ازش استفاده کردم. این تابع تاخیر رزوشن های ۱میکرو ثانیه، ۱ میلی ثانیه و ۱ ثانیه رو داره.
حالا مشکلم اینه که واسه ساختن یک ثانیه با تایمر systick وقتی موقع کانفیگ کردن با دستور SysTick_Config عدد ۷۲۰۰۰۰۰۰ رو بهش میدم کار نمیکنه. ولی برای بقیه موردا میلی ثانیه و میکروثانیه کار میکنه. میخواستم دلیلشو بدونم.
ممنون میشم راهنماییم کنید
نویسنده این مطلب
چون اون مقدار مقدار ماکزیمم تایمر بیشتره برای اینکار شما میتونید تایمر روی ۱ میلی ثانیه ایببندید و بعدا توی وقفه تایمر با مقایسه اضافه کردن به یک متغیر و مقایسه اون متغیر با مقداری که لازم دارید در قالب یک شرط هر مضربی از میلی ثانیه رو که نیاز دارید برای خودتون به صورت نرم فازاری بسازید
مهمان
سلام
الان از systick کجا استفاده کنم؟داخل main.c برای تاخیر بنویسم
systick(1000);
الان این تاخیر یه ثانیست؟
مهمان
ضمن تشکر چندین باره ، مطلبی وجود داره که میخواستم بگم و نظرتونو بدونم. قبلش هم اینو بگم که من در arm صفر صفر صفر هستم. میخوام بدونم وقتی کامپایلر های iar و keil وجود داره چرا باید با این کامپایلر arm رو یاد بگیریم؟ فکر میکنم این سوال اساسی هست . قصدم از این سوال ایرادگیری نیست ، دنبال دلیلش هستم میدونید چرا؟ فرض کنید شما بعد از تلاش زیاد تونستید به این کامپایلر و توابعش مسلط بشید . خب اگر بدلیل گسترده نبودن و عمومی نبودن این کامپایلر بعدا” این سوال پیش بیاد که خب چرا از اول چیز عمومی تری( مثلا” keil ) یاد نگرفتم ؟ چرا ؟ چون بیشتر برنامه ها و فروم ها در مورد این کامپایلر صحبت میکنن. آدم های باتجربه بیشتری هم وجود داره که میتونی ازشون کم بگیری و یا حتی به دیگران یاد بدی.
باز هم ازت تشکر میکنم بخاطر وقتی که برای آموزش میگذاری. من برای نوشتن همین چند خط که تازه سوالمم هست به خودم فشار اوردم !! اونوقت شما وقت میذاری با این همه دردسر مطلب مینویسی . کسی درک نکنه من یکی میدونم چقدر شما زحمت میکشی . مرسی
مدیر سایت
سلام.والا کامپایلری(نرم افزاری) به نام آرم من نشنیدم
کیل و iar رو شنیدم
من خودم کیل کار میکنم.و از توابع اماده کیل استفاده نمیکنم و با رجیستر ها کار میکنم.لذا وقتی بخوام برم سمت iar زیاد اضیت نمیشم چون فقط باید نام رجیسترها رو تغیر بدم و کار خاصی انجام نمیدم.
لذا چون ما با رجیسترها کار میکنیم تغیر دادن کامپایلر برامون زیاد سخت نیست
مهمان
منظور من از اون جمله فقط با قرار ندادن یک “،” تغییر کرد. درستش اینه: ” چرا باید با این کامپایلر ( embitz ) ، arm رو یاد بگیریم؟ ”
آقا مهدی عزیز من الان یه کم سرچ کردم و فرق ادیتور و کامپایلر رو کمی متوجه شدم( ما که عرض کردیم صفریم!! ) من تا الان با کدویژن یه کارایی میکردم راستش نمیدونم ادیتورش کدوم بود !!
سوال: آیا keil و IAR هم ادیتور جداگانه ای دارن؟
میشه یه اطلاعات کلی در مورد این موضوعات مقدماتی و ابتدایی در اختیار ما بذاری؟ تو سایتا چیز زیادی ندیدم ولی تا دلتون بخواد مطلب کپی شده از همدیگه هست!
نویسنده این مطلب
در بی نظیر بودن iar شکی نیست اما وقتی یکم باهاش کار کنید متوجه میشید محیطی مثل نوت پد ویندوز داره
برای کیل هم کرک شده هستش
به صورت کلی به نظر بنده embitz چنتا ویژگی بزرگ داره یکی کم حجمه دوم اینکه رایگانه و سوم اینکه gcc هست ولی در کل این انتخاب ها سلیقه ای هست و هر کسی میتونه بر اساس سلیقش انتهخاب کنه و من اینو انتخاب کردم باهاش هم مشکلی نداشتم تا حالا که بخوام سراغ چیز دیگه برم
مهمان
سلام، دستت درد نکنه خیلی خوب بود،
راستی الان امکان برنامه نویسی میکرو stm32 با نرم افزار simulink و matlab هم هست داخل خود سایتش برین و نرم افزار st mat رو سرچ کنین
مهمان
سلام
عالی بود دوست عزیز
منتظر اموزش های بعدی شما هستیم
سپاس گذارم پیشاپیش
نویسنده این مطلب
تقریبا نوشته شده و به زودی تمام میشه
مهمان
فدات
محمد عزیزی