قسمت هشتم – LED چشمک زن

حبیب نصراصفهانی دیدگاه ها 0 سپتامبر 18, 2019

اولین پروژه‌ای که برای هر نرم‌افزار جدید انجام می‌شود، برنامه LED چشمک‌زن است. در آموزش میکروکنترلر STM8 نیز همین کار را انجام می‌دهیم. تابع خروجی را با ساختن یک LED چشمک‌زن تست می‌کنیم.

LED را توسط یک مقاومت 220 اهم به پایه PD4 متصل نمایید.

#include "stm8s.h"

/******************************************************************************/
void CLK_Config(void)
{
    CLK_DeInit();
    CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
    CLK_CCOConfig(CLK_OUTPUT_MASTER);
}




/******************************************************************************/
void delay(unsigned int delay)
{
  int counter = 0;
  for(counter = 0; counter < delay*10; counter++)
  {
  };
}



/******************************************************************************/
void mainLed(BitStatus enable)
{
  if(enable)
  {
     GPIO_WriteLow(GPIOD, GPIO_PIN_4);
  }
    else
    {
     GPIO_WriteHigh(GPIOD, GPIO_PIN_4);
    }
}


/******************************************************************************/
int main( void )
{
  CLK_Config();
  GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_FAST);
  while(1)
  {
    mainLed(SET);
    delay(50000);
    mainLed(RESET);
    delay(50000);
  }
}



/******************************************************************************/
#ifdef USE_FULL_ASSERT

/**
  * @brief  Reports the name of the source file and the source line number
  *   where the assert_param error has occurred.
  * @param file: pointer to the source file name
  * @param line: assert_param error line source number
  * @retval : None
  */
void assert_failed(u8* file, u32 line)
{ 
  /* User can add his own implementation to report the file name and line number,
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

  /* Infinite loop */
  while (1)
  {
  }
}
#endif

حال به توضیح کدهای بالا می پردازم.

#include "stm8s.h"

این کدیک سری از توابع عمومی که نیاز داریم را اضافه می کند که حتما باید این تابع کتابخانه ای اول برنامه اضافه گردد.

/******************************************************************************/
void CLK_Config(void)
{
    CLK_DeInit();
    CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
    CLK_CCOConfig(CLK_OUTPUT_MASTER);
}

کد بالا تنظیمات مربوط به کلاک می باشد که در بحث های بعدی توضیح داده می شود.

void delay(unsigned int delay)
{
  int counter = 0;
  for(counter = 0; counter < delay*10; counter++)
  {
  };
}

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

/******************************************************************************/
void mainLed(BitStatus enable)
{
  if(enable)
  {
     GPIO_WriteLow(GPIOD, GPIO_PIN_4);
  }
    else
    {
     GPIO_WriteHigh(GPIOD, GPIO_PIN_4);
    }
}

این تابع زمانی که مقدارآن یک باشد PD.4 را یک و زمانی که صفر باشد PD.4 را صفر می کند.این عمل به تبع باعث روشن و خاموش شدن LED متصل به آن می گردد.

/******************************************************************************/
int main( void )
{
  CLK_Config();
  GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_FAST);
  while(1)
  {
    mainLed(SET);
    delay(50000);
    mainLed(RESET);
    delay(50000);
  }
}

قسمت بالا بدنه اصلی تابع ما می باشد که درابتدا تابع ()CLK_Config جهت تنظیمات کلاک فراخوانی شده و سپس PD.4 پیکر بندی و بعنوان خروجی در نظر گرفته شده است.در while که حلقه تکرار بینهات است ابتدا LED توسط دستور mainLed(SET) روش شده سپس به اندازه 5 ثانیه توسط تابع delay(50000)صبر کرده سپس توسط تابعmainLed(RESET)خاموش می گردد.

حال پس از اتصال پروگرامر به STM8S فلش سبز رنگ را زده و میکرو را پروگرام کنید.

دانلود برنامه LED چشمک زن

0 دیدگاه ها

پاسخی بگذارید