سطحي و كار راه انداز
دقيق و حرفه اي
_____________________________________
_____________________________________
مهندس يه پيشنهاد:
1-خوب اول از همه بريد تو اين لينكي كه گذاشتم و آخرين ورژن FreeRTOS رو دانلود كنيد.
اينم لينك: FreeRTOS Real Time Kernel - Browse Files at SourceForge.net
يعني فايلي به اسم(FreeRTOSV7.1.1.exe) رو دانلود كنيد.
2- بعد دانلود فايل، اونو Extract كنيد.
3- به مسير زير بريد. شما فوادري به اسم "CORTEX_STM32F103_Keil" اونجا داريد.
\FreeRTOSV7.1.1\FreeRTOSV7.1.1\Demo\...كه يه نمونه مثال خوب هستش. كه توش از USART1 هم استفاده كرده. من تو فايل main.c يه تغيراتي دادم(البته كوچولو) و دو تا task به اسم هاي vLED_1 و vLED_2 رو اضافه كردم. بعد كامپايل كردم. و روي برد تست كردم. به خوبي كار ميكنه.
اگه خواستيد من اين فولدر يا فقط فايل main.c كه تغيير دادم رو بذارم.
ویرایش توسط sadmonew : 20-06-2012 در ساعت 02:39
_____________________________________
_____________________________________
سلام به دوستان گرامی
اینم یه برنامه با keil
رابط سریال با وقفه دریافت
ds18b20
در صورت بالا رفتن دما به بیش از 40 درجه به شماره پیش فرض sms می دهد
اگه با شماره پیشفرض یه sms با مضمون 12630 rrr براش بفرستی برای شماره پیشفرض دما رو sms میکند
ویرایش توسط avr.mohsen : 21-06-2012 در ساعت 11:16
_____________________________________
_____________________________________
تشکر مهندس
بزار از اول قضیه را برات بگم
من کارم نوشتن برنامه است یعنی برنامه های بزرگ .
الان یه برنامه نوشتم و سخت افزارشم ساخته شده البته با at91sam7x256 .
100 تا از دستگاهم ساختیم.
حدود دو سال پیش شروع کردیم به ساخت. اون زمان برای انتخاب میکرو عجله کردیم و بهتر بگم خیلی تحقیق نکردیم .
الان برای ساخت ورژن جدید دستگاه می خواهم حتما از سه تا چیز استفاده کنم که دلیلشم میگم شاید درست باشه وبه درد مابقی هم بخوره.
1.cmsis
2.rtos
3.میکروهای stm
1.اول از آخر شروع میکنم
سومی به خاطر قیمت - قابلیت-استفاده از هسته کرتکس که برای سیستم عامل بهینه شده
دومی به خاطر اینکه حجم برنامم زیاده(حدودخط15,000) و کارهای زیادی تو برنامم باید انجام بدم برای همین از یه سیستم عامل باید استفاده کنم (تقریبا ساختاری که باید با سیستم عامل داشته باشم رو پیاده سازی کردم)
اولی به خاطر اینکه یه روز این میکرو پیدا نشد خیلی سریع بتونم سوئیچ کنم روی یه میکرو دیگه مثلا از شرکت nxp .
حالا گیری که دادم از خود سیستم عامل cmsis استفاده کنم اینه که بتونم اون عمل سوئیچ رو خیلی سریع انجام بدم و همزمان از قابلیتهای rtx خود keil هم مثل rl_tcpip استفاده کنم.
-------------------------------------------------------------------------------------------------
اول که ببخشید زیاد حرف زدم دوم یه سوال
freertos چجور سیستم عاملی است درست کار میکنه چه قابلیتهایی داره ؟؟؟؟؟؟
ویرایش توسط avr.mohsen : 21-06-2012 در ساعت 13:43
سلام
من دوتا پیشنهاد بهت میکنم
1. اگر پروژه ای هست و ساخت lpc1769 سرعت بسیار بالا و عالی سرعت تا 120 مگا هرتز
2. stm32f103vet6 اینم قیمتش در حد 10 تا 12 نمونش هم از چین اوردم تیو فروشگاه نزدم این هم ایسی عالی هست و نمونه برد کاملش هم هفته دیگه برای فروش اماده میشه
در حال حاظر این دوتا آیسی بهترین هست هم ارزون هم دسترس و هم امکانات بالا
سلام
اینجا رو یه نگاه بنداز :
http://mbed.org/handbook/CMSIS-RTOS
سلام
اينم يه مثال ساده در مورد نحوه راه اندازي و كار با پورت spi1(ميكروي stm32f103rbt6):
ویرایش توسط sadmonew : 01-07-2012 در ساعت 18:32
_____________________________________
_____________________________________
سلام مهندس
من اولین پروژه ARM شروع کردم و همین اول کار کار گیر کردم
یه پروژه جدید ساختم و new باز کردم به نام main.c و محتویات فایل main.c شما رو توش کپی کردم
همونطور که در عکس مشخصه خطای target میده لطفا راهنمایی کنید
سلام مهندس
البته قبلا در مورد اين خطا و نحوه برطرف كردنش صحبت شده.
اين خطا موقعي پيش مياد كه شما، نوع ميكروتون رو مشخص نكرده باشين.
لطفا عكسارو رو نگاه كنيد.
شما حتما اون عبارات مقابل Define رو به پروژتون اضافه كنيد.
ویرایش توسط sadmonew : 10-07-2012 در ساعت 13:27
_____________________________________
_____________________________________
ممنون مهندس قسمت Define رو وارد کردم اون مشکل حل شد
اگه ممکنه متن قسمت دوم رو بزارید خیلی خوانا نیست البته من تقریبا شبیه اون نوشتم ولی مطمئن نیستم
این یعنی چی ؟ StdPeriph_Driver
الان خطای زیرو میده
ویرایش توسط saeidhp : 10-07-2012 در ساعت 14:50
كدوم متن رو ميگيد؟ متوجه نميشم؟
مهندس فايل هايي كه تو مسير زير قرار دارن و تو عكس نشون دادم رو به پروژتون اضافه كنيد.
کد:...\library\STM32F10x_StdPeriph_Driver\src
_____________________________________
_____________________________________
متن قسمت اول : USE_STDPERIPH_DRIVERممنون مهندس قسمت Define رو وارد کردم اون مشکل حل شد
اگه ممکنه متن قسمت دوم رو بزارید خیلی خوانا نیست البته من تقریبا شبیه اون نوشتم ولی مطمئن نیستم
این یعنی چی ؟ StdPeriph_Driver
الان خطای زیرو میده
قسمت دوم : STM32F10X_MD
و بقیه : GPIO_ و USART_ و SPI_
قسمت اول عبارت موردنظر رو تعریف میکنه که توسط اون توابع استاندارد CMSIS قابل استفاده میشه .. تا اینو ننویسیم هیچ دستوری کار نمیکنه .
قسمت دوم خانواده میکروی ما رو برای CMSIS تعریف میکنه .. در اینجا MD به معنای Medium density یعنی خانواده ظرفیت متوسط سری F10X هست .
ضمنا در این پروژه از لایببری قبلی CMSIS و روش قبلی فراخوانی استفاده شده . در این روش باید با درایوری که می خواهید کار کنید مثل GPIO و SPI و USART و ... عبارت مورد نظر رو هم همراه یک _ قبلش در همین پنجره بنویسید تا بطور خودکار لایببریش فراخوانی بشه .
دو مورد اول یعنی USE_STDPERIPH_DRIVER و STM32F10X_MD همیشه باید نوشته بشه .. و تمام این define ها با یک , (کاما) باید از هم جدا بشه .
ارور مربوط به اینه که لایببری SPI فراخوانی نشده . شاید عبارت SPI_ رو صحیح ننوشتید ..
ممنون مشکل حل شد
حالا اگه بخواییم به جای عدد 170 یه متنو از طریق SPI بفرستیم مثلا R0D4 باید هر کارکتر به صورت جداگانه فرستاده بشه ؟
و سوال دومکد:SPI_I2S_SendData(SPI1, 170); // ersale adade 170=10101010 while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE)== RESET){}
من پایه های آی سی رو به صورت دلخواه به چندتا از پایه های میکرو وصل کردم فقط شماره pin رو در دستور زیر برای MISO , MOSI , CS , CSK عوض کنم درسته ؟
کد://tanzime pinhaye PORTe SPI1: SCK , MISO , MOSI GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; // tanzime pinhaye PORTe SPI1 : NSS GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
ویرایش توسط saeidhp : 10-07-2012 در ساعت 16:13