آموزش میکروکنترلر STM32F4
در قسمت دوم آموزش میکروکنترلر STM32F4 به پروژههای انجامشده روی بورد زتا پرداختیم. در این قسمت به تابعهای weak و روند ایجاد یک پروژه میپردازیم. با ما همراه باشید.
تابعهای weak:
با رخدادن هر وقفهای، یک تابع فراخوانی میشود. گاهی این تابعها بهشکل پیشفرض در فایلهای مربوطبه وقفه، نوشته شدهاند اما کاری انجام نمیدهند تا بعداً کاربر تابع مناسب را باتوجهبه نیازخود بنویسد. تابعها با پیشوند weak مشخص شدهاند. برای مثال تابع weak وقفهی خارجی پایهها، در فایل STm32f4xx_hal_gpio.c به شکلزیر تعریف میشود.
/** * @brief EXTI line detection callbacks. * @param GPIO_Pin: Specifies the pins connected EXTI line * @retval None */ __weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { /* Prevent unused argument(s) compilation warning */ __IO uint32_t tmpreg = 0x00; UNUSED(tmpreg); /* NOTE: This function Should not be modified, when the callback is needed, the HAL_GPIO_EXTI_Callback could be implemented in the user file */ }
کاربر میتواند تابع موردنظر خود را در فایل main یا هر فایلدیگری، بدون پیشوند weak، بازنویسی کند و هنگام کامپایلشدن، تابع وی مورداستفاده قرار میگیرد. برای مثال در زیر تابع کاربر دیده میشود که دو دیود نوری را به پایهی وقفه بسته و آن را چشمکزن کردهاست.
/** * @brief EXTI line detection callbacks * @param GPIO_Pin: Specifies the pins connected EXTI line * @retval None */ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if(GPIO_Pin == KEY_BUTTON_PIN) { /* Toggle LED2 */ BSP_LED_Toggle(LED2); } if(GPIO_Pin == WAKEUP_BUTTON_PIN) { /* Toggle LED1 */ BSP_LED_Toggle(LED1); } }
روند ایجاد یک پروژه:
برای آغاز یک پروژهجدید، به چندروش میتوان عملکرد. مسلماً زمان و کیفیت در انتخاب روش مهم هستند. برای رسیدن به کیفیت موردنظر میتوان هنگام تکمیل پروژه، استانداردهای لازم را رعایتکرد. برایمثال در برنامه کامنت قرار داد و یا برنامه را ساختارمند نوشت. برای انجام پروژه در زمان کوتاه از دوچیز میتوان کمکگرفت یکیاز برنامههای نمونه دادهشده مانند برنامههای بوردهای مختلف که Kail ارائه دادهاست و دیگری استفادهاز cubeMX است. نمونه برنامههای ارائهشده توسط Kail پیشاز این بررسیشد. این پروژهها همه قسمتهای میکروکنترلر را پوشش میدهند. در زیر فهرست آنها برای بورد STM324x9I_EVAL دیده میشود. هرکدام از این پوشهها، گاهی شامل چند پروژه مختلف است. بهتراست به فایلهای دادهشده برای بوردهای ارزیابی که معمولاً با پسوند eval مشخص میشوند مراجعهکنید. این بوردها بهدلیل داشتن اکثر وسایلجانبی و سختافزارهای مختلف پروژههای کاملتری دارند.
بااستفادهاز CubeMX میتوانید چندمورد را مشخصکنید. بهکمک این نرمافزار میتوانید بدونمراجعه به دیتاشیت میکروکنترلر، اطلاعات مفیدی از میکروکنترلرکنترلر را پیداکنید. برایمثال کدام پایهها بهکدام وسیله جانبی میکروکنترلر متصل است. در شکلزیر دیده میشود که با کلیک روی پایه PA10 چه وسایل جانبیای به این پایه وصل هستند.
میتوانید با مقایسه مدار بورد خود با نرمافزار CubeMX مطمئن شوید که پروژه شما متناسب با بورد طراحیشدهاست. اکثر وسایلجانبی این میکروکنترلر را میتوان در پایههای مختلف جابجا کرد. برایمثال همانطورکه در شکلزیر دیده میشود با فعالکردن ارتباط سریال۱ در این میکروکنترلر پایههای ارسال و دریافت را میتوان روی دو مکان مختلف تنظیمکرد. پایه استاندارد در سمتچپ شکل ملاحظه میشود. ولی میتوان پایههای جایگزین را نیز با نگهداشتن کلید کنترل و کلیک روی پایه استاندارد دید. این پایه در بالایشکل با پیکان نارنجی مشخصشدهاست.
در قسمت چهارم آموزش میکروکنترلر STM32F4 به ساختار باس خواهیمپرداخت. با ما همراه باشید.
منبع: سیسوگ