جلسه دوازدهم _ نحوه راه اندازی واحد تایمر ونحوه انجام تنظیمات در محیط STM32CubeMX
تایمرها یکی از مهم ترین بخش های میکروکنترلرها می باشند که وظیفه محاسبه زمان و عملیات وابسته به آن را دارند. با استفاده از تایمرها می توان بدون ایجاد وقفه در برنامه عملیات زمان بندی را انجام داد در بسیار از موارد برای ایجاد زمان بین دو فرآیند از توابع تاخیر استفاده می کنیم که موجب می شود برنامه در تابع تاخیر به اندازه زمان مشخص شده متوقف شود که این خود می تواند مشکلی جدی را ایجاد کند و میکرو بجای پردازش و پاسخگویی باید در تابع تاخیر متوقف شود ولی با استفاده از تایمر ها می توانیم این توقف را از بین ببریم.
تایمر ها در واقع شمارنده هایی هستند که پالس های منظم وارد شده را می شمارند و با توجه به اینکه این پالس ها منظم و ثابت هستند این امر تایمر را قادر می سازد تا زمان های دقیق را تنظیم نماید. پالس های منظم وارد شده به این واحد هم می توانند بصورت داخلی یا کریستال خارجی تامین شوند که در این صورت واحد را تایمر می نامند و هم می توانند شمارش تعداد کلاک را از بیرون دریافت نمایند که در این حالت به عنوان کانتر شناخته می شوند.
در سری های مختلف STM تعداد و نحوه عملکرد تایمر ها مختلف هستند و تایمر ها بصورت تایمر های پیشرفته و تایمر های عمومی شناخته می شوند که واحد تایمر می تواند امکاناتی نظیر Input Capture , output Compare , PWM Generation و One-pulse را دارا می باشند که در ادامه آموزش ها هر کدام از این خصوصیت و امکانات را معرفی و برنامه ای را با استفاده از این امکانات می نویسیم. در تصویر زیر می توانید خصوصیت های مربوط به تایمر های موجود در میکروکنترلر STM32F103RCT6 را مشاهده نمایید.
همانگونه که در جدول مشخص شده است این میکرو دارای 8 واحد تایمر می باشدکه تمام آنها 16 بیتی می باشند.
فرکانس کلاک تایمرهای 2,3,4,5,6,7 از فرکانس PCLK1 که حداکثر فرکانس آن برابر با 36MHz می باشد و فرکانس تایمرهای 1 و 8 از فرکانس PCLK2 که حداکثر فرکانس آن که حداکثر فرکانس آن 72MHz می باشد، تامین می شوند. در تصویر زیر می توانید نحوه تامین کلاک برای تایمرها را مشاهده نمایید.
در ادامه قصد داریم تا نحوه انجام تنظیمات را برای راه اندازی یک تایمر در نرم افزار STM32CubeMX با هم بیاموزیم و بتوانیم یک زمان یک ثانیه را تولید نماییم. استفاده از تایمر در این حالت عمومی ترین نوع استفاده از تایمر می باشد. طبق جلسات قبل نرم افزار STM32CubeMX را اجرا می کنیم و پس از انتخاب نوع میکرو و انجام تنظیمات اولیه به سراغ انجام تنظیمات مربوط به تایمر می رویم. همانطور که مشاهده می کنیم و قبلا نیز عنوان شده بود این میکرو دارای 8 واحد تایمر می باشد.
در ادامه واحد تایمر مورد نظر خود را انتخاب می کنیم که در اینجا ما تایمر یک (TIM1) را انتخاب می کنیم و در قسمت تنظیمات مربوط به آن منبع کلاک تایمر را Internal Clock انتخاب می کنیم.
پس از آن برای رسیدن به زمان یک ثانیه با توجه به اینکه قصد داریم تا فرکانس این واحد را 8MHz انتخاب کنیم در بخش Prescaler ما در نظر داریم تا فرکانس ورودی را بر 8000 تقسیم کنیم تا فرکانس تایمر برای با 1000 هرتز گردد پس مقدار 7999 را در بخش Prescaler قرار می دهیم در ادامه با توجه به اینکه فرکانس تایمر برابر با 1000 هرتز شده است به این معناست که در هر ثانیه 1000 پالس به تایمر اعمال و تایمر آنها را می شمارد پس برای رسیدن به مقدار یک ثانیه کافیست مقدار شمارنده تایمر به 1000 برسد که در بخش Counter Period مقدار 999 را قرار می دهیم دلیل اینکه بجای عدد 1000 ما عدد 999 را قرار می دهیم این است که شمارش از صفر شروع می شود.
در ادامه می خواهیم هر بار که شمارنده تایمر به عدد مورد نظر رسید وقفه ای اتفاق بی افتد که برای اینکار باید اینتراپت مربوط به آن را فعال نمود. برای اینکار به قسمت NVIC Setting می رویم و در آن تیک عبارت TIM1 update interrupt را فعال می کنیم.
سپسبه تنظیم فرکانس واحدهای مورد نظر می پردازیم برای اینکار مانند جلسات قبل به سربرگ Clock Configuration می رویم و فرکانس APB2 timer را برابر 8MHz انتخاب می کنیم.
در این مرحله تنظیمات مربوط به تایمر به اتمام رسیده است و فقط برای تست عملکرد تایمر یک پایه از میکرو را به عنوان خروجی انتخاب می کنیم تا با هر بار رسیدن به زمان مورد نظر و وقوع وقفه این خروجی تغییر وضعیت دهد.
پس از اتمام تنظیمات می توانیم با انتخاب Generate Code پروژه مورد نظر خود را با تنظیمات اولیه آماده نماییم.
در جلسه بعد به نحوه برنامه نویسی در محیط keil برای راه اندازی تایمر می پردازیم.
دلتون شاد و لبتون پرخنده
محمد هادی دشتی
دیگر آموزش ها مرتبط با STM32:
برای مشاهده آموزش جلسه اول(معرفی هسته آرم و میکروکنترلرهای 32 بیتی شرکت ST ) کلیک کنید.
برای مشاهده آموزش جلسه دوم( معرفی نرم افزارهای مورد نیازجهت برنامه نویسی و پروگرام ) کلیک کنید.
برای مشاهده آموزش جلسه سوم( نحوه دانلود آخرین نسخه از نرم افزار STM32CubeMX ) کلیک کنید.
برای مشاهده آموزش جلسه چهارم(نحوه انجام تنظیمات در نرم افزار STM32CubeMX ) کلیک کنید.
برای مشاهده آموزش جلسه پنجم(نحوه برنامه نویسی پروژه چشمک زن با نرم افزار Keil ) کلیک کنید.
برای مشاهده آموزش جلسه ششم(نحوه تولید کد و تنظیمات در محیط STM32CubeMX و برنامه نویسی در محیط Keil برای راه اندازی کلید) کلیک کنید.
برای مشاهده آموزش جلسه هفتم(معرفی نرم افزار STM32 Flash Loader Demonstrator و نحوه دانلود برنامه و پروگرام کردن میکرو) کلیک کنید.
برای مشاهده آموزش جلسه هشتم( نحوه راه اندازی ال سی دی کاراکتری-قسمت اول) کلیک کنید.
برای مشاهده آموزش جلسه نهم( نحوه راه اندازی ال سی دی کاراکتری و آشنایی با دستورات کاربردی کتابخانه ال سی دی کاراکتری ) کلیک کنید.
برای مشاهده آموزش جلسه دهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد ADC(بخش اول) ) کلیک کنید.
برای مشاهده آموزش جلسه یازدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد ADC(بخش دوم) ) کلیک کنید.