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

سخت افزار

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

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

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

 

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

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

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

[pastacode lang=”cpp” manual=”%23include%20%22stm32f10x_gpio.h%22%0A%23include%20%22bsp.h%22%0A%23include%20%22delay.h%22%0A%20%0AGPIO_InitTypeDef%20GPIO_InitStructure%3B%0A%20%0AvoidsetAllLed(void)%3B%0AvoidresetAllLed(void)%3B” message=”” highlight=”” provider=”manual”/]

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

[pastacode lang=”cpp” manual=”intmain(void)%0A%7B%0A%20%20%20%20%0A%20%20delay_intial()%3B%0A%2F*************%20Configure%20the%20clock%20and%20GPIO%20*******************%20*%2F%0A%20%20%20%20%2F*%20ALL%20LED%20Port%20Periph%20clock%20enable%20*%2F%0A%20%20RCC_APB2PeriphClockCmd(LED1_GPIO_CLK%20%7C%20LED2_GPIO_CLK%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20LED3_GPIO_CLK%20%7C%20LED4_GPIO_CLK%2C%20ENABLE)%3B%0A%20%0A%20%20%2F*%20Configure%20LED1%20in%20output%20pushpull%20mode%20*%2F%0A%20%20GPIO_InitStructure.GPIO_Pin%20%3D%20LED1_PIN%3B%0A%20%20GPIO_InitStructure.GPIO_Speed%20%3D%20GPIO_Speed_50MHz%3B%0A%20%20GPIO_InitStructure.GPIO_Mode%20%3D%20GPIO_Mode_Out_PP%3B%0A%20%20GPIO_Init(LED1_GPIO_PORT%2C%20%26GPIO_InitStructure)%3B%0A%20%20%20%20%0A%20%20%20%20%20%2F*%20Configure%20LED2%20in%20output%20pushpull%20mode%20*%2F%0A%20%20GPIO_InitStructure.GPIO_Pin%20%3D%20LED2_PIN%3B%0A%20%20GPIO_InitStructure.GPIO_Speed%20%3D%20GPIO_Speed_50MHz%3B%0A%20%20GPIO_InitStructure.GPIO_Mode%20%3D%20GPIO_Mode_Out_PP%3B%0A%20%20GPIO_Init(LED2_GPIO_PORT%2C%20%26GPIO_InitStructure)%3B%0A%20%0A%20%20%20%20%20%2F*%20Configure%20LED3%20in%20output%20pushpull%20mode%20*%2F%0A%20%20GPIO_InitStructure.GPIO_Pin%20%3D%20LED3_PIN%3B%0A%20%20GPIO_InitStructure.GPIO_Speed%20%3D%20GPIO_Speed_50MHz%3B%0A%20%20GPIO_InitStructure.GPIO_Mode%20%3D%20GPIO_Mode_Out_PP%3B%0A%20%20GPIO_Init(LED3_GPIO_PORT%2C%20%26GPIO_InitStructure)%3B%0A%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%2F*%20Configure%20LED4%20in%20output%20pushpull%20mode%20*%2F%0A%20%20GPIO_InitStructure.GPIO_Pin%20%3D%20LED4_PIN%3B%0A%20%20GPIO_InitStructure.GPIO_Speed%20%3D%20GPIO_Speed_50MHz%3B%0A%20%20GPIO_InitStructure.GPIO_Mode%20%3D%20GPIO_Mode_Out_PP%3B” message=”” highlight=”” provider=”manual”/]

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

[pastacode lang=”cpp” manual=”%20%20%20%20GPIO_SetBits(LED1_GPIO_PORT%2CLED1_PIN)%3B%0A%20%20%20%20delayMs(200)%3B%20%20%0A%20%20%20%20GPIO_SetBits(LED2_GPIO_PORT%2CLED2_PIN)%3B%0A%20%20%20%20delayMs(200)%3B%20%20%0A%20%20%20%20GPIO_SetBits(LED3_GPIO_PORT%2CLED3_PIN)%3B%0A%20%20%20%20delayMs(200)%3B%20%20%0A%20%20%20%20GPIO_SetBits(LED4_GPIO_PORT%2CLED4_PIN)%3B%0A%20%20%20%20delayMs(200)%3B%20%20%0A%20%20%20%20%0A%20%20%20%20resetAllLed()%3B%0A%20%20%20%20delayMs(200)%3B%20%20%0A%20%20%20%20%0A%20%20%20%20GPIO_SetBits(LED4_GPIO_PORT%2CLED4_PIN)%3B%0A%20%20%20%20delayMs(200)%3B%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20GPIO_SetBits(LED3_GPIO_PORT%2CLED3_PIN)%3B%0A%20%20%20%20delayMs(200)%3B%20%20%0A%20%20%20%20GPIO_SetBits(LED2_GPIO_PORT%2CLED2_PIN)%3B%0A%20%20%20%20delayMs(200)%3B%20%20%0A%20%20%20%20GPIO_SetBits(LED1_GPIO_PORT%2CLED1_PIN)%3B%0A%20%20%20%20delayMs(200)%3B%20%20%0A%20%20%20%20while(1)%0A%20%20%20%20%7B%20%20%0A%20%20%20%20%20%20%20%20setAllLed()%3B%20%20%20%0A%20%20%20%20%20%20%20delayMs(200)%3B%20%20%20%0A%20%20%20%20%20%20%20%20resetAllLed()%3B%0A%20%20%20%20%20%20%20delayMs(200)%3B%20%20%20%0A%20%20%20%20%7D%20%20%0A%2F**%0A%20%20*%20%40brief%20%20This%20function%20sets%20and%20resets%20all%20leds.%0A%20%20*%20%40param%20%20None%0A%20%20*%20%40retval%20None%0A%20%20*%2F%0AvoidsetAllLed(void)%0A%7B%0A%20%20%20%20GPIO_SetBits(LED1_GPIO_PORT%2CLED1_PIN)%3B%0A%20%20%20%20GPIO_SetBits(LED2_GPIO_PORT%2CLED2_PIN)%3B%0A%20%20%20%20GPIO_SetBits(LED3_GPIO_PORT%2CLED3_PIN)%3B%0A%20%20%20%20GPIO_SetBits(LED4_GPIO_PORT%2CLED4_PIN)%3B%0A%7D%0A%0AvoidresetAllLed(void)%0A%7B%0A%20%20%20%20GPIO_ResetBits(LED1_GPIO_PORT%2CLED1_PIN)%3B%0A%20%20%20%20GPIO_ResetBits(LED2_GPIO_PORT%2CLED2_PIN)%3B%0A%20%20%20%20GPIO_ResetBits(LED3_GPIO_PORT%2CLED3_PIN)%3B%0A%20%20%20%20GPIO_ResetBits(LED4_GPIO_PORT%2CLED4_PIN)%3B%0A%7D” message=”” highlight=”” provider=”manual”/]

 

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



Tags: , , ,