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

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


خلاصه بخش اول

در این آموزش با واحد GPIO میکروکنترلر آشنا می شویم و اولین پروژه، که شامل LED های چشمک زن می باشد را پیاده سازی می کنیم. کد مربوط به پیکربندی میکروکنترلر را با استفاده از نرم افزار CubeMX تولید خواهیم کرد و برای کدنویسی از نرم افزار Keil استفاده می کنیم.


خلاصه بخش دوم

در این آموزش از کلیدهای فشاری برد آموزشی به عنوان ورودی استفاده می کنیم و در غالب یک پروژه متناظر با هر کلید فشاری یکی از LED های برد آموزشی را روشن و خاموش می کنیم


مشاهده ویدیو بخش اول


مشاهده ویدیو بخش دوم


ایجاد پروژه در نرم افزار کیوب


انتخاب پین های متناسب با LED ها و کلید های فشاری برد آموزشی



در نرم افزار Keil می توان از قسمت Application/User به برنامه اصلی دسترسی داشت



تشریح کد برنامه


هدرفایل های مورد نیاز پروژه


[pastacode lang=”c” manual=”%2F*%20Includes%20——————————————————————*%2F%0A%23include%20%22main.h%22%0A%23include%20%22stm32f1xx_hal.h%22″ message=”” highlight=”” provider=”manual”/]


پیش تعریف توابع ایجاد شده توسط نرم افزار کیوب


[pastacode lang=”c” manual=”%2F*%20Private%20function%20prototypes%20———————————————–*%2F%0Avoid%20SystemClock_Config(void)%3B%0Astatic%20void%20MX_GPIO_Init(void)%3B” message=”” highlight=”” provider=”manual”/]


جزئیات تابع MX_GPIO_Init


[pastacode lang=”c” manual=”%2F**%20Configure%20pins%20as%20%0A%20%20%20%20%20%20%20%20*%20Analog%20%0A%20%20%20%20%20%20%20%20*%20Input%20%0A%20%20%20%20%20%20%20%20*%20Output%0A%20%20%20%20%20%20%20%20*%20EVENT_OUT%0A%20%20%20%20%20%20%20%20*%20EXTI%0A*%2F%0Astatic%20void%20MX_GPIO_Init(void)%0A%7B%0A%0A%20%20GPIO_InitTypeDef%20GPIO_InitStruct%3B%0A%0A%20%20%2F*%20GPIO%20Ports%20Clock%20Enable%20*%2F%0A%20%20__HAL_RCC_GPIOC_CLK_ENABLE()%3B%0A%0A%20%20%2F*Configure%20GPIO%20pin%20Output%20Level%20*%2F%0A%20%20HAL_GPIO_WritePin(GPIOC%2C%20GPIO_PIN_2%7CGPIO_PIN_3%7CGPIO_PIN_4%7CGPIO_PIN_5%2C%20GPIO_PIN_RESET)%3B%0A%0A%20%20%2F*Configure%20GPIO%20pins%20%3A%20PC2%20PC3%20PC4%20PC5%20*%2F%0A%20%20GPIO_InitStruct.Pin%20%3D%20GPIO_PIN_2%7CGPIO_PIN_3%7CGPIO_PIN_4%7CGPIO_PIN_5%3B%0A%20%20GPIO_InitStruct.Mode%20%3D%20GPIO_MODE_OUTPUT_PP%3B%0A%20%20GPIO_InitStruct.Speed%20%3D%20GPIO_SPEED_FREQ_LOW%3B%0A%20%20HAL_GPIO_Init(GPIOC%2C%20%26GPIO_InitStruct)%3B%0A%0A%20%20%2F*Configure%20GPIO%20pins%20%3A%20PC6%20PC7%20PC8%20PC9%20*%2F%0A%20%20GPIO_InitStruct.Pin%20%3D%20GPIO_PIN_6%7CGPIO_PIN_7%7CGPIO_PIN_8%7CGPIO_PIN_9%3B%0A%20%20GPIO_InitStruct.Mode%20%3D%20GPIO_MODE_INPUT%3B%0A%20%20GPIO_InitStruct.Pull%20%3D%20GPIO_NOPULL%3B%0A%20%20HAL_GPIO_Init(GPIOC%2C%20%26GPIO_InitStruct)%3B%0A%0A%7D” message=”” highlight=”” provider=”manual”/]


تابع main


در ابتدای برنامه تمام بخش های میکروکنترلر ریست می شود، واحد کلاک میکرو کنترلر تنظیم می شود و واحد GPIO طبق آنچه که در نرم افزار کیوب انتخاب کردیم تنظیم می شود.


[pastacode lang=”c” manual=”int%20main(void)%0A%7B%0A%20%20%2F*%20MCU%20Configuration———————————————————-*%2F%0A%0A%20%20%2F*%20Reset%20of%20all%20peripherals%2C%20Initializes%20the%20Flash%20interface%20and%20the%20Systick.%20*%2F%0A%20%20HAL_Init()%3B%0A%0A%20%20%2F*%20Configure%20the%20system%20clock%20*%2F%0A%20%20SystemClock_Config()%3B%0A%0A%20%20%2F*%20Initialize%20all%20configured%20peripherals%20*%2F%0A%20%20MX_GPIO_Init()%3B” message=”” highlight=”” provider=”manual”/]


روتین اجرای برنامه


[pastacode lang=”c” manual=”%20%20while%20(1)%0A%20%20%7B%0A%20%20%2F*%20USER%20CODE%20END%20WHILE%20*%2F%0A%0A%20%20%2F*%20USER%20CODE%20BEGIN%203%20*%2F%0A%09%09if%20(HAL_GPIO_ReadPin(GPIOC%2CGPIO_PIN_6)%3D%3D0)%7B%0A%09%09%09HAL_GPIO_WritePin(GPIOC%2CGPIO_PIN_2%2CGPIO_PIN_SET)%3B%0A%09%09%7D%0A%09%09else%20if%20(HAL_GPIO_ReadPin(GPIOC%2CGPIO_PIN_6)%3D%3D1)%7B%0A%09%09%09HAL_GPIO_WritePin(GPIOC%2CGPIO_PIN_2%2CGPIO_PIN_RESET)%3B%0A%09%09%7D%0A%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%09%09%09%09%0A%09%09if%20(HAL_GPIO_ReadPin(GPIOC%2CGPIO_PIN_7)%3D%3D0)%7B%0A%09%09%09HAL_GPIO_WritePin(GPIOC%2CGPIO_PIN_3%2CGPIO_PIN_SET)%3B%0A%09%09%7D%0A%09%09else%20if%20(HAL_GPIO_ReadPin(GPIOC%2CGPIO_PIN_7)%3D%3D1)%7B%0A%09%09%09HAL_GPIO_WritePin(GPIOC%2CGPIO_PIN_3%2CGPIO_PIN_RESET)%3B%0A%09%09%7D%0A%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%09%09%0A%09%09%0A%09%09if%20(HAL_GPIO_ReadPin(GPIOC%2CGPIO_PIN_8)%3D%3D0)%7B%0A%09%09%09HAL_GPIO_WritePin(GPIOC%2CGPIO_PIN_4%2CGPIO_PIN_SET)%3B%0A%09%09%7D%0A%09%09else%20if%20(HAL_GPIO_ReadPin(GPIOC%2CGPIO_PIN_8)%3D%3D1)%7B%0A%09%09%09HAL_GPIO_WritePin(GPIOC%2CGPIO_PIN_4%2CGPIO_PIN_RESET)%3B%0A%09%09%7D%0A%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%09%09%0A%09%09if%20(HAL_GPIO_ReadPin(GPIOC%2CGPIO_PIN_9)%3D%3D0)%7B%0A%09%09%09HAL_GPIO_WritePin(GPIOC%2CGPIO_PIN_5%2CGPIO_PIN_SET)%3B%0A%09%09%7D%0A%09%09else%20if%20(HAL_GPIO_ReadPin(GPIOC%2CGPIO_PIN_9)%3D%3D1)%7B%0A%09%09%09HAL_GPIO_WritePin(GPIOC%2CGPIO_PIN_5%2CGPIO_PIN_RESET)%3B%0A%09%09%7D%09%09%0A%2F%2F%09%09HAL_Delay(500)%3B%0A%20%20%7D” message=”” highlight=”” provider=”manual”/]




پروژه چشمک زن

کانال تلگرام نامینیک

گروه تلگرام نامینیک ARM STM32


 

Tags: , , , , , ,