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

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

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

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

    243 92.40%
صفحه 52 از 58 نخستنخست ... 23334353637383940414243444546474849505152535455565758 آخرینآخرین
نمایش نتایج: از 1,021 به 1,040 از 1155

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

  1. #1021
    کاربر فعال
    تاریخ عضویت
    Mar 2011
    نوشته ها
    131
    تشکر
    38
    تشکر شده 45 بار در 37 پست

    پیش فرض

    درمورد اصرارتون برای اینکه از printf و scanf استفاده کنین تعجب می کنم شما وقتی قرار هست با پورت سریال کار کنین دو تا تابع لازم دارین یکی برای دریافت ویکی برای ارسال حالا تو کتابخانه uart کدویزن این مسئله تعریف شده که این دوتاتابع برا ارسال ودریافت باشه می دونین که هردو از تابع های زبان c هست حالا یا شما باید تو stm تعریف کنی که این دوتا تابع برا ارسال و دریافته ویا از توابع مشابه موجود استفاده کنید

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

  3. #1022
    کاربر فعال
    تاریخ عضویت
    Mar 2012
    نوشته ها
    179
    تشکر
    49
    تشکر شده 9 بار در 7 پست

    پیش فرض

    نقل قول نوشته اصلی توسط hajar1272 نمایش پست ها
    درمورد اصرارتون برای اینکه از printf و scanf استفاده کنین تعجب می کنم شما وقتی قرار هست با پورت سریال کار کنین دو تا تابع لازم دارین یکی برای دریافت ویکی برای ارسال حالا تو کتابخانه uart کدویزن این مسئله تعریف شده که این دوتاتابع برا ارسال ودریافت باشه می دونین که هردو از تابع های زبان c هست حالا یا شما باید تو stm تعریف کنی که این دوتا تابع برا ارسال و دریافته ویا از توابع مشابه موجود استفاده کنید
    میخوام یه متن رو از پورت سریال بگیرم که طولش هم معلوم نیست
    لطفا راهنمایی کنید چطور میتونم اینکار رو انجام بدم

  4. #1023
    کاربر علاقه مند
    تاریخ عضویت
    Jun 2011
    نوشته ها
    72
    تشکر
    80
    تشکر شده 34 بار در 26 پست

    پیش فرض

    سلام.
    یه برنامه تایمر نوشتم.
    اما نمیدونم چرا وقفه سرریز تایمر کار نمیکنه.
    کد:
    #include "stm32f10x.h"
    
    void TIM1_UP_IRQHandler (void) {
    
      if ((TIM1->SR & 0x0001) != 0) {                 // check interrupt source
        TIM1->SR &= ~(1<<0);                          // clear UIF flag
     }
    }
    
    int main(void) {
    
        RCC->APB2ENR=RCC_APB2ENR_IOPBEN | RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPCEN | RCC_APB2ENR_TIM1EN ;     // GPIOA,b,c Enable Clock 
    
    TIM1->CR2=0X100;
    TIM1->PSC=50000;    
    TIM1->ARR=0x7ff;
    TIM1->CR1= TIM_CR1_CEN;        
    TIM1->DIER= TIM_DIER_COMIE | TIM_DIER_TIE | TIM_DIER_UIE | TIM_DIER_CC1IE | TIM_DIER_BIE; //enable interrupt
    
    
    //--------------------------------------------------------------------------------------------------------------------      
         GPIOB->CRL=1;                    
    GPIOB->ODR=0;        ////////////////--------=============================
        while(1){
    
        
        }
    
    }

  5. #1024
    مدير بخش STM32 sadmonew آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    صادق محمدي
    نوشته ها
    2,002
    تشکر
    6,283
    تشکر شده 3,115 بار در 1,408 پست

    پیش فرض

    سلام دوست عزیز
    شما وقفه عمومی تایمر را فعال نکردی.
    تو دستورات cmsis تابعی هست به اسم NVIC_Init، کارش اینه که وقفه عمومی تایمر را فعال میکنه.
    _____________________________________
    _____________________________________

  6. کاربران : 4 تشکر کرده اند از شما sadmonew برای ارسال این پست سودمند:


  7. #1025
    کاربر علاقه مند
    تاریخ عضویت
    Jun 2011
    نوشته ها
    72
    تشکر
    80
    تشکر شده 34 بار در 26 پست

    پیش فرض

    تشکر.
    این وقفه عمومیو بطور مستقیم باید از کجا فعال کنم؟

  8. #1026
    کاربر فعال
    تاریخ عضویت
    Mar 2012
    نوشته ها
    179
    تشکر
    49
    تشکر شده 9 بار در 7 پست

    پیش فرض

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

    برای ارسال و دریافت usart چطور میتونم از dma استفاده کنم ؟
    لطفا یه مثال براش بزارید

  9. #1027
    کاربر فعال rozeh آواتار ها
    تاریخ عضویت
    Mar 2013
    نوشته ها
    198
    تشکر
    27
    تشکر شده 176 بار در 104 پست

    پیش فرض

    نقل قول نوشته اصلی توسط avr_1360 نمایش پست ها
    تشکر.
    این وقفه عمومیو بطور مستقیم باید از کجا فعال کنم؟
    جایی وجود نداره! یه چیزی وجود داره. یه ساختار هست که باید مقدار دهی بکنیش و بعد با تابع اینیشیال ریجسترهاش رو مقدار دهی کنی که با دادن آدرس ساختار به تابع ذکر شده ریجسترهای مقدار دهی خواهند شد. دنبال مثال توی نت یا نمونه مثال های st بگردید و بهشون نگاه کنید. همه چیز رو متوجه میشید.


    - - - Updated - - -

    نقل قول نوشته اصلی توسط avr_1360 نمایش پست ها
    تشکر.
    این وقفه عمومیو بطور مستقیم باید از کجا فعال کنم؟
    نقل قول نوشته اصلی توسط jik نمایش پست ها
    دوستان لطفا راهنمایی کنید

    برای ارسال و دریافت usart چطور میتونم از dma استفاده کنم ؟
    لطفا یه مثال براش بزارید
    خیلی گسترده هستش. نمیشه به این راحتی توضیح داد.

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


  11. #1028
    کاربر فعال
    تاریخ عضویت
    Mar 2012
    نوشته ها
    179
    تشکر
    49
    تشکر شده 9 بار در 7 پست

    پیش فرض

    نقل قول نوشته اصلی توسط rozeh نمایش پست ها
    - - - Updated - - -

    خیلی گسترده هستش. نمیشه به این راحتی توضیح داد.
    امکانش هست یه مثال بزارید

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

    پیش فرض

    نقل قول نوشته اصلی توسط jik نمایش پست ها
    برای ارسال و دریافت usart چطور میتونم از dma استفاده کنم ؟
    ل
    مبدا را باید پریفرال usart قرار بدهید و مقصد هم ادرس رم. سایز و حجم و .. را هم مشخص کنید و استارت کار
    تا به اندازه مرد نظر کاراکتر اومد یه وقفه میده
    cpu هم این مدت انگار نه انگار که این انتقال دیتا داره انجام میشه به کار خودش میرسه

  13. #1030
    کاربر فعال rozeh آواتار ها
    تاریخ عضویت
    Mar 2013
    نوشته ها
    198
    تشکر
    27
    تشکر شده 176 بار در 104 پست

    پیش فرض

    نقل قول نوشته اصلی توسط jik نمایش پست ها
    امکانش هست یه مثال بزارید
    کتابخونه استاندارد stm32 رو دانلود کنید. توی مثال ها، در بخش usart اتفاقا دو مثال واسه dma داره.

  14. #1031
    کاربر فعال
    تاریخ عضویت
    Mar 2012
    نوشته ها
    179
    تشکر
    49
    تشکر شده 9 بار در 7 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mzarkoob نمایش پست ها
    مبدا را باید پریفرال usart قرار بدهید و مقصد هم ادرس رم. سایز و حجم و .. را هم مشخص کنید و استارت کار
    تا به اندازه مرد نظر کاراکتر اومد یه وقفه میده
    cpu هم این مدت انگار نه انگار که این انتقال دیتا داره انجام میشه به کار خودش میرسه
    امکانش هست یه مثال برای برد سفارشی بزارید
    من نتونستم راش بندازم

  15. #1032
    کاربر فعال pooriya آواتار ها
    تاریخ عضویت
    Nov 2008
    نام
    پوریا علیزاده
    نوشته ها
    316
    تشکر
    163
    تشکر شده 676 بار در 217 پست

    پیش فرض

    با سلام
    کار با واحد DMA مستلزم تسلط خوب یا حداقل نسبی بر روی آن است.خوشبختانه میکروکنترولر های خانواده STM32 منابع و سورس های زیادی در اینترنت دارند.که با کمی جستجو می توانید مثال های خوب و کاربردی پیدا کنید.
    اگر هدف دیدن یه مثال یاهدر راه اندازی می باشد لینک های مثل لینک زیر می تواند مفید باشد
    Forum - UART with DMA mode - STMicroelectronics

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


  17. #1033
    کاربر علاقه مند
    تاریخ عضویت
    Jun 2011
    نوشته ها
    72
    تشکر
    80
    تشکر شده 34 بار در 26 پست

    پیش فرض

    سلام مجدد.
    این برنامه رو برای کپچر نوشتم اما کار نمیکنه.کسی میتونه کمکم کنه
    کد:
    #include "stm32f10x.h"
    char i=0;
    
    void TIM1_CC_IRQHandler (void) {
    
      if ((TIM1->SR & 0x0001) != 0) {                 // check interrupt source
     i=~i;    
            TIM1->SR &= ~(1<<0);                          // clear UIF flag
    
        GPIOB->ODR=i;    
        }
    }
    
    
    
    int main(void) {
    
        RCC->APB2ENR=RCC_APB2ENR_IOPBEN | RCC_APB2ENR_IOPAEN | RCC_APB2ENR_TIM1EN ;//| RCC_APB2ENR_AFIOEN ;     // GPIOA,b,c Enable Clock 
        
        GPIOA->CRH = GPIO_CRH_CNF8_0;    //INPUT FLOAT
         
        TIM1->CCMR1= TIM_CCMR1_IC1F_0 | TIM_CCMR1_IC1F_1 ; //enable cap1
         TIM1->CCER = TIM_CCER_CC2P | TIM_CCER_CC1E;
           TIM1->DIER=  TIM_DIER_CC1IE ; //enable interrupt
    
        TIM1->SMCR = TIM_SMCR_TS_2 | TIM_SMCR_TS_0 | TIM_SMCR_SMS_2;    
        
        TIM1->CCMR1|=TIM_CCMR1_CC1S_0 | TIM_CCMR1_CC2S_1 ;
    TIM1->CR1= TIM_CR1_CEN;//////////////////////////////////////////////////////////////
        
        
      NVIC_EnableIRQ(TIM1_CC_IRQn);//EXTI15_10_IRQn   
        while(1){
    
            
        
        }
    
    }

  18. #1034
    کاربر فعال pooriya آواتار ها
    تاریخ عضویت
    Nov 2008
    نام
    پوریا علیزاده
    نوشته ها
    316
    تشکر
    163
    تشکر شده 676 بار در 217 پست

    پیش فرض

    با سلام
    با توجه به تنظیمات تایمر در مد کپچر که انجام دادید.یک سری از تنظیمات نا درست و ناقص می باشد.لذا پیشنهاد من اینه که با توابع cmsis یک بار راه اندازی و تست کنید در صورت موفقیت با استفاده از تنظیمات رجیستر به صورت دستی انجام دهید.
    یک نمونه مثال config تایمر در مد iput capture با استفاده از توابع STM32F10x_StdPeriph:

    کد:
    /**  ******************************************************************************
      * @file    TIM/InputCapture/main.c 
      * @author  MCD Application Team
      * @version V3.5.0
      * @date    08-April-2011
      * @brief   Main program body
      ******************************************************************************
      * @attention
      *
      * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
      * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
      * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
      * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
      * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
      * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
      *
      * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
      ******************************************************************************
      */ 
    
    /* Includes ------------------------------------------------------------------*/
    #include "stm32f10x.h"
    
    /** @addtogroup STM32F10x_StdPeriph_Examples
      * @{
      */
    
    /** @addtogroup TIM_Input_Capture
      * @{
      */ 
    
    /* Private typedef -----------------------------------------------------------*/
    /* Private define ------------------------------------------------------------*/
    /* Private macro -------------------------------------------------------------*/
    /* Private variables ---------------------------------------------------------*/
    TIM_ICInitTypeDef  TIM_ICInitStructure;
    
    /* Private function prototypes -----------------------------------------------*/
    void RCC_Configuration(void);
    void GPIO_Configuration(void);
    void NVIC_Configuration(void);
    
    /* Private functions ---------------------------------------------------------*/
    
    /**
      * @brief  Main program
      * @param  None
      * @retval None
      */
    int main(void)
    {
      /*!< At this stage the microcontroller clock setting is already configured, 
           this is done through SystemInit() function which is called from startup
           file (startup_stm32f10x_xx.s) before to branch to application main.
           To reconfigure the default setting of SystemInit() function, refer to
           system_stm32f10x.c file
         */     
           
      /* System Clocks Configuration */
      RCC_Configuration();
    
      /* NVIC configuration */
      NVIC_Configuration();
    
      /* Configure the GPIO ports */
      GPIO_Configuration();
    
      /* TIM3 configuration: Input Capture mode ---------------------
         The external signal is connected to TIM3 CH2 pin (PA.07)  
         The Rising edge is used as active edge,
         The TIM3 CCR2 is used to compute the frequency value 
      ------------------------------------------------------------ */
    
      TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;
      TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
      TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
      TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
      TIM_ICInitStructure.TIM_ICFilter = 0x0;
    
      TIM_ICInit(TIM3, &TIM_ICInitStructure);
      
      /* TIM enable counter */
      TIM_Cmd(TIM3, ENABLE);
    
      /* Enable the CC2 Interrupt Request */
      TIM_ITConfig(TIM3, TIM_IT_CC2, ENABLE);
    
      while (1);
    }
    
    /**
      * @brief  Configures the different system clocks.
      * @param  None
      * @retval None
      */
    void RCC_Configuration(void)
    {
      /* TIM3 clock enable */
      RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
    
      /* GPIOA and GPIOB clock enable */
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    }
    
    /**
      * @brief  Configure the GPIOD Pins.
      * @param  None
      * @retval None
      */
    void GPIO_Configuration(void)
    {
      GPIO_InitTypeDef GPIO_InitStructure;
    
      /* TIM3 channel 2 pin (PA.07) configuration */
      GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_7;
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    
      GPIO_Init(GPIOA, &GPIO_InitStructure);
    }
    
    /**
      * @brief  Configure the nested vectored interrupt controller.
      * @param  None
      * @retval None
      */
    void NVIC_Configuration(void)
    {
      NVIC_InitTypeDef NVIC_InitStructure;
    
      /* Enable the TIM3 global Interrupt */
      NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
      NVIC_Init(&NVIC_InitStructure);
    }
    
    #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(uint8_t* file, uint32_t 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) */
    
      while (1)
      {}
    }
    
    #endif
    
    /**
      * @}
      */ 
    
    /**
      * @}
      */ 
     /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/
    ویرایش توسط pooriya : 10-05-2015 در ساعت 22:23

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


  20. #1035
    کاربر علاقه مند
    تاریخ عضویت
    Jun 2011
    نوشته ها
    72
    تشکر
    80
    تشکر شده 34 بار در 26 پست

    پیش فرض

    اقا پوریا تشکر بابت فایل cmsis اما این فایل توی کیل من پر از اروره.
    این فایلو خودت تست زدی؟
    ویرایش توسط avr_1360 : 11-05-2015 در ساعت 02:03

  21. #1036
    کاربر علاقه مند
    تاریخ عضویت
    Jun 2011
    نوشته ها
    72
    تشکر
    80
    تشکر شده 34 بار در 26 پست

    پیش فرض

    اقا کسی میتونه اطلاعاتی در مورد nvic بهم بده و چطوری میشه اونو مقدار دهی کرد.

  22. #1037

  23. #1038
    کاربر فعال
    تاریخ عضویت
    Mar 2011
    نوشته ها
    131
    تشکر
    38
    تشکر شده 45 بار در 37 پست

    پیش فرض

    سلام . من می خوام با ای سی stm32f103ret6 کار کنم ولی یه مشکلی که دارم نمی دونم کدوم پایه اش adc کدوم uart سرچ که می کنم همه user manul ها وdatasheet ها اطلاعات کلی درمورد سری 103 دادن . به اسم pinout و عناوین دیگم که سرچ می کنم چیزی پیدا نکردم شماتیکیم براپروتل پیدا نکردم

  24. #1039

  25. #1040
    کاربر علاقه مند
    تاریخ عضویت
    May 2011
    نام
    احسان باقری
    نوشته ها
    61
    تشکر
    47
    تشکر شده 35 بار در 29 پست

    پیش فرض

    نقل قول نوشته اصلی توسط hajar1272 نمایش پست ها
    سلام . من می خوام با ای سی stm32f103ret6 کار کنم ولی یه مشکلی که دارم نمی دونم کدوم پایه اش adc کدوم uart سرچ که می کنم همه user manul ها وdatasheet ها اطلاعات کلی درمورد سری 103 دادن . به اسم pinout و عناوین دیگم که سرچ می کنم چیزی پیدا نکردم شماتیکیم براپروتل پیدا نکردم
    سلام
    نرم افزار stm32cubemx زو دانلود کن و نصب کن هم میتونی کاربرد پایه ها رو ببینی و هم ابن که پروژه رو باهاش درست کنی تمام تنظیمات رو برات انجام میده و با همه کامپایلر ها سازگار هست
    STM32CubeMX STM32Cube initialization code generator (UM1718) - STMicroelectronics
    ویرایش توسط ehsanbagheri : 23-05-2015 در ساعت 00:38

صفحه 52 از 58 نخستنخست ... 23334353637383940414243444546474849505152535455565758 آخرینآخرین

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

  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

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

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