NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 2698 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید

نمایش نتیجه های نظرسنجی ها: چگونه STM32 را ياد بگيريم؟

رأی دهندگان
263. شما نمی توانید در این نظرسنجی رای دهید.
  • سطحي و كار راه انداز

    20 7.60%
  • دقيق و حرفه اي

    243 92.40%
صفحه 57 از 58 نخستنخست ... 7383940414243444546474849505152535455565758 آخرینآخرین
نمایش نتایج: از 1,121 به 1,140 از 1155

موضوع: شروع آموزش stm32 بر پایه برد سفارشی

  1. #1121
    کاربر فعال
    تاریخ عضویت
    Jan 2014
    نوشته ها
    124
    تشکر
    116
    تشکر شده 46 بار در 31 پست

    پیش فرض

    نقل قول نوشته اصلی توسط sigma-mx نمایش پست ها
    برد آموزشی استفاده کردی یا خودت pcb زدی ؟ اگه برد آموزشیه آیا نند فلش یا رم اکسترنال داره ؟
    سلام
    برد اموزشی همین شرکته و نه نند فلش داره و نه رم اکسترنال
    یه میکرو خالیه
    همین

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #1122
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    خب به این خاطر گفتم چون نند یا رم اکسترنال از واحد fsmc استفاده میکنه و یکسری از پینهای پورت g کاربرد برای fsmc دارند پس حتما به نند هم متصلند . شاید تداخل داره ! از پینهای دیگه استفاده کن . و همیشه یادت باشه شماتیک بردت رو داشته باشی وقتی باهاش برنامه مینویسی اگه همراهش نبود شماتیک ، خودت مهندسی معکوس کن ، سخت نیست.

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


  5. #1123
    عضو جدید
    تاریخ عضویت
    Jul 2014
    نوشته ها
    9
    تشکر
    4
    تشکر شده 1 بار در 1 پست

    پیش فرض

    سلام به همه دوستان.می خواستم بدونم چطوری میتونم زمان تایمر رو محاسبه کنم مثلا زمان 10میلی ثانیه رو بدست بیارم؟
    TIM_TimeBaseInitTypeDef TIM_InitStructure;
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE) ;

    TIM_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
    TIM_InitStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_InitStructure.TIM_Period = 1000;
    TIM_InitStructure.TIM_Prescaler = 1;
    TIM_TimeBaseInit(TIM3,&TIM_InitStructure);


    TIM_Cmd(TIM3,ENABLE);
    NVIC_SetPriority(TIM3_IRQn,0);
    NVIC_EnableIRQ(TIM3_IRQn);
    TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
    (stm32f030)
    یک سئوال دیگه هم داشتم چطوری میتونم میکرو رو قفل کنم تا hex و از رو میکرو نشه برداشت
    ممنون.

  6. #1124
    کاربر فعال
    تاریخ عضویت
    Feb 2012
    نام
    مصطفی
    نوشته ها
    273
    تشکر
    195
    تشکر شده 128 بار در 93 پست

    پیش فرض

    سلام
    زمان تایمر رو باید بر حسب فرکانس کار میکرو حساب کنی.
    مثلا اگه داری با 24MHZ کار میکنی 10ms رو میتونی به روش زیر بدست بیاری.
    TIM_InitStructure.TIM_Period=10000;
    TIM_InitStructure.TIM_Prescaler=23;
    برای قفل کردن میکرو هم باید توی Option Bytes گزینه Read out protection رو فعال کنی.

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


  8. #1125
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    معمولا سه سطح 0 و 1 و2 داره . سطح 0 همون Unlock هست . سطح 1 ، همون چیزیه که شما میخوای یعنی Read Out Protection و سطح 2 ، باید حواستون خیلی جمع باشه اشتباهی نزنید که غیر قابل بازگشته ! یعنی فیوزبیت های میکرو با آخرین کانفیگ میسوزه و دیگه باز نمیشه ! یعنی نه erase میشه نه پروگرام و فقط آخرین برنامه رو اجرا میکنه . ولی سطح 1 بزاری در مقابل خوندن محافظت شده هست اگه بخوای تغییر بدی برنامه رو میبری سطح 0 همچی پاک میشه و مثل روز اول .. با stlink utility این کار راحتتره ...

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


  10. #1126
    عضو جدید
    تاریخ عضویت
    Jul 2014
    نوشته ها
    9
    تشکر
    4
    تشکر شده 1 بار در 1 پست

    پیش فرض

    سلام به همه دوستان ممنون از راهنمایی های ارزشمندتون .
    اگه میشه (((فرمول))) محاسبه زمان تایمر رو بگید
    .(فرکانس ۴۸mhzهستش).

    ممنون.

    TIM_InitStructure.TIM_Period=10000;
    TIM_InitStructure.TIM_Prescaler=23;



  11. #1127
    کاربر فعال
    تاریخ عضویت
    Feb 2012
    نام
    مصطفی
    نوشته ها
    273
    تشکر
    195
    تشکر شده 128 بار در 93 پست

    پیش فرض

    نقل قول نوشته اصلی توسط naeb نمایش پست ها
    سلام به همه دوستان ممنون از راهنمایی های ارزشمندتون .
    اگه میشه (((فرمول))) محاسبه زمان تایمر رو بگید
    .(فرکانس ۴۸mhzهستش).

    ممنون.

    TIM_InitStructure.TIM_Period=10000;
    TIM_InitStructure.TIM_Prescaler=23;


    سلام


    (TIM_Prescaler+1) * TIM_Period /Frequency


    که فرکانس تو مورد شما 48MHz هست.
    ویرایش توسط mstkmn : 23-08-2015 در ساعت 09:33

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


  13. #1128
    کاربر فعال
    تاریخ عضویت
    Jan 2014
    نوشته ها
    124
    تشکر
    116
    تشکر شده 46 بار در 31 پست

    پیش فرض

    از پین 0 تا 15 همین پرت استفاده میکنم در مد 16 بیتی
    برا مد 8 پین از کدام پاییه های ال سی دی باید استفاده کرد ؟
    دیتا شت میگه d8 تا d15
    درسته؟

    مینی برد STM32F103ZET6
    ویرایش توسط Hadi_ghr_e : 23-08-2015 در ساعت 19:01

  14. #1129
    کاربر فعال
    تاریخ عضویت
    Jan 2014
    نوشته ها
    124
    تشکر
    116
    تشکر شده 46 بار در 31 پست

    پیش فرض

    سلام
    روز بخیر
    از دوستان کسی فرصت راهنمایی رو نداشت؟
    هنوز نتونستم رو مد 8 بیتی و با پاییه های g0-7 ال سی دی n96 رو راه اندازی کنم

  15. #1130
    عضو جدید
    تاریخ عضویت
    Jul 2014
    نوشته ها
    9
    تشکر
    4
    تشکر شده 1 بار در 1 پست

    پیش فرض

    سلام به همه دوستان .من یک برنامه pwm ساده نوشتم که نور یک led رو کنترل کنم برنامم به خوبی کار میکنه و میتونم نور led رو کنترل کنم اما نمتونم بعد از پیکر بندی timer وpwm ومقدار دادن به TIM_Pulse،مقدار TIM_Pulse رو تو برنامم تغییر بدم که میزان نور رو نسبت به یک پارامتر تغییر بدم.چطوری میتونم مقدارش رو تغییر بدم؟
    #include "stm32f10x.h"
    #include "stm32f10x_gpio.h"
    #include "lcd4bit.h"
    #include "stm32f10x_tim.h"
    #include "delay.h"


    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    TIM_OCInitTypeDef TIM_OCInitStructure;
    GPIO_InitTypeDef GPIO_initStructure;


    uint16_t CCR1_Val = 10;
    uint16_t PrescalerValue = 0;


    void RCC_Configuration(void)
    { /* TIM3 clock enable */
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
    /* GPIOA and GPIOB clock enable */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_AP B2Periph_AFIO, ENABLE);
    }


    void GPIO_Configuration(void)
    {
    GPIO_initStructure.GPIO_Pin = GPIO_Pin_6;
    GPIO_initStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_initStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_initStructure);
    }


    void TIMER_Configuration (void)
    {
    CCR1_Val=CCR1_Val*6.65;


    PrescalerValue = (uint16_t) (SystemCoreClock / 24000000) - 1;
    TIM_TimeBaseStructure.TIM_Period = 665;//* Time base configuration *
    TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue;
    TIM_TimeBaseStructure.TIM_ClockDivision = 0;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);


    /* PWM1 Mode configuration: Channel1 */
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    TIM_OCInitStructure.TIM_Pulse = CCR1_Val;
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
    TIM_OC1Init(TIM3, &TIM_OCInitStructure);


    TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);


    TIM_ARRPreloadConfig(TIM3, ENABLE);
    TIM_Cmd(TIM3, ENABLE);
    }


    int main(void)
    {
    RCC_Configuration();
    GPIO_Configuration();
    TIMER_Configuration();
    delay_init(72);
    lcd_init();

    while (1)
    {
    CCR1_Val++;
    TIM_OCInitStructure.TIM_Pulse = CCR1_Val;
    delay_ms(200);

    if(CCR1_Val>100)
    CCR1_Val=0;

    }
    }
    ویرایش توسط naeb : 25-08-2015 در ساعت 19:25

  16. #1131
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    هنوز نتونستم رو مد 8 بیتی و با پاییه های g0-7 ال سی دی n96 رو راه اندازی کنم
    مگه قبلا نگفتی با پینهای G8 تا G15 می خوای کار کنی ؟! الان میگی 0 تا 7 !!

    برای 8 تا 15 ،اینم یه امتحان کن:

    کد:
      GPIOG->BRR  = 0xff00;
      GPIOG->BSRR = data<<8;
    ضمنا برای اطمینان میگم . برای کار تو مد 8 بیتی باید :
    1- از پینهای DB10 تا DB17 استفاده بشه.
    2- مد ال سی دی باید روی 8 بیت تنظیم بشه . توسط Hi کردن پین IM0 .
    ویرایش توسط sigma-mx : 25-08-2015 در ساعت 21:32

  17. کاربران : 2 تشکر کرده اند از شما sigma-mx برای ارسال این پست سودمند:


  18. #1132
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2012
    نام
    Asa
    نوشته ها
    90
    تشکر
    148
    تشکر شده 30 بار در 23 پست

    پیش فرض

    مقدار TIM_Pulse رو تو برنامم تغییر بدم که میزان نور رو نسبت
    منظورتون از TIM_pulse چی هست ؟ شما داررید مقدار pwm رو تغییر میدید و درست کار میکنه !!

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

    پیش فرض

    نقل قول نوشته اصلی توسط naeb نمایش پست ها
    سلام به همه دوستان .من یک برنامه pwm ساده نوشتم که نور یک led رو کنترل کنم برنامم به خوبی کار میکنه و میتونم نور led رو کنترل کنم اما نمتونم بعد از پیکر بندی timer وpwm ومقدار دادن به TIM_Pulse،مقدار TIM_Pulse رو تو برنامم تغییر بدم که میزان نور رو نسبت به یک پارامتر تغییر بدم.چطوری میتونم مقدارش رو تغییر بدم؟
    #include "stm32f10x.h"
    #include "stm32f10x_gpio.h"
    #include "lcd4bit.h"
    #include "stm32f10x_tim.h"
    #include "delay.h"


    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    TIM_OCInitTypeDef TIM_OCInitStructure;
    GPIO_InitTypeDef GPIO_initStructure;


    uint16_t CCR1_Val = 10;
    uint16_t PrescalerValue = 0;


    void RCC_Configuration(void)
    { /* TIM3 clock enable */
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
    /* GPIOA and GPIOB clock enable */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_AP B2Periph_AFIO, ENABLE);
    }


    void GPIO_Configuration(void)
    {
    GPIO_initStructure.GPIO_Pin = GPIO_Pin_6;
    GPIO_initStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_initStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_initStructure);
    }


    void TIMER_Configuration (void)
    {
    CCR1_Val=CCR1_Val*6.65;


    PrescalerValue = (uint16_t) (SystemCoreClock / 24000000) - 1;
    TIM_TimeBaseStructure.TIM_Period = 665;//* Time base configuration *
    TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue;
    TIM_TimeBaseStructure.TIM_ClockDivision = 0;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);


    /* PWM1 Mode configuration: Channel1 */
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    TIM_OCInitStructure.TIM_Pulse = CCR1_Val;
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
    TIM_OC1Init(TIM3, &TIM_OCInitStructure);


    TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);


    TIM_ARRPreloadConfig(TIM3, ENABLE);
    TIM_Cmd(TIM3, ENABLE);
    }


    int main(void)
    {
    RCC_Configuration();
    GPIO_Configuration();
    TIMER_Configuration();
    delay_init(72);
    lcd_init();

    while (1)
    {
    CCR1_Val++;
    TIM_OCInitStructure.TIM_Pulse = CCR1_Val;
    delay_ms(200);

    if(CCR1_Val>100)
    CCR1_Val=0;

    }
    }
    سلام
    زیاد مطمئن نیستم اما شما اومدین به متغییر، یه عددی نسبت دادین نه به تایمر!!
    اگه اینجوری که نوشتین درست باشه (که فکر نمی کنم) باید بعد از اون این ساختار به تایمر اعمال بشه با دستوری شبیه این:
    TIM_OC1Init(TIM3, &TIM_OCInitStructure);
    بهتره داخل تابع بالا رو ببینید. معمولا می تونید با نگاه کردن به نحوه مقدار دهی رجیستر ها، خودتون اون مقدار لازمو مستقیم اعمال کنید.

  20. #1134
    کاربر فعال
    تاریخ عضویت
    Jan 2014
    نوشته ها
    124
    تشکر
    116
    تشکر شده 46 بار در 31 پست

    پیش فرض

    نقل قول نوشته اصلی توسط sigma-mx نمایش پست ها
    مگه قبلا نگفتی با پینهای G8 تا G15 می خوای کار کنی ؟! الان میگی 0 تا 7 !!

    برای 8 تا 15 ،اینم یه امتحان کن:

    کد:
      GPIOG->BRR  = 0xff00;
      GPIOG->BSRR = data<<8;
    ضمنا برای اطمینان میگم . برای کار تو مد 8 بیتی باید :
    1- از پینهای DB10 تا DB17 استفاده بشه.
    2- مد ال سی دی باید روی 8 بیت تنظیم بشه . توسط Hi کردن پین IM0 .

    سلام
    روز همگی بخیر
    عصبانی نشو مهندس
    ممنون که وقت میگذاری
    از db10-db17 استفاده کردم
    با G0-7
    مشکل سخت افزاری بود
    اول باید به IM0 مقدار 1 میدادم بعد ال سی دی رو اینشیال میکردم که برعکس عمل کرده بودم
    بازم ممنون که وقت گذاشتی
    روز خوش

  21. #1135
    کاربر علاقه مند
    تاریخ عضویت
    May 2014
    نوشته ها
    20
    تشکر
    7
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام
    من موفق به راه اندازی spi شدم در واقع مشکل روی تنظیمات jlink در نرم افزار keil بود. حالا میخام از چیپ w5100 که یک رابط اترنت هست استفاده کنم که از طریق spi به میکرو وصل شده.
    میخاستم بدونم چطور میشه از طریق spi رجیسترهای این چیپ رو مقدار دهی کرد و با چه دستوری؟
    ممنون.

  22. #1136
    تازه وارد
    تاریخ عضویت
    Aug 2015
    نوشته ها
    3
    تشکر
    6
    تشکر شده 0 بار در 0 پست

    پیش فرض

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

  23. #1137
    تازه وارد
    تاریخ عضویت
    Aug 2015
    نوشته ها
    3
    تشکر
    6
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام دوستان.
    کسی تا بحال adc رو بیشتر از یک کانال با dma تست گرفته و نتیجه بگیره؟

  24. #1138
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2012
    نام
    Asa
    نوشته ها
    90
    تشکر
    148
    تشکر شده 30 بار در 23 پست

    پیش فرض

    وقت بخیر

    با dma بهتر و راحت تر هست !! چون که نتیجه تبدیل در یک رجیستر ریخته میشه و بعد از تبدیل باید فوری برش داری در غیر این صورت با نتیجه بعدی پر میشه !! یا dma خودش نتایج رو برمیداره !! و جالبتر این که میتونی چند نمونه برداری رو خود کار بدون دخالت cpu انجام بدی ! من تست کردم خوب بوده !

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


  26. #1139
    تازه وارد
    تاریخ عضویت
    Aug 2015
    نوشته ها
    3
    تشکر
    6
    تشکر شده 0 بار در 0 پست

    پیش فرض

    نقل قول نوشته اصلی توسط taktrashe نمایش پست ها
    وقت بخیر

    با dma بهتر و راحت تر هست !! چون که نتیجه تبدیل در یک رجیستر ریخته میشه و بعد از تبدیل باید فوری برش داری در غیر این صورت با نتیجه بعدی پر میشه !! یا dma خودش نتایج رو برمیداره !! و جالبتر این که میتونی چند نمونه برداری رو خود کار بدون دخالت cpu انجام بدی ! من تست کردم خوب بوده !
    سلام دوست عزیز.
    ممنون از پاسختون.
    مسلما استفاده از dma در اینجور موارد بسیار عالی هست. خوب بود نمونه کدتون رو هم قرار میدادید که بنده و دیگر دوستان استفاده کنیم.
    البته بنده از موقعی که سوالو پرسیدم تلاش کردم برای راه اندازیش و با کمک گرفتم از مثال cmsis تونستم جواب بگیرم.

  27. #1140
    کاربر فعال
    تاریخ عضویت
    Jul 2007
    نوشته ها
    320
    تشکر
    48
    تشکر شده 39 بار در 33 پست

    پیش فرض

    نقل قول نوشته اصلی توسط pooriya نمایش پست ها
    سلام
    اینم راه اندازی lcd گرافیکی با چیپ ks108 با کتابخانه های CMSIS.چیز خاصی نداره جز چندتا نکته:
    1-یک پورت رو می تونین برای وصل به glcd انتخاب کنین
    2-پورت انتخاب شده مورد نظر از پایه های (7....0) به خطوط دیتای glcd به ترتیب از (db0....db7) متصل می شوند مگر با تغییرات جزئی در سورس و بقیه پایه های کنترولی در کتابخانه مورد نظر به صورت دستی تعیین می شوند
    در ایم مثال glcd به porta متصل است.

    کامپایلر:iar
    خیلی قدیمیه ولی من لایبری ks108 رو ندیدم توش

صفحه 57 از 58 نخستنخست ... 7383940414243444546474849505152535455565758 آخرینآخرین

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

  1. پاسخ: 515
    آخرين نوشته: 09-12-2018, 12:45
  2. پاسخ: 105
    آخرين نوشته: 02-12-2015, 17:33
  3. Stm32 رو چطوری شروع کنم دوستان ...!
    توسط sarab1 در انجمن stm32
    پاسخ: 18
    آخرين نوشته: 11-10-2013, 18:54
  4. پاسخ: 9
    آخرين نوشته: 01-08-2010, 12:53
  5. انتشار قريب‌الوقوع نخستين به‌روزرساني بزرگ ويندوز سون
    توسط arsalan681 در انجمن اخبار کامپیوتر و IT و مسابقات رباتیک
    پاسخ: 0
    آخرين نوشته: 08-06-2010, 12:43

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

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