اموزش راه اندازی LED
سخت افزار
برای تست این برنامه میتوانید از چهارLED که بر روی برد آموزشی قرار دارد، استفاده کنید. شمارهی پینهایی که میتوانید استفاده کنید، در تصویر زیر نشان داده شده است.
آشنایی و کار با برنامه
ابتدا برنامه را با نرم افزار Keil باز کنید.
تغذیه 5 ولت را به برد آموزشی متصل کنید و بعد از اینکه پروگرامر ST-LINK را به برد متصل نمودید؛ برنامه را با استفاده از دکمهی Download پروگرم نمائید.
توضیحات مربوط به برنامه
ابتدا استراکچری، مربوط به تنظیمات اولیه پینهای ورودی و خروجی تعریف شده است.
سپس در تابع 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”/]
نظر بدهید