آموزش ایجاد پروژه جدید stm8 با IAR
به نام خدا و با سلام خدمت دوستان عزیز!
برنامه نویسی STM8 با IAR :
میکروکنترلرهای STM8S دارای چهار گروه مختلف هست:
- The STM8S003/005/007 Value line is the entry-level series with a basic feature set.
- The STM8S103/105 Access line offers more features and a larger variety of packages.
- The STM8S207/208 Performance line features a full set of peripherals and provides performance for medium- to higher-end applications.
- The STM8S Application specific line provides more analog features and dedicated firmware solutions.
در این مطلب نحوه ایجاد پروژه جدید توسط کامپایلر IAR برای میکروکنترلر ۸ بیتی STM8S003F3 رو بهتون آموزش میدم.
قابلیت های این میکرو به صورت زیر هستش:
Core
- ۱۶ MHz advanced STM8 core with Harvard architecture and 3-stage pipeline
- Extended instruction set
Memories
- Program memory: 8 Kbyte Flash memory; data retention 20 years at 55 °C after 100 cycles
- RAM:1 Kbyte
- Data memory:128 bytes true data EEPROM; endurance up to 100 k write/erase cycles
Clock, reset and supply management
- ۲٫۹۵ V to 5.5 V operating voltage
- Flexible clock control, 4 master clock sources
- – Low-power crystal resonator oscillator
- – External clock input
- – Internal, user-trimmable 16 MHz RC
- – Internal low-power 128 kHz RC
- Clock security system with clock monitor
Power management
- – Low-power modes (wait, active-halt, halt)
- – Switch-off peripheral clocks individually
- – Permanently active, low-consumption power-on and power-down reset
Interrupt managemen
- Nested interrupt controller with 32 interrupts
- Up to 27 external interrupts on 6 vectors
Timers
- Advanced control timer: 16-bit, 4 CAPCOM channels, 3 complementary outputs, dead-time insertion and flexible synchronization
- ۱۶-bit general purpose timer, with 3 CAPCOM channels (IC, OC or PWM)
- ۸-bit basic timer with 8-bit prescaler
- Auto wakeup timer
- Window and independent watchdog timers
Communications interfaces
- UART with clock output for synchronous operation, SmartCard, IrDA, LIN master mode
- SPI interface up to 8 Mbit/s
- I2C interface up to 400 Kbit/s
Analog to digital converter (ADC)
- ۱۰-bit ADC, ± ۱ LSB ADC with up to 5 multiplexed channels, scan mode and analog watchdog
I/Os
- Up to 28 I/Os on a 32-pin package including 21 high-sink outputs
- Highly robust I/O design, immune against current injection
Development support
- Embedded single-wire interface module (SWIM) for fast on-chip programming and nonintrusive debugging
تصویر زیر هم پین های خروجی این میکرو هستش:
همچنین بر آماده این میکرو هم هست که میتونید از سایت آفتاب رایانه یا سایتای دیگه بخرید
کریستال روی برد ۸ مگا هرتز هستش و ال ای دی هم به PC3 متصل شده.
مرحله ۱-
اول ابتدا نرم افزار IAR مخصوص میکروکنترلر STM8 که حجمش حدود ۳۰۰ مگ هستش رو نصب کنید که آموزش نصبش رو اینجا گفتم.
مرحله ۲-
نرم افزار رو باز کنید و یک پروژه جدید طبق مراحل زیر ایجاد کنید:
برای ساخت پروژه مطابق شکل از منوی project گزینه Create New Project رو انتخاب کنید که پنجره زیر به نمایش در میاد:
زبان C رو انتخاب کنید و اوکی کنید که پنجره زیر به نمایش درمیاد
در این قسمت مسیری برای save کردن پروژه انتخاب نموده و گزینه save را انتخاب کنید.
حالا شما باید تمامی فایلها و workspace را نیز save کنید. برای این کار از منوی file گزینه save All رو بزنید وتمامی فایلها و workspace را save نمایید
مرحله ۳-
برای انتخاب نوع میکروکنترلر و تنظیمات پروژه از منوی project گزینه Options را انتخاب کنید. یا Alt+f7 رو بزنید که پنجره زیر باز میشه:
از قسمت General option و سربرگ Target در قسمت Device میکروکنترلر موردنظر خود را انتخاب نمایید.
حالا بعد از اینکه میکروی مورد نظر رو انتخاب کردین
برای ساخت فایل hex باید در قسمت Output Converter و سربرگ Output تیک Generate dditional را زده و در قسمت Output format گزینه intel extended را انتخاب نمایید.
- در قسمت c/c++ compiler و از سربرگ preprocessor، درصورتیکه از فایل و هدر فایل غیر از هدرفایلهای کامپایلر استفاده میکنید مسیر آن را معرفی نمایید. شما اگر از پروژههای template استفاده کنید در این قسمت میتوانید مسیرهای معرفیشده را مشاهده کنید.
- همچنین از سربرگ Stack/Heap میتوانید فضای مربوط به حافظه پشته مقداردهی نمایید.
مرحله ۴-
کد زیر رو کپی کنید و طبق تصویر زیر کامپایل کنید باید بدون ارور کامپایل بشه:
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 |
#include <iostm8s003f3.h> 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); } //main entry point int main( void ) { CLK_ICKR=1; // High-speed internal RC on = 16 Mhz CLK_CKDIVR = 24; //fHSI RC output/8 & fCPU=fMASTER/1 PC_ODR = 0; //Turn off all pins PC_DDR_DDR3 = 1; //PortC, Bit 3 is output (PC3 - Data Direction Register) PC_CR1_C13 = 1; //PortC, Control Register 1, Bit 3 (PC3) set to Push-Pull PC_CR2_C23 = 1; //PortC, Control Register 2, Bit 3 (PC3) Output speed up to 10 MHz while (1) { //Turn on and off the output and then delay PC_ODR_bit.ODR3 = !PC_ODR_bit.ODR3; delay_ms(500); } } |
“در اینجا ال ای دی متصل شده به PC3 شروع میکنه به چشمک زدن”
“دیتاشیت رو پایین گذاشتم بخونید کاملا متوجه میشید”
در مثال فوق از اسیلاتور داخلی ۱۶Mhz استفادهشده است؛ که باید در ابتدای برنامه توسط رجیسترها تنظیم شود.
از شماتیک زیر هم میتونید در طراحی آلتیوم دیزاینر ازش استفاده کنید
آموزش نحوه پروگرام کردن میکروی فوق رو از اینجا ببینید