قسمت پنجم: آماده سازی ابزارهای نرم‌افزاری برای STM8

قسمت پنجم: آماده سازی ابزارهای نرم‌افزاری برای STM8

قسمت پنجم: آماده سازی ابزارهای نرم‌افزاری برای STM8
قسمت پنجم: آماده سازی ابزارهای نرم‌افزاری برای STM8

در قسمت چهارم از مجموعه آموزشی میکروکنترلر STM8 سیسوگ نحوه کار با نرم‌افزار کاربردی STM8CubeMX را آموزش داد. حال، قبل از شروع برنامه نویسی برای میکروکنترلر STM8 به یک سری اطلاعات نیاز داریم که با همراهی سیسوگ این اطلاعات را می‌توانید بدست آورید. هم‌چنین با کتابخانه استاندارد SPL و محیط نرم‌افزاری STVD آشنا می‌شوید:

STM8 Reference Manual

دیتاشیت (MCU (STM8S003 که از آن استفاده می‌کنیم.

راهنمای کاربر STM8SVLDiscovery Board.

این‌ها اطلاعاتی هستند که در طول دوره یادگیری به آن‌ها نیاز داریم. Reference Manual ها همه جا مورد استفاده هستند و جزئیات بلوک‌های سخت افزاری را در اختیار قرار می‌دهند، که شامل توضیحات رجیستری، نام‌گذاری، حالت عملکرد سخت‌افزار و غیره است. که این مرجع برای تمام میکروهای STM8S و STM8AF تهیه شده است و تنها  یک STM8 مشخص را بیان نمی‌کند. همانطور که می‌دانید در خانواده‌ای از میکروها، هر MCU با MCU های دیگر متفاوت است. بیشتر این اختلاف‌ها به ظرفیت حافظه و تعداد پین‌ها برمی‌گردد. گاهی اوقات مشخصات الکتریکی نیز متفاوت است و برای بدست آوردن مشخصات کلی MCU مورد نظر باید به دیتاشیت آن مراجعه کنیم. در نهایت راهنمای کاربر Discovery board برای تخصیص پین‌ها و طرح‌های سخت‌افزاری مناسب است که پیشنهاد می‌کنم از این الگو استفاده کنید.

حال، با نصب برنامه‌های Cosmic، STVD و STVP ابزارهای نرم‌افزاری ما آماده هستند. دو روش برای پروگرام کردن STM8 وجود دارد. اولین روش استفاده از روش‌های سنتی برای برنامه‌نویسی است. روش دوم، استفاده از روش‌های متداول برنامه‌نویسی با استفاده از کتابخانه‌های استاندارد توسعه یافته توسط STM است که همگانی هستند. بدین معنی که کد نوشته به زبان C برای هر کامپایلری که از این کتابخانه‌ها استفاده می‌کند بدون اینکه نیازی به تغییر ،مورد استفاده است. این کتابخانه‌ها ” کتابخانه‌های استاندارد محیطی”(Standard Peripheral Libraries (SPL” نامیده می‌شوند. با استفاده از این کتابخانه‌ها دیگر نیازی به تعریف سطوح اولیه برنامه‌نویسی نیست. کتابخانه‌ها به گونه‌ای برنامه‌نویسی شده‌اند که تنها لازم است برنامه‌نویس مشخصات سخت‌افزاری تراشه‌ها و برخی از اصول این سخت‌افزارها را بداند. در قسمت برنامه‌نویسی تنها کافی است برنامه‌نویس خواص و مقادیر مورد نظر را تنظیم نماید. SPL بقیه موارد را مدیریت می‌کند. به عنوان مثال، هنگام تنظیم UART ، تنها نیاز به تنظیم وقفه‌ها، ویژگی‌های I/O و ویژگی‌های UART مانند سرعت بوت (baud rate)، توازن و … است. همه این تنظیمات با اعداد و متون معنی‌دار انجام می شود.

کتابخانه‌های استاندارد محیطی  (SPL) را برای میکروکنترلرهای STM می‌توانید از اینجا دانلود کنید.

در این مقاله از SPL استفاده شده است زیرا برای STM8s استفاده از روش‌های قدیمی برای پیکربندی به صورت دستی چندان مناسب نیست. بنابراین، دانلود فایل بالا الزامی است. باید فایل زیپ SPL دانلود شده را نگهداری کنید تا در زمانی که همه چیز خراب شد بتوانید از آن استفاده کنید.

دو پوشه به نام‌های  “inc” و “src” ایجاد کنید. پوشه “inc” با تمام فایل‌های هدر (فایل های با پسوند “.h”) که از فایل زیپ استخراج می‌شوند پر می‌شود. بطور مشابه، گوشه “src” با فایل‌های سورس (فایل‌هایی با پسوند “.c”) پر می‌شود. برای راحتی بیشتر، بهتر است این پوشه‌ها را به صورت فایل زیپ نگهداری کنید زیرا هربار که پروژه جدیدی ایجاد کنیم به فایل‌های این پوشه‌ها نیاز دارید. شما می‌توانید این فایل‌ها را در پوشه پروژه خود کپی کنید و یا می‌توانید آن را بطور مرکزی در جایی نگهداری کنید. من ترجیح می‌دهم از روش اول استفاده کنم و هیچ مشکلی برای سایر پروژه‌هایی که نیازی به تغییر ندارند پیش نمی‌آید. تنها بخشی از فضای هارد دیسک را هزینه می‌کنید ولی این روش برای مبتدیان کمتر گیج کننده و بدون دردسر است. تمامی فایل‌ها را به صورت زیر استخراج نمایید:

فایل‌های هدر و سورس کتابخانه SPL

 

همانطور که میبینید تعداد فایل‌های هدر از فایل‌های سورس بیشتر است. به این دلیل که دوتا فایل هدر stm8s.h  و stm8s_conf.h که نوع پردازنده  وخواص پردازنده را مشخص می‌کند اضافه شده‌اند. برای راه‌اندازی  stm8s_conf.h باید خط زیر را در فایل آن کامنت و یا غیر فعال نمایید، در غیر این صورت کامپایلر برای شما پیغام خطا نمایش می‌دهد. همیشه در ابتدای پروژه‌ها این را خط را چک کنید.

 

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

با فرض اینکه STVD، STVP و Cosmic به درستی نصب شده باشند، خواهیم دید که چگونه یک پروژه جدید ایجاد کنیم.

  • در ابتدا برنامه STVD را اجرا کنید.
  • File >> New Workspace را انتخاب کنید.
محیط برنامه STVD

محیط برنامه STVD

 

  • Create workspace and project را انتخاب نمایید.

ایجاد پروژه جدید در نرم‌افزار STVD

  • پوشه workspace و نام workspace را انتخاب نمایید.

 

 

WorkSpace جدید در نرم‌افزار STVD

 

  • نام پروژه را وارد نمایید و در قسمت  toolchain ،گزینه  STM8 Cosmic را انتخاب نمایید. نیاز هست که مسیری که کامپایلر در آن نصب شده را مشخص نمایید. این مسیر در کامپیوتر من به صورت زیر است:

C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8

 

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

 

  • نوع میکروکنترلر STM8 مورد استفاده خود را انتخاب نمایید.

انتخاب میکروکنترلر مورد استفاده در پروژه جدید

 

  • حال فایل‌های هدر و سورس را از پوشه SPL به برنامه ساخته شده در محیط نرم‌افزاری STVD اضافه نمایید.

 

 اضافه کردن فایل های هدر و سورس از پوشه SPL به برنامه

 

  • بعد از اضافه شدن فایل ها زبانه workspace به صورت زیر تغییر می کند:

 

زبانه WorkSpace در محیط نرم‌افزار STVD

 

نکته: وارد کردن کتابخانه‌های مشخص شده در اینجا برای شما کافی است و اگر در فایل دانلود کتابخانه‌های دیگری وجود دارد لزومی به اضافه کردن آن‌ها نیست.

  • محل فایل C را از برگه source در نرم‌افزار STVD انتخاب کنید و سپس در قسمت بالا “include “stm8s.h# را بنویسید:

 

فایل main برنامه در نرم‌افزار STVD

 

  • باید فایل هدر h را ویرایش نمایید و همان‌طور که در زیر نشان داده شده است، نام میکروکنترلر مورد استفاده تان را از حالت کامنت خارج نمایید.

 

ویرایش فایل هدر

 

کد را یک‌بار با استفاده از کلیدهای  CTRL + F7  یا با فشار دادن دکمه “compile” کامپایل کنید. اگر همه چیز درست باشد، هیچ خطایی یا پیام هشدار وجود ندارد. دلیل این کامپایل کردن این است که از ویژگی قدرتمند کد کننده کامپایلر استفاده کنید. با استفاده از این ویژگی، می‌توانید فقط با نوشتن چند حرف اول و سپس با استفاده از فشردن همزمان کلید‌های CTRL + SPACE  کد را پیش‌بینی یا تکمیل کنید.

 

پیش‌بینی کد با فشردن همزمان کلید‌های CTRL + SPACE

 

در طول نوشتن برنامه در محیط نرم‌افزاری STVD، شما ممکن است تعداد زیادی خطا برای فایل‌های سخت‌افزاری که در میکروکنترلر  STM8S مورد نظر شما در دسترس نیستند، دریافت کنید. به عنوان مثال، سخت‌افزار CAN در STM8S003F3 در دسترس نیست و بنابراین اگر شما فایل های CAN سورس و هدر اضافه کرده باشید خطایی برای آن دریافت خواهید کرد. پس از شناسایی پیام‌های خطا، فایل‌های هدر و فایل سورس مربوطه برای آن سخت‌افزار خاص باید حذف شوند.

یک رویکرد عاقلانه برای جلوگیری از این مسئله این است که دیتا شیت میکروکنترلر مورد نظر خود را مطالعه نمایید  و در مورد سخت افزارهای درون آن اطلاعات کسب کنید. همان‌طور که در زیر دیده می‌شود، بخش محتوای داد‌های درون دیتا شیت این موضوع را نشان می دهد:

 

دیتاشیت میکروکنترلر STM8

 

از STM8CubeMX هم می توان برای بدست آوردن اطلاعات سخت‌افزاری میکروکنترلر استفاده کرد، اما همانطور که قبلاً هم مطرح شد برخی از لوازم جانبی سخت‌افزاری که ورودی-خروجی ندارند در آن دیده نمی شوند.

 

STM8 CubeMX

 

به طور مشابه، اگر کد شما از  وقفه استفاده نمی‌کند، فایل‌های سورس و هدر وقفه (stm8s_it.h و stm8s_it.c) باید از محیط STVD حذف شوند. گاهی بهتر است فقط آن فایل‌هایی را که برای تکمیل یک پروژه نیاز دارید اضافه کنید. به عنوان مثال، اگر پروژه شما فقط از GPIO ها استفاده می‌کند، بهتر است تنها فایل‌های GPIO سورس و هدر ( stm8s.h و stm8s_conf.h) اضافه شوند. البته من این روش را تنها برای کسانی که با برنامه نویسی STM8 به خوبی آشنایی دارند توصیه می‌کنم زیرا در اکثر موارد شما به سخت‌افزارهایی نیاز دارید که به یکدیگر وابسته هستند. به عنوان مثال، هنگامی که از SPI استفاده می‌کنید، به هر دو ماژول GPIO و SPI نیاز دارید. اگر شما این وابستگی‌ها را درک می‌کنید، می‌توانید تنها فایل‌های مورد نیاز را اضافه کنید. شما می‌توانید ماژول‌های سخت‌افزاری غیرضروری را در فایل هدر stm8s_conf.h کامنت کنید تا فرآیند کامپایلر را سرعت ببخشید. (البته یک سری تعریف structure اضافی هم داخل stm8s.h باقی میماند که نیازی نیست وقتتان را برای کامنت کردن آن ها بگذارید.) پس از نوشتن برنامه، همیشه باید با کلیک بر روی دکمه build/rebuild، پروژه خود را بسازید و یا بازسازی کنید. با این کار فایل خروجی نهایی S19 در هر دو پوشه Debug یا Release با توجه به حالت انتخاب شده تولید می‌شود. اگر همه چیز مرتب باشد، هیچ خطایی یا پیام هشداری وجود ندارد.

 

Build کردن پروژه در محیط نرم‌افزاری STVD

 

 

در نهایت، من هیچ نرم افزار شبیه‌سازی مفیدی مانند Proteus VSM یا Electronic Workbench که از خانواده میکروکنترلر STM8 پشتیبانی کند پیدا نکرده‌ام. بنابراین، ما باید کد خود را با سخت‌افزار واقعی امتحان کنیم. این ممکن است دشوار باشد اما در واقع این‌طور نیست.ما می‌توانیم از چنین نرم‌افزارهایی برای ساخت مدل های STM8 استفاده کنیم و PCB ها را تولید کنیم. از آنجا که شبیه‌سازی‌ها چندان دقیق و واقعی نیستند، شخصاً آن‌ها را دوست ندارم.

یک توصیه دیگر که مایلم به خوانندگان سیسوگ بدهم. لطفاً فایل راهنما SPL را مطالعه کنید این فایل در فایل زیپ شده  SPL تحت نام stm8s-a_stdperiph_lib_um.chm قرار دارد. در آن هر تابع، تعریف، ساختار داده، تمام ماژول‌های سخت‌افزاری داخلی و نحوه استفاده از آن‌ها به درستی توضیح داده شده است. این یک فایل اطلاعاتی بسیار مهم و بهترین دوست شما در برنامه نویسی میکروکنترلر  STM8 است. کتاب مرجع نیز به اندازه همین فایل مهم است و قابلیت‌های تمام سخت‌افزار داخلی را مشخص می‌کند.

در قسمت ششم آموزش‌های سیسوگ قصد داریم نحوه آپلود کردن برنامه روی STM8 را آموزش دهیم. با سیسوگ همراه باشید.

منبع

 

مطالب مرتبط

 

 

 

حمایت از electronic girl

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

electronic girl
electronic girl

دوستدار الکترونیک

دیدگاه ها

64 دیدگاه

  • حمید
    ۱۴ فروردین ۱۴۰۰

    سلام
    با تشکر از سایت ارزشمندتون که بسیار با سخاوت به آموختن مطالب جدید می پردازید. خواستم یه راهنمایی کلی داشته باشید که آیا کتابخانه هایی که برای stm8s وجود داره برای سری Stm8L هم قابل استفاده هست ؟

    • کامین جلیلی
      ۲۲ فروردین ۱۴۰۰

      سلام حمید. بله می‌شه استفاده کرد.

  • حمید
    ۱۴ فروردین ۱۴۰۰

    سلام
    خواستم یه راهنمایی کلی داشته باشید که آیا کتابخانه هایی که برای stm8s وجود داره برای سری Stm8L هم قابل استفاده هست ؟

    • Zeus ‌
      zeus
      ۵ اردیبهشت ۱۴۰۰

      سلام
      فکر میکنم سری s و a کتابخانه های یکسان داشته باشن و سری L کتابخانه های متفاوتی داشته باشه

  • الی
    ۲۲ مهر ۱۳۹۹

    از داخل مثالهاش کپی کردم،ممنون

  • الی
    ۲۲ مهر ۱۳۹۹

    سلام ممنون از آموزش های خوبتون
    یه سوال داشتم، کتابخونه spl رو از لینکی که فرمودید دانلود کردم اما فایل stm8s_conf.h در پوشه هدر نیست

  • علی
    ۲۴ شهریور ۱۳۹۹

    خیلی ممنون از مطالب مفیدتون

    • Sisoog Os
      Sisoog Os
      ۲۶ شهریور ۱۳۹۹

      خواهش میکنم دوست عزیز

  • مبین کاغذچی
    ۷ شهریور ۱۳۹۹

    سلام ممنون از شما
    من هنگامی که کد رو پروگرام میکنم رو میکرو هیچ کاری برام انجام نمیده
    از تو اینترنت هم چند تا کد پیدا کردم ولی باز هم اتفاقی نیافتاد
    با کامپایلر IAR تست کردم و شد البته یه بار باید برق رو کامل قطع کنم و دوباره وصل کنم تا شروع به کار کند ولی با STVD نشد ممنون میشم اگه راهنمایی کنین

    • Kamin Jalili
      ۱۷ آبان ۱۳۹۹

      سلام دوست عزیز. شما وقتی میکرو رو پروگرام می‌کنید باید یک بار آن را ریست کنید تا برنامه اجرا شود. این کار به صورت نرم‌افزاری هم قابل انجام است. این موردی که شما برق را قطع و وصل می‌کنید به احتمال زیاد همان عمل ریست انجام می‌شود که برنامه شروع به اجرا شدن می‌کند. اگر بر روی بردتان برای ریست کلیدی در نظر گرفته شده است، پس از پروگرام یک بار این دکمه را فشار بدهید تا برنامه اجرا بشود.

  • کاظم
    ۱ شهریور ۱۳۹۹

    توی اینترنت هم گشتم ی جا زده بود از قدیمی بودن نسخه نرم افزاره ولی اونم نصب کردم بازم نشد

  • کاظم
    ۱ شهریور ۱۳۹۹

    سلام بعد از نصب و انجام مراحل با زدن ctrl+f7 ارور زیر رو میده
    ———– Project test1 – STM8 Cosmic – Configuration Debug ————-

    Compiling main.c…
    cxstm8 -i”e:\stm tst\lib\inc” +debug -pxp -no -l +mods0 -pp -i”C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8\Hstm8″ -clDebug\ -coDebug\ main.c
    #error cpstm8 C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8\Hstm8\mods0.h:1 FlexLM No such feature exists.
    main.c:
    The command: “cxstm8 -i”e:\stm tst\lib\inc” +debug -pxp -no -l +mods0 -pp -i”C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8\Hstm8″ -clDebug\ -coDebug\ main.c ” has failed, the returned value is: 1
    exit code=1.

    main.o – 3 error(s), 0 warning(s)

    کلا اعصابمو خورد کرده لطفا کمک کنید

    • Zeus ‌
      زئوس Zeus
      ۱۸ شهریور ۱۳۹۹

      یکی از پروژه های مثال ما یه خود st رو باز کنید ببینید مشکل همچنان هست ؟

    • علی
      ۲۴ شهریور ۱۳۹۹

      احتمال خیلی زیاد شما کمپایلر را رجیستر نکردید. مقاله های قبلی را مطالعه و بعد از دریافت لایسنس آن را در نرم افزار ثبت کنید.

  • سید
    ۲۶ مرداد ۱۳۹۹

    سلام
    خیلی ممنون بابت مطالب مفیدتون، چه این مطلب چه بقیه ی مطالب این دوره و مطالب دیگه سایت. خدا قوت.
    یه نکته هم در مورد این مطلب این که برای حذف ماژول‌های سخت‌افزاری غیرضروری؛ مواردی که نیاز نیست در فایل هدر stm8s_conf.h باید کامنت بشن (نه stm8s.h؛ البته یه سری تعریف structure اضافی هم داخل stm8s.h باقی میمونه که به زحمت کامنت کردنش نمی ارزه!!)
    باز هم تشکر میکنم و امیدوارم روز به روز پیشرفت کنین 🙂

    • Zeus ‌
      زئوس Zeus
      ۲۷ مرداد ۱۳۹۹

      سلام ممنونم
      در واقع هدف ما اینه که دور هم چیزای جدید یاد بگیریم 🙂
      ممنونم برای توضیحتون – مطلب رو اصلاح میکنیم

  • مهدی
    ۲۶ اردیبهشت ۱۳۹۹

    سلام وقت
    مطابق آموزش همین صفحه جلو میرم. پروژه بدون خطا کامپایل میشه. برای build کردن که اقدام میکنم خطای زیر رو میده . امکانش هست راهنمایی بفرمایید مشکل چیه ؟ ممنون

    ———– Project mahdi_pro – STM8 Cosmic – Configuration Debug ————-

    Compiling source\src\stm8s_adc1.c…
    cxstm8 -isource -isource\inc -isource\src +debug -pxp -no -l +mods0 -pp -i”C:\Program Files (x86)\COSMIC\FSE_Compilers\Hstm8″ -clDebug\ -coDebug\ source\src\stm8s_adc1.c
    source\src\stm8s_adc1.c:

    Compiling source\src\stm8s_adc2.c…
    cxstm8 -isource -isource\inc -isource\src +debug -pxp -no -l +mods0 -pp -i”C:\Program Files (x86)\COSMIC\FSE_Compilers\Hstm8″ -clDebug\ -coDebug\ source\src\stm8s_adc2.c
    #error cpstm8 source\src\stm8s_adc2.c:56(8+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:57(8+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:58(8+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:59(8+4) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:60(8+4) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:56(2+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:60(15+21) ADC2_TDRL_RESET_VALUE undefined
    #error cpstm8 source\src\stm8s_adc2.c:59(15+21) ADC2_TDRH_RESET_VALUE undefined
    #error cpstm8 source\src\stm8s_adc2.c:58(15+20) ADC2_CR2_RESET_VALUE undefined
    #error cpstm8 source\src\stm8s_adc2.c:57(15+20) ADC2_CR1_RESET_VALUE undefined
    #error cpstm8 source\src\stm8s_adc2.c:56(15+20) ADC2_CSR_RESET_VALUE undefined
    #error cpstm8 source\src\stm8s_adc2.c:113(8+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:113(15+13) ADC2_CR1_ADON undefined
    #error cpstm8 source\src\stm8s_adc2.c:113(2+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:128(10+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:132(10+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:128(17+13) ADC2_CR1_ADON undefined
    #error cpstm8 source\src\stm8s_adc2.c:128(4+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:132(28+13) ADC2_CR1_ADON undefined
    #error cpstm8 source\src\stm8s_adc2.c:132(4+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:149(10+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:154(10+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:154(42) const assignment
    #error cpstm8 source\src\stm8s_adc2.c:149(26+14) ADC2_CSR_EOCIE undefined
    #error cpstm8 source\src\stm8s_adc2.c:149(4+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:154(28+14) ADC2_CSR_EOCIE undefined
    #error cpstm8 source\src\stm8s_adc2.c:154(4+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:170(8+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:172(8+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:170(2+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:170(26+14) ADC2_CR1_SPSEL undefined
    #error cpstm8 source\src\stm8s_adc2.c:193(12+4) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:194(12+4) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:194(29+3) const assignment
    #error cpstm8 source\src\stm8s_adc2.c:198(12+4) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:199(12+4) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:206(12+4) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:210(12+4) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:210(82) const assignment
    #error cpstm8 source\src\stm8s_adc2.c:217(12+4) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:221(12+4) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:193(6+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:198(6+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:206(6+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:210(6+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:217(6+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:221(6+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:244(8+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:246(8+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:251(10+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:256(10+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:256(41) const assignment
    #error cpstm8 source\src\stm8s_adc2.c:260(8+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:262(8+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:244(2+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:260(26+11) ADC2_CSR_CH undefined
    #error cpstm8 source\src\stm8s_adc2.c:244(26+14) ADC2_CR2_ALIGN undefined
    #error cpstm8 source\src\stm8s_adc2.c:251(17+13) ADC2_CR1_CONT undefined
    #error cpstm8 source\src\stm8s_adc2.c:256(28+13) ADC2_CR1_CONT undefined
    #error cpstm8 source\src\stm8s_adc2.c:282(8+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:287(10+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:287(43) const assignment
    #error cpstm8 source\src\stm8s_adc2.c:292(10+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:296(8+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:282(2+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:282(26+15) ADC2_CR2_EXTSEL undefined
    #error cpstm8 source\src\stm8s_adc2.c:287(27+16) ADC2_CR2_EXTTRIG undefined
    #error cpstm8 source\src\stm8s_adc2.c:292(28+16) ADC2_CR2_EXTTRIG undefined
    #error cpstm8 source\src\stm8s_adc2.c:310(8+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:310(15+13) ADC2_CR1_ADON undefined
    #error cpstm8 source\src\stm8s_adc2.c:310(2+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:325(13+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:328(18+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:330(18+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:337(18+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:339(18+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:325(7+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:325(19+14) ADC2_CR2_ALIGN undefined
    #error cpstm8 source\src\stm8s_adc2.c:355(28+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:355(34+12) ADC2_CSR_EOC undefined
    #error cpstm8 source\src\stm8s_adc2.c:355(22+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:365(8+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:365(38) const assignment
    #error cpstm8 source\src\stm8s_adc2.c:365(26+12) ADC2_CSR_EOC undefined
    #error cpstm8 source\src\stm8s_adc2.c:365(2+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:376(26+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:376(32+12) ADC2_CSR_EOC undefined
    #error cpstm8 source\src\stm8s_adc2.c:376(20+4) ADC2 undefined
    #error cpstm8 source\src\stm8s_adc2.c:386(8+3) bad struct/union operand
    #error cpstm8 source\src\stm8s_adc2.c:386(38) const assignment
    #error cpstm8 source\src\stm8s_adc2.c:386(26+12) ADC2_CSR_EOC undefined
    #error cpstm8 source\src\stm8s_adc2.c:386(2+4) ADC2 undefined
    source\src\stm8s_adc2.c:
    The command: “cxstm8 -isource -isource\inc -isource\src +debug -pxp -no -l +mods0 -pp -i”C:\Program Files (x86)\COSMIC\FSE_Compilers\Hstm8″ -clDebug\ -coDebug\ source\src\stm8s_adc2.c ” has failed, the returned value is: 1
    exit code=1.

    mahdi_pro.elf – 94 error(s), 0 warning(s)

    • Zeus ‌
      زئوس Zeus
      ۶ خرداد ۱۳۹۹

      یه سری ثابت ها هست که میگه اونا رو پیدا نمکنه و داره لیستشون میکنه براتون :/

  • فدا
    ۶ فروردین ۱۳۹۹

    سلام لطفا لینک قسمت ششم را در انتهای مقاله اصلاح کنید . قسمت 5 را باز می کند.

    • Zeus ‌
      زئوس Zeus
      ۹ فروردین ۱۳۹۹

      ممنونم دوست عزیز برای دقت شما – اصلاح شد لینک

  • سهیل
    ۲۵ اسفند ۱۳۹۸

    با عرض سلام و خسته نباشید
    تشکر میکنم بخاطر پاسختون
    میشه یه مقدارم لطف کنید بفرمائید که چطور فایل و از حالت کامنت در بیارم

    • Zeus ‌
      زئوس Zeus
      ۱ فروردین ۱۳۹۹

      فکر کنم اشتباه خط با فایل اشتباه شده – حق با شماست – اون خط از فایل رو باید از کامنت خارج کنید
      خارج کردن فایل از کامنت توی این ادیتور معنی نمیده (توی برخی ادیتورها معنی میده البته) !!

  • saha
    ۲۳ اسفند ۱۳۹۸

    سلام و ارزوی موفقیت
    دیدم زحمت کشیدید مطالب اموزشی مفیدی رو در اختیار هم وطن هاتون گذاشتید
    دور از ادب دونستم که تشکر نکنم
    علی یارتون

    • Zeus ‌
      زئوس Zeus
      ۲۴ اسفند ۱۳۹۸

      ممنونم دوست عزیز برای نظر امید بخشتون 🙂

  • سهیل
    ۱۷ اسفند ۱۳۹۸

    با سلام و عرض ادب و تشکر از فایل آموزشی با ارزشتون
    میشه این قسمت و بیشتر توضیح بفمائید.
    (باید فایل هدر h را ویرایش نمایید و همان‌طور که در زیر نشان داده شده است، نام میکروکنترلر مورد استفاده تان را از حالت کامنت خارج نمایید.)
    سپاس

    • Zeus ‌
      زئوس Zeus
      ۲۱ اسفند ۱۳۹۸

      سلام و درود دوست عزیز
      منظور اینه که فایل stm8s.h را باز کنید بعد با توجه به میکروکنترلر که قراره کد رو برای اون کامپایل کنید – خط مورد نظر رو از کامنت خارج کنید. مثلا در این مثال ما خط ۴۹ از فایل رو از کامنت خارج کردیم برای میکروکنترلر stm8s003

  • آبان
    ۱۴ آبان ۱۳۹۸

    سلام ممنون از آموزش روان و ساده و در حین عالی
    من نصب رو انجام دادم اما به ارور
    error clnk Debug\dd.lkf:1 symbol _main not defined (C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8\Lib\crtsi0.sm8 )
    The command: “clnk -m Debug\dd.map -l”C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8\Lib” -o Debug\dd.sm8 Debug\dd.lkf ” has failed, the returned value is: 1
    exit code=1.
    بر خوردم ممنون میشم راهنمایی بفرمایید

    • mjh
      ۱۱ اسفند ۱۳۹۸

      سلام فکر کنم توی فایل main.c این کد ها رو اضافه کنین درست می شه

      #ifdef USE_FULL_ASSERT

      /**
      * @brief Reports the name of the source file and the source line number
      * where the assert_param error has occurred.
      * @param file: pointer to the source file name
      * @param line: assert_param error line source number
      * @retval : None
      */
      void assert_failed(u8* file, u32 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

  • رضا
    ۲۰ شهریور ۱۳۹۸

    سلام خسته نباشید.
    من طبق آموزش همه تنظیمات رو انجام دادم . موقع کامپایل این خطا رو میده
    error cpstm8 C:\Program Files\COSMIC\FSE_Compilers\CXSTM8\Hstm8\mods0.h:1
    FlexLM System clock has been set back.

    exit code=1.

    c02.elf – 2 error(s), 0 warning(s)

    میشه راهنمایی کنید؟

    • Zeus ‌
      زئوس Zeus
      ۲۶ شهریور ۱۳۹۸

      سلام دوست عزیز
      دقیقا نمیدونم چه ربطی داره ولی خطایی که دارید دریافت میکنید برای تنظیم نبودن ساعت سیستم است 😐
      شاید سیستم لایسنسینگ نیاز به زمان درست داره که با سرور سینک بشه :/

    • alook
      ۱۷ شهریور ۱۳۹۹

      #error cpstm8 C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8\Hstm8\mods0.h:1 FlexLM Cannot find license file.
      main.c:
      The command: “cxstm8 -iinc +debug -pxp -no -l +mods0 -pp -i”C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8\Hstm8″ -clDebug\ -coDebug\ main.c ” has failed, the returned value is: 1
      exit code=1.
      برای رفع این ایراد چه باید بکنم

  • emid
    ۲۸ خرداد ۱۳۹۸

    سلام و عرض ادب
    کتابخانه SPL رو نمیشه دانلود کرد چونخود سایت غیر فعالش کرده Not available for download
    اگه دارین میشه آپلودش کنین؟

    • Sisoog Os
      Sisoog OS
      ۲۸ خرداد ۱۳۹۸

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

    • Nasim Hematian
      electronic girl
      ۲۸ خرداد ۱۳۹۸

      سلام دوست عزیز
      ممنون از اطلاعی که دادین. لینک دانلود جدید توی متن اضافه شد.

  • احسان
    ۱۱ اردیبهشت ۱۳۹۸

    سلام دستتون درد نکنه __مطالب عالی __اما فکر کنم قسمت نصب و اکتیو کردن رو یا درست انجام ندادم یا مطالب تون کمی نقص داره __ چون توی گزینه های file به من یک new خالی نشون میده و new workspce را ندارم من

    • Nasim Hematian
      electronic girl
      ۱۱ اردیبهشت ۱۳۹۸

      سلام. دوست عزیز شما چه ورژنی را نصب کردین؟

      • احسان
        ۱۱ اردیبهشت ۱۳۹۸

        ورژن 9.1.7

        • Nasim Hematian
          electronic girl
          ۱۱ اردیبهشت ۱۳۹۸

          من از ورژن 4.3.12 استفاده کردم سال 2017
          موضوعی که شما بهش اشاره کردین به دلیل اختلاف ورژن هاست و مشکلی در آموزش وجود نداره.
          موفق باشید.

          • احسان
            ۱۱ اردیبهشت ۱۳۹۸

            خوب الان من نمیتونم طیق آموزش هاتون جلو برم چون از ابتدا تفاوت داره _ آموزش دیگه ای که آپدیت تر باشه هست ؟؟؟

            0
          • Zeus ‌
            زئوس Zeus
            ۱۱ اردیبهشت ۱۳۹۸

            سلام دوست عزیز ؛ اونطور هم که فکر میکنید متفاوت نیست ؛ شما اگر موفق بشی نرم افزار رو رجیستر کنی ؛ بعدش دیگه فرقی نمیکنه که ؛ آموزش ها میره سمت راه اندازی قسمت های مختلف میکرو و کاری به فعال سازی نرم افزار نداره :/ !

            0
          • احسان
            ۱۱ اردیبهشت ۱۳۹۸

            خوب من طبق آموزش هاتون جلو رفتم برای نصب و راه اندازی و license.lic هم دریافت کردم و آموزش های نصب تون فکر کنم ناقص بود چون با این که لایسنس رو دریافت و مسیر ذخیره شده هم زدم ولی اسم کامپیوتر بدون اینکه پرسیده بشه خاتمه و فینیش شد

            0
          • Nasim Hematian
            electronic girl
            ۱۵ اردیبهشت ۱۳۹۸

            دوست عزیز
            پس از مرحله دریافت لایسنس باید دکمه فینیش را بزنید. و پس از آن صفحه جدید دیگری باز میشه که اسم کامپیوتر را از شما میخواد.
            شما تا مرحله خاتمه و فینیش که فرمودید مراحل رو درست رفتین.

            0
          • احسان
            ۱۵ اردیبهشت ۱۳۹۸

            دگمه finish را که میزنم ، اون صفحه ای که نام لب تاب را میخواد نمیاد اصلا و مراحل تموم میشه _ مشکل من چیه ؟ _ آیا با آنیستال کردن و اینستال مجدد مشکل حل میشه ؟

            0
          • Nasim Hematian
            electronic girl
            ۱۶ اردیبهشت ۱۳۹۸

            سلام
            شما این مشکل را با ورژن دیگه ای که نصب کرده بودین هم داشتین؟
            الان شما میتونین نرم افزار را باز کنین؟ امکانات نرم افزار بطور کامل در اختیارتون قرار میگیره؟
            ورژن قبلی را قبل از نصب این ورژن آنیستال کردین؟

            0
          • احسان
            ۱۶ اردیبهشت ۱۳۹۸

            ورژن قبلی اصلا نصب نداشتم…تنها وتنها همین ورژن را نصب کرده ام … اولین باره این کامپایلر را می بینم….نه امکانات کامل در دسترسم نیست …اصلا چیزی بنامworkspaceندارم

            0
          • Nasim Hematian
            electronic girl
            ۱۶ اردیبهشت ۱۳۹۸

            دوست عزیز شما الان ورژن 9.1.7 را نصب کردین یا ورژن 4.3.12 ؟
            وقتی گزینه new ای که به جای new workspace برای شما هست را میزنید چه عملیاتی انجام میشه؟

            0
          • احسان
            ۱۶ اردیبهشت ۱۳۹۸

            ورژن ۹.۱.۷
            وقتی میزنم فقط گزینه انتخاب هدر میاد ک از چ نوعی باشه … سورس باشه کتابخونه باشه و غیره

            0
          • Nasim Hematian
            electronic girl
            ۱۶ اردیبهشت ۱۳۹۸

            دوست عزیز به شما پیشنهاد میکنم نرم افزار STVD را از لینک زیر دانلود کنین و این ورژن را نصب کنین:
            http://www.st.com/en/development-tools/stvd-stm8.html

            0
          • احسان
            ۱۶ اردیبهشت ۱۳۹۸

            عزیزجانم ، من این نرم افزار را به همراه STVP و COSMIC دانلود کرده ام و همه موارد رو طبق موارد گفته شده در آموزش پیش رفته ام ___ چ اصراری دارین براین موارد ابتدایی !!!!!

            0
      • احسان
        ۱۶ اردیبهشت ۱۳۹۸

        من کلا بیخیال آموزش های شما شدم ترجیح میدهم از آموزش دیگری که اینجا نام نمیبرم استفاده کنم _ حداقل براساس IAR هست و آموزش دهنده تلفنی _ ایمیلی _ پیامکی _ تلگرام و حتی دایرکت اینستا جوابگو هست __ فکر میکنم آخرش باید هزینه کنم _ ایرادهای آموزش های رایگان شبیه هم هستند و همیشه دارای نواقص جدی ای هستند _ متشکر از وقتی که گذاشتین .

        • Zeus ‌
          زئوس Zeus
          ۱۶ اردیبهشت ۱۳۹۸

          دوست عزیز زود قضاوت نکنید ؛ شمایی که توی موارد اولیه مثل نصب یک نرم افزار ساده مشکل دارید ؛ بله فکر میکنم بهتره هزینه کنید ؛ اینطور سریعتر به جواب خواهید رسید ؛ این آموزش بارها توسط افراد مختلف تست و استفاده شده و مشکلی درش وجود نداشته ؛ خودم منم همین مسیر رو طی کردم و مشکلی ندیدم ؛
          به هر حال ؛ من در صحت این آموزش هیچ شکی ندارم و مطمئنم که درست هست ؛ خوشحال میشم اگر بتونیم مساله شما رو حل کنیم ولی اگر خودتون تمایل نداشته باشید قطعا کاری از دست ما بر نمیآد ، براتون آرزوی موفقیت میکنم.
          شاید آموزش زیر بدردتون بخوره
          stm8 در ایکلیپس

        • Nasim Hematian
          electronic girl
          ۱۶ اردیبهشت ۱۳۹۸

          دوست عزیز فعال سازی باید توی Cosmic انجام بشه نه توی STVD.
          گزینه new workspace مربوط به نرم افزار STVD هست. فک کنم شما توی Cosmic نگاه میکردین و توضیحات شما برای گزینه new مربوط به Cosmic کمیشه. در حالیکه باید توی STVD از گزینه new workspace پروژه جدید بسازید.
          موفق باشید

          • احسان
            ۱۶ اردیبهشت ۱۳۹۸

            سلام _ گاهی باید شهامت داشت و به سوتی هایی هرچندبزرگ که میدیم اعتراف کنیم __ ابتدا معذرت _ سپس بگم که من تا همین الان داشتم COSMIC را باز میکردم و دنبال FILE و NEW WORKSPACE میگشتم_ __ بله باید اعتراف کنم من اشتباه و سهوا بجای باز کردن STVD همش COSMIC را باز میکردم و الان فهمیدم _ گاهی آنقدر فشار و استرس زیاد میشه که کلمات به اون درشتی را آدم نمی بینه _ باز هم میگم پوزش بنده رو پذیرا باشین _ باتشکر

            0
          • Nasim Hematian
            electronic girl
            ۱۷ اردیبهشت ۱۳۹۸

            سلام خواهش میکنم
            گاهی این اشتباهات پیش میاد. خوشحالم که مشکلتون بر طرف شد.
            موفق باشید.

            0
  • محسن
    ۱۹ بهمن ۱۳۹۷

    سلام. دستتون درد نکنه…
    من نمیتونم فایل stm8s.h رو ویرایش کنم…اصلا امکان ویرایش وجود نداره……

    • Nasim Hematian
      electronic girl
      ۲۳ بهمن ۱۳۹۷

      سلام دوست عزیز
      فایل stm8s.h رو با NotePad باز کنین و آنجا ویرایش را انجام بدید بعد فایل ویرایش شده را فراخوانی کنین.

    • آبان
      ۱۴ آبان ۱۳۹۸

      فایل رو از حال رید اونلی read only خارج کنید به قسم پروپرتیس فایل مراجعه کنید

  • Aghil ...
    Mahdi Faghani
    ۲۰ مهر ۱۳۹۷

    سلام وتشکر از شما
    من STM8 را با سایت شما شروع کردم و این آموزش را دنبال می کنم.
    در حال انجام یک پروژه هستم که نیاز به تعریف متغیر در حافظه EEPROM و همچنین متغیر نوع const در حافظه فلش هست. لطفا در این مورد هم آموزش ارائه دهید.
    سپاس

    • Zeus ‌
      زئوس Zeus
      ۲۱ مهر ۱۳۹۷

      سلام دوست عزیز ، فکر میکنم برای تعریف متغیر توی حافظه فلش فقط کافی باشه که واژه const رو به ابتدای اون اضافه کنید.
      احتمالا در قسمت های اینده به موضوع eeprom نیز پرداخته بشه.

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

امنیت همیشه و در همه‌ی اعصار، مقوله‌ی مهم و قابل‌توجه‌ ای بوده و همیشه نوع بشر به دنبال امنیت بیشتر، دست به ابداعات و اختراعات گوناگونی زده است. ریموت کنترل یکی از این اختراعات است. در این مقاله، به بررسی امنیت انواع ریموت‌های کنترل خواهیم پرداخت....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

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

Zeus ‌ Zeus ‌
  • 11 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک