قسمت اول آموزش میکرو stm8 با توابع spl بخش gpio
به نام خدا و باسلام
در این آموزش ها ما از میکرو stm8s003f3 استفاده می کنیم.
آموزش میکروکنترلر stm رو با توابعی که خوده ST داده به نام Standard Peripheral Library شروع میکنم.
برای شروع ابتدا مطالب آموزشی پیش نیاز زیر برای این میکرو رو ببینید:
آموزش دانلود و نصب iar برای برنامه نویسی stm8
آموزش ایجاد پروژه جدید در iar برای میکرو stm8
آموزش پروگرام میکروهای سری stm8
ذر این بخش از آموزش به راه اندازی gpio با استفاده از توابع spl به صورت ریجستری می پردازیم.
برای شروع اول کتابخونه های STM8 رو از اینجا دانلود کنید.
۰-حالا یه پروژه جدید ایجاد کنید و اون رو مثلا داخل پوشه stm8_spl ذخیره کنید . که لینک آموزشش رو گذاشتم بالا و یک بار کامپایل کنید اوکی بود مراحل زیر رو به ترتیب انجام بدید
۱-فایل زیپ کتابخونه ای که ST دانلود کردین رو اکسترکتش کنید و برید به پوشه لایبری و و تمام هدر فایل های h. رو کپی کنید.
۲-فایل هایی که کپی کردین رو در پوشه ای که پروژه خودتون (مثلا پوشه stm8_spl ) رو ساختید پیست کنید.
۳-دوتا فایل h. دیگه هم من اینجا قرار میدم دانلودشون کنید و پس از استخراج کپی کنید تو همون پوشه پروژتون.
۴-حالا چون ما قصد داریم در این قسمت از gpio استفاده کنیم پس برید داخل پوشه src فایلی که از st دانلود کردین و اونجا فایل stm8s_gpio.c رو کپی کنید و داخل پوشه پروژتون (مثلا پوشه stm8_spl ) کنار فایل های h. کپی کنید.(برای بقیه پروژه هاتونم میتونید همین کارو انجام بدید)
۵-نرم افزار iar رو بالا بیارید و روی قسمت زیر کلیک راست کنید و add رو بزنید و برید فایل stm8s_gpio.c رو اوپن کنید.
۶-کد زیر رو کپی کنید و تو main (مثل تصویر بالا) پیست کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#include "stm8s.h" #include "stm8s_gpio.h" #define LED_GPIO_PORT (GPIOC) #define LED_GPIO_PINS (GPIO_PIN_3) void delay_ms(unsigned long int n); void main(void) { /* Initialize I/Os in Output Mode */ GPIO_Init(LED_GPIO_PORT,(GPIO_Pin_TypeDef)LED_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST); while (1) { /* Toggles LEDs */ GPIO_WriteReverse(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS); delay_ms(800); } } void delay_ms(unsigned long int n) { unsigned long int x=0; unsigned long fCPU=2000000; // HSI RC =16 MHz ----- HSIDIV=8 ------CPUDIV=1 fCPU=16 / 8 / 1 Mhz x=fCPU/1000; x=x/50; n=n*x; while (n-- > 0); } #ifdef USE_FULL_ASSERT void assert_failed(uint8_t* file, uint32_t line) { /* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* Infinite loop */ while (1) { } } #endif |
کد بالا یه ال ای دی چشمک زنه که به pc3 متصله
۷-کد رو کامپایل کنید
در خط اول هدر stm8s را به پروژه اضافه شده که شامل رجیسترهای میکرو میباشد نکته بسیار مهم این است که پس از ساخت پروژه و کامپایل آن به ارور زیر برخواهید خورد.
Please select first the target STM8S/A device used in your application (in stm8s.h file)
ین ارور در واقع به شما میگوید که باید نوع میکرو خود را در فایل stm8s تعریف نمایید. پس وارد فایل stm8s.h شده ودر خطوط اولیه گزینه ی میکروی مورد نظرمون رو از حالت کامنت خارج میکنیم:
/* #define STM8S208 */ /*!< STM8S High density devices with CAN */
/* #define STM8S207 */ /*!< STM8S High density devices without CAN */
/* #define STM8S007 */ /*!< STM8S Value Line High density devices */
/* #define STM8AF52Ax */ /*!< STM8A High density devices with CAN */
/* #define STM8AF62Ax */ /*!< STM8A High density devices without CAN */
/* #define STM8S105 */ /*!< STM8S Medium density devices */
/* #define STM8S005 */ /*!< STM8S Value Line Medium density devices */
/* #define STM8AF626x */ /*!< STM8A Medium density devices */
/* #define STM8AF622x */ /*!< STM8A Low density devices */
/* #define STM8S103 */ /*!< STM8S Low density devices */
#define STM8S003 /*!< STM8S Value Line Low density devices */
/* #define STM8S903 */ /*!< STM8S Low density devices */
۸-کد رو پروگرام کنید و همچنین به بخش stm8s_gpio.h برید و توابع gpio رو ببینید و ازشون استفاده کنید.
۹-enjoy it
سلام و وقت بخیر.
من طبق دستوراتی که گفته بودید عمل کردم ولی فایل کتابخانه ای که من دانلود میکنم از روی سایت ST فایل های read only هستند و امکان تغییر در فایل وجود نداره که بتونم نوع میکرو رو انخاب کنم.!!!
راه حل چیه؟
سلام خیلی راحت، روی فایل ها کلیک راست کنید بعد پروپرتیس رو بزنید و اونجا تیک رید آنلی رو بردارید