NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 2070 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
صفحه 3 از 3 نخستنخست 123
نمایش نتایج: از 41 به 56 از 56

موضوع: فیلم های آموزش کار با نرم افزار STM32CubeMX و توابع HAL

  1. #41
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mducati999 نمایش پست ها
    آقا مهدی سلام خسته نباشید
    نقل قول نوشته اصلی توسط mducati999 نمایش پست ها
    یه سوال درباره rtcداشتم
    شما تا حالا از باتری backupاستفاده کردین تو rtc
    الان با همین برنامه ای که از rtcگذاشتین بنده باتری هم گذاشتم
    وقتی برق برد رو قطع و وصل میکنم
    زمان از بین نمیره
    ولی تاریخ صفر میشه
    شما تا حالا اینکارو نکردین ؟میتونید کمکم کنید
    دیتا شیت همون قسمت rtc رو خوندم یه نکته ای در این رابطه گفته
    ولی نمیدونم دقیقا چه جوری با توابع halاین کاررو بکنم و بیت های مربوطه رو ست کنم

    After reset, access to the Backup registers and RTC is disabled and the Backup domain
    (BKP) is protected against possible parasitic write access. To enable access to the Backup
    registers and the RTC, proceed as follows:
    enable the power and backup interface clocks by setting the PWREN and BKPEN bits
    .in the RCC_APB1ENR register
    set the DBP bit the Power Control Register (PWR_CR) to enable access to the Backup
    .registers and RTC
    آقا مهدی تو دیتا شیت گفته تو بیت از دوتا رجیستر مربوط به RCCوPWRباید یک بشن
    ولی initکردنه مربوط به این قسمت ها و ست کردنه اون دوتا بیت و نمیدونم چه کنم
    یه کارایی کردم ولی جواب نگرفتم

    سلام
    ببخشید درگیر هستم و نشد زودتر پاسخی بدهم.
    در مورد استفاده از باطری بک اپ این مدل میکرو در عمل تست نکردم ولی در 1768 به خوبی عمل می کند و در اینجا هم نباید مشکلی باشد. تنظیماتشو سر فرصت در کیوب باید چک کنم ولی مسئله ای که هست اینه که در ابتدای برنامه نبایستی به صورت ثابت مقدار زمان را تنظیم کنید زیرا با هر بار ریست شدن برد مجد همان زمان قرار میگیرد و از ابتدا نمایش زمان انجام می شود. در یک روتین جدایی این تنظیم زمان ولیه باید انجام شود و در برنامه صلی هر چه بد نمایش دهد. زیرا با وجود باتری پشتیبان با قطع برق زمان داخل rtc باقی می ماند.

  2. تشکرها از این نوشته :


  3. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  4. #42
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mducati999 نمایش پست ها
    یه برد ازstm32f746دارم همین کانفیگ و برای اون انجام دادم
    ولی اون درسته برق و که قطع و وصل میکنم نه زمان میپره و نه تاریخ
    نمیدونم چرا برا f103داره اینجوری میشه
    نمیشه گفت چون اون میکرو درست انجام میشه این مدل هم باید بشه چون تفاوت هایی هست :
    -------------------
    در صورتی که با نوعی از میکرو کار کرده اید و برای کاری نیاز شده با مدل دیگری کار کنید ممکن است این دیدگاه را داشته باشید که هر دوی اینها از یک شرکت هستند، پس تنظیمات مثل هم است. موقعی متوجه این دیدگاه اشتباه می شوید که تنظیمی را عینا بدون دیدن منوال میکرو از مدل دیگر کپی کرده اید و وقت زیادی هم صرف شده که چرا کار نمی کند . با خود می گویید مگر در مدل دیگر کار نمی کرد پس اینجا هم باید کار کند! غافل از اینکه ممکن است حتی در یک بیت اختلاف تنظیم وجود داشته باشد یا اختلاف اساسی تر باشد.
    تفاوت هایی بین lpc1768 و lpc1788 هست. همچنین بین سری های STM32 (STM32F0,STM32F1 ..)
    وقتی هدری که ابتدا include می کنید عوض شود وجود تفاوت هایی را بایستی مد نظر قرار داد. در هر صورت رفرنس، یورز منوال یا رفرنس منوال همان سری می باشد.
    Telegram: Contact @armeducation
    -------------------
    سمپل rtc برای مدل 103ve کار می کنه ولی ظاهرا برای سری 103rb مشکل داشت بایستی یک تنظیمی در آن اعمال می شد. یا اینکه برد 103rb اسیلاتورش مشکل داشت که آن موقع که تست کردم کار نکرد. بعد دیگه فرصت بررسی این مورد مشاهده شده نبود.

  5. تشکرها از این نوشته :


  6. #43
    کاربر فعال
    تاریخ عضویت
    Dec 2007
    نوشته ها
    113
    تشکر
    92
    تشکر شده 78 بار در 59 پست

    پیش فرض

    جناب مهندس:
    با توجه به عکس اولی که لینک دادم؛ شما داخل عکس دوم به عدد 10هرتز می رسین اما شما داخل فیلم میگین 10ثانیه!
    کدوم درسته؟


    اینم عکس از فیلم شما:


  7. تشکرها از این نوشته :


  8. #44
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    سلام بله درست می فرمایید این را بایستی از لحاظ زمانی می گفتم 10 هرتز یا 0.1 ثانیه . اگر Autoreload را 10000 می گذاشتیم میشد 1 هرتز و یا 1 ثانیه .
    معکوس گفته شده. یعنی جای هرتز و ثانیه جابجا گفتم که اینها معکوس هم اند.

  9. #45
    کاربر علاقه مند
    تاریخ عضویت
    Oct 2014
    نوشته ها
    33
    تشکر
    24
    تشکر شده 19 بار در 13 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mzarkoob نمایش پست ها
    نمیشه گفت چون اون میکرو درست انجام میشه این مدل هم باید بشه چون تفاوت هایی هست :
    -------------------
    در صورتی که با نوعی از میکرو کار کرده اید و برای کاری نیاز شده با مدل دیگری کار کنید ممکن است این دیدگاه را داشته باشید که هر دوی اینها از یک شرکت هستند، پس تنظیمات مثل هم است. موقعی متوجه این دیدگاه اشتباه می شوید که تنظیمی را عینا بدون دیدن منوال میکرو از مدل دیگر کپی کرده اید و وقت زیادی هم صرف شده که چرا کار نمی کند . با خود می گویید مگر در مدل دیگر کار نمی کرد پس اینجا هم باید کار کند! غافل از اینکه ممکن است حتی در یک بیت اختلاف تنظیم وجود داشته باشد یا اختلاف اساسی تر باشد.
    تفاوت هایی بین lpc1768 و lpc1788 هست. همچنین بین سری های STM32 (STM32F0,STM32F1 ..)
    وقتی هدری که ابتدا include می کنید عوض شود وجود تفاوت هایی را بایستی مد نظر قرار داد. در هر صورت رفرنس، یورز منوال یا رفرنس منوال همان سری می باشد.
    Telegram: Contact @armeducation
    -------------------
    سمپل rtc برای مدل 103ve کار می کنه ولی ظاهرا برای سری 103rb مشکل داشت بایستی یک تنظیمی در آن اعمال می شد. یا اینکه برد 103rb اسیلاتورش مشکل داشت که آن موقع که تست کردم کار نکرد. بعد دیگه فرصت بررسی این مورد مشاهده شده نبود.
    سلام آقا مهدی سال نو رو بهتون تبریک میگم امیدوارم سال خوبی داشته باشید
    مجددا بابت زحماتی که میکشید تشکر میکنم
    در مورد سوالی که پرسیده بودم لازم بود یه توضیح مختصری بدم
    مشکل دقیقا همون تفاوت هایی که وجود داره بین مدل های مختلف یه میکرو
    همون نکته ای که خودتون به قشنگی توضیح دادین
    بنده به دیتاشیت هر دو مدل میکرو رجوع کردم هم F103وهمF746درمورد F746توضیح داده شده بود که یک تقویم کامل در خودش داره مثلا یه آی سی DS1307داخله 746وجود داره که بغیر از رجیسترهای نگه داشتنه زمان
    تاریخ رو هم درون خودش نگه میداره و با تنظیم اولیه حتی با قطع برق نه زمان و نه تاریخ از بین نمیره
    ولی در موردF103فقط با قطع برق زمان حفظ میشه در واقع F103داخله خودش تقویم نداره و فقط زمان رو برای 24ساعت حفظ میکنه
    واگه شما احتیاج به تقویم دارید باید از آی سی های مورد نظر استفاده کنید تا در صورت قطع برق حتی تا چند روز هم زمان و هم تاریخ حفظ بشه
    مجددا از توضیحات آقا مهدی تشکر میکنم

  10. تشکرها از این نوشته :


  11. #46
    همکار علمی sarbaz13 آواتار ها
    تاریخ عضویت
    Mar 2011
    نام
    محمد قاسمی
    نوشته ها
    410
    تشکر
    995
    تشکر شده 425 بار در 230 پست

    پیش فرض

    با سلام
    من طبق فیلم های اموزشی می خواستم دستورات at command رو با یوزارت 6 میکرو stm32f4 ارسال کنم به
    یک ماژول بلوتوث که قبلا با ماژول سریال دستورات رو براش ارسال کردم واوکی بوده عکسش رو پیوست میکنم
    بعد اومد با کیوب تنظیمات و من جمله باد ریت و بقیه موارد رو هم تنظیم کردم و دستور زیر رو هم نوشتم که دستور At رو ارسال کنم
    از میکرو به ماژول بلوتوث
    HAL_UART_Transmit(&huart3,(uint8_t *)buffertr,4,10);
    HAL_UART_Receive(&huart6,bufferrc, 2, -1);
    که متغییر بافر خودم رو هم طبق زیر در بالای برنامه تعریف کردم
    char* buffertr="AT\n\r";
    uint8_t bufferrc[10];
    بعد که نتیجه رو توی دیباگ میبینم
    همون at رو بر میگردونه ماژول
    این مورد رو یک بار با ماژول سریال و ماژول بلوتوث توی برنامه hercules هم تست کردم همین مشکل بود
    ولی توی برنامه هایپترمینال اینجور نیست
    که من فکر کنم دیتای که میره به عنوان کاراکتر نمیره
    که اگر میرفت ok رو بر میگردوند و باید با printf انگار باید فرستاد.
    برنامه و عکس رو میفرستم .مشکل کجاست
    البته من توی pdf خود ماژول هم نگاه کردم مثلا مثل ماژول Sim900یا 800 هم نیست که بخواد <cr> , <lf> هم داشته باشه
    شرکت Time Owner

  12. #47
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    نقل قول نوشته اصلی توسط sarbaz13 نمایش پست ها
    با سلام
    من طبق فیلم های اموزشی می خواستم دستورات at command رو با یوزارت 6 میکرو stm32f4 ارسال کنم به
    یک ماژول بلوتوث که قبلا با ماژول سریال دستورات رو براش ارسال کردم واوکی بوده عکسش رو پیوست میکنم
    بعد اومد با کیوب تنظیمات و من جمله باد ریت و بقیه موارد رو هم تنظیم کردم و دستور زیر رو هم نوشتم که دستور At رو ارسال کنم
    از میکرو به ماژول بلوتوث
    HAL_UART_Transmit(&huart3,(uint8_t *)buffertr,4,10);
    HAL_UART_Receive(&huart6,bufferrc, 2, -1);
    که متغییر بافر خودم رو هم طبق زیر در بالای برنامه تعریف کردم
    char* buffertr="AT\n\r";
    uint8_t bufferrc[10];
    بعد که نتیجه رو توی دیباگ میبینم
    همون at رو بر میگردونه ماژول
    این مورد رو یک بار با ماژول سریال و ماژول بلوتوث توی برنامه hercules هم تست کردم همین مشکل بود
    ولی توی برنامه هایپترمینال اینجور نیست
    که من فکر کنم دیتای که میره به عنوان کاراکتر نمیره
    که اگر میرفت ok رو بر میگردوند و باید با printf انگار باید فرستاد.
    برنامه و عکس رو میفرستم .مشکل کجاست
    البته من توی pdf خود ماژول هم نگاه کردم مثلا مثل ماژول Sim900یا 800 هم نیست که بخواد <cr> , <lf> هم داشته باشه
    وقتی دارید با هایپرترمینال ارسال می کنید و ماژول جواب میده و بعد با میکرو میفرستید و جواب نمیده مسلم است دستوری که از میکرو فرستادید درست یا کامل نیست. شما اون اینتری که در هایپر ترمینال میزنید باید همون را در میکرو بفرستید نه چیز اضافه تری
    بین r\ و n\ تفاوت هست و گاهی جابجا استفاده میشه.
    شما می تونی از ترمینال کامپیوتر همزمان با برای شنود استفاده کنی. البته باید اتصالات درست وصل کنی. یک حالتی بود یادمه نیست دقیق مشترک وصل بکنی ماژول کار نمی کنه.

  13. تشکرها از این نوشته :


  14. #48
    همکار علمی sarbaz13 آواتار ها
    تاریخ عضویت
    Mar 2011
    نام
    محمد قاسمی
    نوشته ها
    410
    تشکر
    995
    تشکر شده 425 بار در 230 پست

    پیش فرض

    با عرض سلام و خسته نباشید
    توی یک برنامه 2 تا یوارت استفاده شده و قسمت Printf هم برای اون تعریف شده
    ولی مشکل اینجاست برای ارسال دیتا با Printf بین دو تا یوارت باید سوئیچ بشه
    حالا تا حالا کسی تونسته این مشکل رو حل کنه ؟
    که توی یک برنامه که 2 تا یوارت هست بتونه با دستوری دیتای که با printf ارسال میشه
    رو بین دو تا یوارت استفاده شده سوئیپ کنه ؟
    مهندس زرکوب شما برای مورد کدی هست قبلا استفاده کرده باشن
    شرکت Time Owner

  15. #49
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    سلام
    خیر این کارو نکردم
    با sprintf گذاشتم در یک رشته و قرار دادم در سریال مربوطه
    ولی اگر بخواهید با printf انجام بدهید لابد در توابع stdio هم باید دست ببرید و ....

  16. کاربران : 2 تشکر کرده اند از شما mzarkoob برای ارسال این پست سودمند:


  17. #50
    کاربر علاقه مند
    تاریخ عضویت
    Oct 2014
    نوشته ها
    33
    تشکر
    24
    تشکر شده 19 بار در 13 پست

    پیش فرض

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

    استفاده از printf در برنامه
    به صورت معمول می توان از توابعی مانند
    USART1_SendString
    و ... برای هر پورت سریال دلخواه استفاده کرد. ولی اگر بخواهید یک متن و متغییری را با هم بر روی یک پورت سریال مشخص، ارسال کنید ساده تر است از توابع stdio استفاده شود. به این ترتیب با تنظیماتی که از قبل اعمال شده این کار انجام می شود:
    printf("your string %i %f",i,f);
    در این حالت متن و متغییرهای مورد نظر صرفا روی پورت سریالی که از قبل تعریف شده قرار می گیرد.
    اگر بخواهید از چند پورت سریال استفاده شود با استفاده از sprintf می توان متن و متغیر را در یک رشته قرار داد و در تابع ارسال سریال استفاده کرد:
    sprintf(s,"your string %i %f",i,f);
    USART1_SendString(s);

  18. کاربران : 3 تشکر کرده اند از شما mducati999 برای ارسال این پست سودمند:


  19. #51
    همکار علمی sarbaz13 آواتار ها
    تاریخ عضویت
    Mar 2011
    نام
    محمد قاسمی
    نوشته ها
    410
    تشکر
    995
    تشکر شده 425 بار در 230 پست

    پیش فرض

    با عرض سلام و خسته نباشید .
    یک برنامه نوشتم که بیاد یک ارایه از نوع int8_t که 8 تا خونه داره رو اراسل کنه به پورت سریال 1 میکروی STM32F407VGT
    اول اومدم با کیوب مکس کد رو نوشتم جواب گرفتم
    بعد کد رو با SPL نوشتم روی بعضی از عدد هگز ها انگار مشکل داره و نمیتونه درست ارسال کنه
    من عکس دوتا کد و نتیجه اونها رو همرا ه با فایل زمینه میزارم اگر مهندسان مشکل رو پیدا کردند بگن ممنون میشم .


    اینم متغیرهای که تعریف شده
    کد:
    char str[1];
       int8_t buffer_data[8] = {0x7E,0xFF,0x06,0x0F,0x00,0x01,0x09,0xEF};
    USART(SPL).rar
    main.rar
    به علت حجم بالای کد کیوب مکس مجبور شدم فقط فایل MAIN اونو اپلود کنم .
    شرکت Time Owner

  20. #52
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    سلام
    مثالها چک نکردم ولی االن ایراد اینکه که می خواهید از spl استفاده کنید و درست کار نمی کنه؟
    داخل تابع ارسال سریالتان با spl حتما مشکلی هست که این طوری داره عمل می کنه.
    وگر نه با کیوب درست میفرسته و دلیلی نداره عددی که در تابع سریال گذاشتید نفرسته.
    با رجیستری که ساده تر می تونید یک تابع ارسال داشته باشید.

  21. تشکرها از این نوشته :


  22. #53
    همکار علمی sarbaz13 آواتار ها
    تاریخ عضویت
    Mar 2011
    نام
    محمد قاسمی
    نوشته ها
    410
    تشکر
    995
    تشکر شده 425 بار در 230 پست

    پیش فرض

    مهندس با تابعی که خودم نوشتم
    تونستم هر کارکتری رو که بگی ارسال کنم فقط اینجا این مشکل هست که
    الان باید به صورت هگز بفرستم به پورت سریال که اومدم کدها رو با SPRINTF تبدیل به کارکتر کردم و ارسال کردم به پورت سریال
    الان دیباگ هم که کردم دیدم یک قسمت از کدها کتابخونه SPL خودش میاد ریجیستر DR رو اند میکنه با یک مقداری
    متوجه نشدم الان من معادل اسکی هر کد هگز رو میفرسته فقط یک جای که هست اینکه بعد از خونه 6 که 0X08 هست رو میفرسته بعدش باید 0XEF رو بفرستته
    اینو میفرسته ولی جوری هست که جای کد هگز 0XFF می افته
    خروجی هر دو کد رو من توی عکس زیر توی تزمینال میزارم ببینید
    ویرایش توسط sarbaz13 : 28-07-2018 در ساعت 13:57
    شرکت Time Owner

  23. #54
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    به صورت ساده از تابع :
    SendChar
    که استفاده کنید هر عددی بین 0 تا 255 را باید بفرسته و در کامپیوتر هم در نرم افزار ترمینال به جای اینکه تنطیمات روی دریافت کاراکتر بکنید(ascii) بذارید روی HEX و همون عدد را بایید ببنید.

  24. تشکرها از این نوشته :


  25. #55
    همکار علمی sarbaz13 آواتار ها
    تاریخ عضویت
    Mar 2011
    نام
    محمد قاسمی
    نوشته ها
    410
    تشکر
    995
    تشکر شده 425 بار در 230 پست

    پیش فرض

    مهندس این تابع رو من ندارم که شما گفتین توی کتابخونه uart هم نیستش
    این تابع توی کدوم کتابخونه هستش ؟
    چون تنها تابع ارسال توی کتابخونه uart همون
    void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
    هستش که ورودی ونم به صورت اینتیجر هستش در وصورتی که من ورودیم به صورت هگز هست یا به صورت کاراکتر
    شرکت Time Owner

  26. #56

صفحه 3 از 3 نخستنخست 123

موضوعات مشابه

  1. RTOS STM32CubeMX
    توسط jonbakhsh در انجمن stm32
    پاسخ: 1
    آخرين نوشته: 11-08-2017, 22:33
  2. پاسخ: 4
    آخرين نوشته: 20-10-2016, 21:29
  3. آموزش ساخت پروژه با توابع cmsis
    توسط Doloop در انجمن stm32
    پاسخ: 28
    آخرين نوشته: 19-07-2016, 19:17
  4. پاسخ: 1
    آخرين نوشته: 23-06-2016, 18:21
  5. آموزش mmc به روش سکتوری
    توسط mehdi_nxp در انجمن AVR
    پاسخ: 3
    آخرين نوشته: 17-08-2012, 02:15

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •