اموزش راه اندازی LED

سخت افزار

برای تست این برنامه می­توانید از چهارLED  که بر روی  برد آموزشی قرار دارد، استفاده کنید. شماره­ی پین­هایی که می­توانید استفاده کنید، در تصویر زیر نشان داده شده است.

آشنایی و کار با برنامه

ابتدا برنامه را با نرم افزار Keil باز کنید.

 

تغذیه 5 ولت را به برد آموزشی متصل کنید و بعد از اینکه پروگرامر ST-LINK را به برد متصل نمودید؛ برنامه را با استفاده از دکمه­ی Download    پروگرم نمائید.

توضیحات مربوط به برنامه

ابتدا استراکچری، مربوط به تنظیمات اولیه پین­های ورودی و خروجی تعریف شده است.

#include "stm32f10x_gpio.h"
#include "bsp.h"
#include "delay.h"
 
GPIO_InitTypeDef GPIO_InitStructure;
 
voidsetAllLed(void);
voidresetAllLed(void);

سپس در تابع main  برنامه تنظیمات مربوط به کلاک GPIO  وخود GPIO انجام شده است.

intmain(void)
{
    
  delay_intial();
/************* Configure the clock and GPIO ******************* */
    /* ALL LED Port Periph clock enable */
  RCC_APB2PeriphClockCmd(LED1_GPIO_CLK | LED2_GPIO_CLK |
                         LED3_GPIO_CLK | LED4_GPIO_CLK, ENABLE);
 
  /* Configure LED1 in output pushpull mode */
  GPIO_InitStructure.GPIO_Pin = LED1_PIN;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure);
    
     /* Configure LED2 in output pushpull mode */
  GPIO_InitStructure.GPIO_Pin = LED2_PIN;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStructure);
 
     /* Configure LED3 in output pushpull mode */
  GPIO_InitStructure.GPIO_Pin = LED3_PIN;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(LED3_GPIO_PORT, &GPIO_InitStructure);
    
         /* Configure LED4 in output pushpull mode */
  GPIO_InitStructure.GPIO_Pin = LED4_PIN;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

و در ادامه توابع و دستورا ت مربوط به روشن و خاموش کردن led با استفاده از توابع cmsis  قرار دارد .

    GPIO_SetBits(LED1_GPIO_PORT,LED1_PIN);
    delayMs(200);  
    GPIO_SetBits(LED2_GPIO_PORT,LED2_PIN);
    delayMs(200);  
    GPIO_SetBits(LED3_GPIO_PORT,LED3_PIN);
    delayMs(200);  
    GPIO_SetBits(LED4_GPIO_PORT,LED4_PIN);
    delayMs(200);  
    
    resetAllLed();
    delayMs(200);  
    
    GPIO_SetBits(LED4_GPIO_PORT,LED4_PIN);
    delayMs(200);          
    GPIO_SetBits(LED3_GPIO_PORT,LED3_PIN);
    delayMs(200);  
    GPIO_SetBits(LED2_GPIO_PORT,LED2_PIN);
    delayMs(200);  
    GPIO_SetBits(LED1_GPIO_PORT,LED1_PIN);
    delayMs(200);  
    while(1)
    {  
        setAllLed();   
       delayMs(200);   
        resetAllLed();
       delayMs(200);   
    }  
/**
  * @brief  This function sets and resets all leds.
  * @param  None
  * @retval None
  */
voidsetAllLed(void)
{
    GPIO_SetBits(LED1_GPIO_PORT,LED1_PIN);
    GPIO_SetBits(LED2_GPIO_PORT,LED2_PIN);
    GPIO_SetBits(LED3_GPIO_PORT,LED3_PIN);
    GPIO_SetBits(LED4_GPIO_PORT,LED4_PIN);
}

voidresetAllLed(void)
{
    GPIO_ResetBits(LED1_GPIO_PORT,LED1_PIN);
    GPIO_ResetBits(LED2_GPIO_PORT,LED2_PIN);
    GPIO_ResetBits(LED3_GPIO_PORT,LED3_PIN);
    GPIO_ResetBits(LED4_GPIO_PORT,LED4_PIN);
}

 

دانلود مثال ها و pdf این مقاله



Tags: , , ,