در قسمتهای قبل آموزش میکروکنترلر STM8 برنامهنویسی و پروگرامکردن میکروکنترلر STM8 را به همراهانش آموزش دادیم. در این مقاله قصد دارد از این آموزشها بهصورت عملی استفادهکنیم تا شما نتیجه یادگیرهای خود را بهصورت یک LED چشمکزن مشاهده نمایید.
اولین پروژهای که برای هر نرمافزار جدید انجام میشود، برنامه LED چشمکزن است. در آموزش میکروکنترلر STM8 نیز همینکار را انجام میدهیم. تابع خروجی را با ساختن یک LED چشمکزن تست میکنیم. شماتیک برد Disco را مشاهدهکنید و پینهایی که به LED ها متصل میشوند را بررسیکنید.
همچنین میتوانید از STM8CubeMX نیز استفادهکنید.
در زیر بلوک دیاگرام داخلی پینهای GPIO نشانداده شدهاست:
از آنجاکه هر I/O بهطور مستقل قابلیتتنظیم دارد و گزینههای بسیاری با آن مرتبط است، بلوکزیر در نگاه اول پیچیده بهنظر میرسد. گزینههای مختلف هر I/O را میتوانید در جدولزیر مشاهدهکنید:
در زیر توابع SPL مرتبط با ماژول GPIO نمایشداده شدهاست.
کدزیر را مشاهدهکنید. این کد بدون دسترسی به رجیسترهای سنتی نوشتهشدهاست. در اینجا همهچیز یک نامگذاری معنادار دارد، درست مانند نامگذاری در کتابچه راهنمای مرجع. با این وجود درک کد ساده است.
اتصالات سخت افزاری
کد نمونه LED چشمکزن
#include "STM8S.h" void main (void) { int i; GPIO_DeInit(GPIOD); GPIO_DeInit(GPIOC); GPIO_Init(GPIOC, GPIO_PIN_3 , GPIO_MODE_OUT_PP_LOW_FAST); GPIO_Init(GPIOD, GPIO_PIN_3 , GPIO_MODE_OUT_PP_LOW_FAST); for(;;) { GPIO_WriteReverse(GPIOC,GPIO_PIN_3); GPIO_WriteReverse(GPIOD,GPIO_PIN_3); for(i=0;i<10000;i++) ; } }
توضیح
خطوط زیر پیکربندی GPIO هایی که در کد مورداستفاده قرارگرفتهاند را نشان میدهند. هربار که برای اولینبار سختافزاری را مجدداً تنظیم یا راهاندازی میکنید، قبلاز استفاده آن باید آنرا پیکربندی کنید. گرچه این کار اجباری نیست، اما احتمال خطا در تنظیمات را حذف میکند.
GPIO_DeInit(GPIOD); GPIO_DeInit(GPIOC);
پساز پیکربندی، میتوان تنظیمات GPIO ها را انجام داد. ورودیها میتوانند دارای مقاومت داخلی یا بدون مقاومت داخلی باشند. خروجیها میتوانند نوع Push_Pull Totem_pole و یا نوع تخلیه باز باشد. هر پین میتواند بهطور جداگانه پیکربندی شود و هیچ وابستگی به دیگر پینها ندارد. در این کد GPIO PD3 به عنوان یک خروجی Push_Pull سریع تعریفشدهاست.
GPIO_Init(GPIOC, GPIO_PIN_3 , GPIO_MODE_OUT_PP_LOW_FAST); GPIO_Init(GPIOD, GPIO_PIN_3 , GPIO_MODE_OUT_PP_LOW_FAST);
بخش باقیمانده از کد در حلقه اصلی، بهصورتزیر است:
for(;;) { GPIO_WriteReverse(GPIOC,GPIO_PIN_3); GPIO_WriteReverse(GPIOD,GPIO_PIN_3); for(i=0;i<10000;i++) ; }
در قسمت هشتم آموزش میکروکنترلر STM8 کلاک داخلی سیستم را آموزش خواهیم داد.با ما همراه باشید.
منبع: سیسوگ