آموزش میکروکنترلر STM32F4 – قسمت سوم ;
در قسمت دوم آموزش میکروکنترلر STM32F4 به پروژههای انجام شده روی بورد زتا پرداختیم. در این قسمت به تابعهای weak و روند ایجاد یک پروژه میپردازیم. با سیسوگ همراه باشید.
تابعهای weak:
با رخ دادن هر وقفهای، یک تابع فراخوانی میشود. گاهی این تابعها به شکل پیش فرض در فایلهای مربوط به وقفه، نوشته شدهاند اما کاری انجام نمیدهند تا بعداً کاربر تابع مناسب را با توجه به نیاز خود بنویسد. تابعها با پیشوند weak مشخص شدهاند. برای مثال تابع weak وقفه ی خارجی پایهها، در فایل STm32f4xx_hal_gpio.c به شکل زیر تعریف میشود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | /** * @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، بازنویسی کند و هنگام کامپایل شدن، تابع وی مورد استفاده قرار میگیرد. برای مثال در زیر تابع کاربر دیده میشود که دو دیود نوری را به پایه ی وقفه بسته و آن را چشمکزن کرده است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | /** * @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 مطمئن شوید که پروژه شما متناسب با بورد طراحی شده است. اکثر وسایل جانبی این میکروکنترلر را می توان در پایههای مختلف جابجا کرد. برای مثال همانطور که در شکل زیر دیده میشود با فعال کردن ارتباط سریال 1 در این میکروکنترلر پایههای ارسال و دریافت را میتوان روی دو مکان مختلف تنظیم کرد. پایه استاندارد در سمت چپ شکل ملاحظه میشود. ولی میتوان پایههای جایگزین را نیز با نگه داشتن کلید کنترل و کلیک روی پایه استاندارد دید. این پایه در بالای شکل با پیکان نارنجی مشخص شده است.
در قسمت چهارم آموزش میکروکنترلر STM32F4 به ساختار باس خواهیم پرداخت. با سیسوگ همراه باشید.
سایتتون واقعاً عالیه مخصوصاً که برنامه بلدم بنویسم ولی این همه فایلای تو در تو با پسوندای c و h رو نمی دونستم چیه و ساختار کیل و HAL و هیچ جا هم نبود و این سایت کمکم کرد . تا این مجهولاتو ندونم نمی تونم مسلط بشم وگرنه برنامه بلدم بنویسم . 10 تومن به عنوان همیاری فرستادم که خیلی ناقابله .
متشکر برای حمایت شما 🙂
بسیار عالی توضیح دادید. سپاس
سلام. خواهش میکنیم دوست عزیز