اموزش راه اندازی کلید با ARM STM32

 


هدف از مثال مورد نظر این است که شما با تابع ­هایی که در توابع CMSIS   وجود دارند و برای خواندن پین های  GPIO استفاده می­شوند، آشنا شوید.

سخت افزار

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

 

 

 

 

 

 

 

 

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

 

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

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

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

سپس در تابع main   با استفاده از توابعی که در تصویر زیر آمده است، تنظیماتGPIO  وکلاک انجام شده است.

در مرحله آخر در حلقه­ی while  وضعیت هرکدام از کلیدها بررسی می­شوند و هنگامی که کلیدی فشرده شود یکی از LED  های روی برد روشن می­شود.

[pastacode lang=”cpp” manual=”while(1)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20if(GPIO_ReadInputDataBit(KEY1_GPIO_PORT%2CKEY1_PIN)%20%3D%3D%200)%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20GPIO_SetBits(LED1_GPIO_PORT%2CLED1_PIN)%3B%20%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(GPIO_ReadInputDataBit(KEY1_GPIO_PORT%2CKEY1_PIN)%20%3D%3D%201)%0A%20%20%20%20%20%20%20%20%20%20%20%20GPIO_ResetBits(LED1_GPIO_PORT%2CLED1_PIN)%3B%0A%20%20%20%2F%2F———————————————————-%0A%20%20%20%20if(GPIO_ReadInputDataBit(KEY2_GPIO_PORT%2CKEY2_PIN)%20%3D%3D%200)%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20GPIO_SetBits(LED2_GPIO_PORT%2CLED2_PIN)%3B%0A%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20else%20if%20(GPIO_ReadInputDataBit(KEY2_GPIO_PORT%2CKEY2_PIN)%20%3D%3D%201)%0A%20%20%20%20%20%20%20%20%20%20%20%20GPIO_ResetBits(LED2_GPIO_PORT%2CLED2_PIN)%3B%0A%20%20%20%2F%2F———————————————————-%0A%20%20%20%20if(GPIO_ReadInputDataBit(KEY3_GPIO_PORT%2CKEY3_PIN)%20%3D%3D%200)%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20GPIO_SetBits(LED3_GPIO_PORT%2CLED3_PIN)%3B%20%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(GPIO_ReadInputDataBit(KEY3_GPIO_PORT%2CKEY3_PIN)%20%3D%3D%201)%0A%20%20%20%20%20%20%20%20%20%20%20%20GPIO_ResetBits(LED3_GPIO_PORT%2CLED3_PIN)%3B%0A%20%20%20%2F%2F———————————————————-%0A%20%20%20%20%20%20if(GPIO_ReadInputDataBit(KEY4_GPIO_PORT%2CKEY4_PIN)%20%3D%3D%200)%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20GPIO_SetBits(LED4_GPIO_PORT%2CLED4_PIN)%3B%20%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(GPIO_ReadInputDataBit(KEY4_GPIO_PORT%2CKEY4_PIN)%20%3D%3D%201)%0A%20%20%20%20%20%20%20%20%20%20%20%20GPIO_ResetBits(LED4_GPIO_PORT%2CLED4_PIN)%3B%0A%20%20%20%2F%2F———————————————————-%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20return%200%3B%0A%7D%0A%2F*——————–%20Configuration%20functions———————*%2F%0Avoid%20RCC_Configuration(void)%7B%0A%20%20%20%20RCC_APB2PeriphClockCmd(KEY1_GPIO_CLK%7CKEY2_GPIO_CLK%7CKEY3_GPIO_CLK%7CKEY4_GPIO_CLK%20%2C%20ENABLE)%3B%0A%7D%0A%20%0A%20%0Avoid%20GPIO_Configuration(void)%7B%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%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%20%20%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%0A%20%20GPIO_Init(LED4_GPIO_PORT%2C%20%26GPIO_InitStructure)%3B%0A%20%20%20%20%0A%20%20%2F%2F—————————————————–%0A%20%20%20%20%20%20%2F*%20Configure%20Keysclock%20*%2F%0A%20%0A%20%20%20%20%20%20%20%20%2F*%20Configure%20KEY1%20%20in%20input%20pullup%20mode%20*%2F%0A%20%20%20%20GPIO_InitStructure.GPIO_Pin%20%3D%20KEY1_PIN%3B%0A%20%20GPIO_InitStructure.GPIO_Speed%20%3D%20GPIO_Speed_50MHz%3B%0A%20%20GPIO_InitStructure.GPIO_Mode%20%3D%20GPIO_Mode_IPU%3B%0A%20%20GPIO_Init(KEY1_GPIO_PORT%2C%20%26GPIO_InitStructure)%3B%20%20%0A%20%20%20%20%20%20%20%20%2F*%20Configure%20KEY2%20%20in%20input%20pullup%20mode%20*%2F%0A%20%20%20%20GPIO_InitStructure.GPIO_Pin%20%3D%20KEY2_PIN%3B%0A%20%20GPIO_InitStructure.GPIO_Speed%20%3D%20GPIO_Speed_50MHz%3B%0A%20%20GPIO_InitStructure.GPIO_Mode%20%3D%20GPIO_Mode_IPU%3B%0A%20%20GPIO_Init(KEY2_GPIO_PORT%2C%20%26GPIO_InitStructure)%3B%20%20%0A%20%20%20%20%20%20%20%20%2F*%20Configure%20KEY3%20%20in%20input%20pullup%20mode%20*%2F%0A%20%20%20%20GPIO_InitStructure.GPIO_Pin%20%3D%20KEY3_PIN%3B%0A%20%20GPIO_InitStructure.GPIO_Speed%20%3D%20GPIO_Speed_50MHz%3B%0A%20%20GPIO_InitStructure.GPIO_Mode%20%3D%20GPIO_Mode_IPU%3B%0A%20%20GPIO_Init(KEY3_GPIO_PORT%2C%20%26GPIO_InitStructure)%3B%20%20%0A%20%20%20%20%20%20%20%20%2F*%20Configure%20KEY4%20%20in%20input%20pullup%20mode%20*%2F%0A%20%20%20%20GPIO_InitStructure.GPIO_Pin%20%3D%20KEY4_PIN%3B%0A%20%20GPIO_InitStructure.GPIO_Speed%20%3D%20GPIO_Speed_50MHz%3B%0A%20%20GPIO_InitStructure.GPIO_Mode%20%3D%20GPIO_Mode_IPU%3B%0A%20%20GPIO_Init(KEY4_GPIO_PORT%2C%20%26GPIO_InitStructure)%3B%20%20%0A%20%0A%7D” message=”” highlight=”” provider=”manual”/]

 

 

 

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



Tags: , ,