ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

نمایش نتایج: از 1 به 9 از 9
  1. #1
    2008/10/24
    528
    140

    تعریف ارای و هنگ کردن برنامه stm32f103vet6

    وقت بخیر

    در یک پروزه در کیل 511 که اخیرا تهیه کردم از ماجول های زیر استفاده شده !! وقتی ارای تعریف میکنم ( 4 عضو ) با دانلود پروژه در کنتروللر ! هنگ میکند و اجرا نمیشود !!! بنظرتون مشکل ار کجاست !

    کد:
    #include "stm32f10x_adc.h"
    #include "stm32f10x_dma.h"
    #include "stm32f10x_fsmc.h"
    #include "stm32f10x_gpio.h"
    #include "stm32f10x_rcc.h"
    #include "stm32f10x_tim.h"
    #include "stm32f10x_usart.h"
  2. #2
    2012/06/05
    نورآباد-لرستان
    182
    6

    پاسخ : تعریف ارای و هنگ کردن برنامه stm32f103vet6

    بیشتر توضیح بده!
    راه اندازی enc28j60 و enc424j600 برای RL-TCPnet

    راه اندازیks0108 با emwin

    راه اندازی lcd7 اینچ با داریور داخلی stm32f429
  3. #3
    2008/10/24
    528
    140

    پاسخ : تعریف ارای و هنگ کردن برنامه stm32f103vet6

    وقت بخیر

    ممنون

    برنامه شامل کنتروللر tft 7 و نمایش متغییر هاست و یک تایم اینتراپت با زمان 10 میلی ثانیه که بخوبی کار میکنه !
    به پروژه برنامه adc , dma رو اضافه کردم روی پایه pc0 و adc1 که اونم بخوبی کار میکنه و پایداره !

    برای اصلاح نمونه گیری و متوسط گیری یک آرایه buf[4 تعریف کردم ! وقتی اعضای ارایه رو استفاده میکنم یا حتی مقدار میدم برنامه رو کنتروللر هنگ میکنه و اجرا نمیشه ولی وقتی مقدار دهی اریه رو تو برنامه کامنت کنم برنامه درست کار میکنه !!
    برای تعریق آرایه چیزی باید منظور بشه ! البته کمپایلر هیچ خطایی نمیده !

    کد:
    unsigned char buf[4]={0,0,0,0};
    کد:
    //start of adc init
    
    volatile uint16_t ADCConvertedValue;
    unsigned char buf[4]={0,0,0,0};
    uint16_t AD_value;
    
    #define ADC1_DR_Address  ((uint32_t)0x4001244C) 			//¶¨Òå¶ÔÓ¦µÄADC1µØÖ·
    
    void Init_ADC(void)
    {
    	GPIO_InitTypeDef GPIO_InitStructure;							//¶¨ÒåGPIO³õʼ»¯½á¹¹Ìå
    	ADC_InitTypeDef ADC_InitStructure;								//¶¨ÒåADC³õʼ»¯½á¹¹Ìå
    	DMA_InitTypeDef DMA_InitStructure;								//¶¨ÒåDMA³õʼ»¯½á¹¹Ìå
    
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);			//ʹÄܸ÷¸ö¶Ë¿ÚʱÖÓ£¬ÖØÒª£¡£¡£¡
    	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);	 			//ʹÄÜDMA1ʱÖÓ
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);			//ʹÄÜADC1ʱÖÓ
    		
    //	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;						//½«ÍⲿADÊäÈë¹Ò½Óµ½5Òý½ÅÉÏ
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;						//½«ÍⲿADÊäÈë¹Ò½Óµ½5Òý½ÅÉÏ
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;					//ÉèÖÃPC5Òý½ÅΪģÄâÊäÈë
    	GPIO_Init(GPIOC, &GPIO_InitStructure);							//¸ù¾Ý²ÎÊýÅäÖÃGPIOC¶Ë¿Ú
    
     	DMA_DeInit(DMA1_Channel1);
     	DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;		//¶¨ÒåDMAÍâÉè»ùµØַΪADC1
     	DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADCConvertedValue;	//¶¨ÒåDMAÄÚ´æ»ùµØÖ·
     	DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;				//ÍâÉèADC1×÷ΪÊý¾Ý´«ÊäµÄÀ´Ô´
     	DMA_InitStructure.DMA_BufferSize = 1;							//¶¨ÒåÖ¸¶¨DMAͨµÀµÄDMA»º´æµÄ´óС
     	DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//ÍâÉèµØÖ·¼Ä´æÆ÷²»±ä
     	DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;		//ÄÚ´æµØÖ·¼Ä´æÆ÷²»±ä
     	DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
     	DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
     	DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;					//¹¤×÷ÔÚÑ*»·»º´æģʽ
     	DMA_InitStructure.DMA_Priority = DMA_Priority_High;				//DMAͨµÀ1ÓµÓиßÓÅÏȼ¶
     	DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;					//DMAͨµÀ1ûÓÐÉèÖÃΪÄÚ´æµ½ÄÚ´æ´«Êä
     	DMA_Init(DMA1_Channel1, &DMA_InitStructure);					//¸ù¾Ý²ÎÊý³õʼ»¯DMA¼Ä´æÆ÷
     
     	DMA_Cmd(DMA1_Channel1, ENABLE);									//ʹÄÜDMAͨµÀ1
      
     	ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;				//¶ÀÁ¢¹¤×÷ģʽ
     	ADC_InitStructure.ADC_ScanConvMode = ENABLE;					//ɨÃèģʽ
     	ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;				//Á¬Ðøת»»Ä£Ê½
     	ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
     	ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;			//ÓÒ¶ÔÆë
     	ADC_InitStructure.ADC_NbrOfChannel = 1;							//ÉèÖÃת»»ÐòÁ㤶ÈΪ1
     	ADC_Init(ADC1, &ADC_InitStructure);								//¸ù¾Ý²ÎÊý³õʼ»¯ADC1¼Ä´æÆ÷
    
    // 	ADC_RegularChannelConfig(ADC1,ADC_Channel_15, 1, ADC_SampleTime_55Cycles5);
     	ADC_RegularChannelConfig(ADC1,ADC_Channel_10, 1, ADC_SampleTime_55Cycles5);
    																	//²ÉÑùʱ¼äµÈÓÚ 55.5 ÖÜÆÚ
     	ADC_DMACmd(ADC1, ENABLE);										//ʹÄÜ ADC1 DMA ÇëÇó
     
     	ADC_Cmd(ADC1, ENABLE);											//ʹÄÜADC1
    																	
     	ADC_ResetCalibration(ADC1);										//ÖØÖÃÖ¸¶¨µÄADCµÄУ׼¼Ä´æÆ÷ 
    
     	while(ADC_GetResetCalibrationStatus(ADC1));						//»ñÈ¡ADCÖØÖÃУ׼¼Ä´æÆ÷µÄ״̬
    
     	ADC_StartCalibration(ADC1);										//¿ªÊ¼Ö¸¶¨ADCµÄУ׼״̬
     	while(ADC_GetCalibrationStatus(ADC1));							//»ñÈ¡Ö¸¶¨ADCµÄУ׼״̬
       
     	ADC_SoftwareStartConvCmd(ADC1, ENABLE);							//ʹÄÜADC1Èí¼þת»»
    }
    //end of adc init
    
    
    void TIM2_IRQHandler(void)
    {
    	TIM_ClearITPendingBit(TIM2, TIM_IT_Update);    	//Çå³þÖжϹÒÆðλ
    
     if(--milcnt==0){
     //------------------------------ 
      milcnt=10; //every 100ms
      cnt++;
      LED1=~LED1;				//ÒÔ1SµÄÖÜÆÚÉÁ˸
    
      LCD_ShowChar4(20,12,cnt, YELLOW, BLACK);
    	
    		AD_value=ADC_GetConversionValue(ADC1);
    
    		//	buf[0]=12;	 (کامنت برداشته بشه )
    
    		LCD_Shownum4d2(30,12,AD_value, YELLOW, BLACK);
    		LCD_Showhex4d2(35,12,AD_value, YELLOW, BLACK);
    	
    		if(--seccnt==0){
      //---------------------------------- 
      seccnt=10; //every 1sec
    //  ccc++;
      LED2 =~LED2;									//ÒÔ0.5ÃëµÃÖÜÆÚÉÁ˸
    
     } 
     } 
    }
  4. #4
    2008/10/24
    528
    140

    پاسخ : تعریف ارای و هنگ کردن برنامه stm32f103vet6

    وقت بخیر

    کمی وارد جزییات شدم با debug !! اتفاقی که میفته این هست که یک متغییر unsigned char i تعریف کردم ! فقط تعریف بدون بکار گرفتن ! برنامه خوب کار کرد ! حالا char رو به int تغییر دادم !! برنامه هنگ کرد !! debug برنامه رو چک کردم در قسمت lcd_init وقتی فانکشن
    l
    کد:
    LCD_WR_DATA(0x0023)
    اجرا میشه موقع برگشت از فانکشن کلیه رحیسترهای RCC بهم میریزه !! و برنامه به جای نامشخص پرش میکنه !!

    علت این اتفاق و راه حل رفع این اشکال رو نمیدونم چی هست !!؟؟ ممنون میشم راهنمایی کنید !!!
  5. #5
    2008/10/24
    528
    140

    پاسخ : تعریف ارای و هنگ کردن برنامه stm32f103vet6

    وقت بخیر

    برای خودم هم جالب بود با تغییر محل فانکشن های Init ظارا مشکل حل شد و هنگ ندارم

    کد:
    //old
    	SystemInit();
    	Init_LED();
    	Init_NVIC();	
    	Init_TIMER();				//¶¨Ê±Æ÷³õʼ»¯
    	Usart_Configuration(115200);
    	LCD_Init();
    //new
    	SystemInit();
    	LCD_Init();
    	Init_LED();
    	Init_TIMER();				//¶¨Ê±Æ÷³õʼ»¯
    	Usart_Configuration(115200);
    	Init_ADC();
    LCD_Init از آخر ، به بعد از SystemInit منتقل شد !!
  6. #6
    2005/06/10
    بابل
    1,808
    34

    پاسخ : تعریف ارای و هنگ کردن برنامه stm32f103vet6

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

    یه تجربه دیگه که خودم دارم این بود که توی یه تابع یه متغیر 8 بیتی تعریف کرده بودم ولی شمارشی که انجام می دادم بیشتر از 255 بود این سبب می شد که موقع برگشت از تابع به آدرس غیر از آدرسی که انتظار میرفت پرش کنه.

    به نظر من هم مشکل ظاهرا حل شده است احتمالا اگه یه مقدار کد تغییر کنه مجددا خودش رو نشون خواهد داد.

    موفق باشید.
    شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ*ي جهاد فيآ*سبيلآ*الله.
    هجرت، هجرت از سنگينيآ*هاست و جاذبهآ*هايي كه تو را به خاك ميآ*چسباند.
    چكمهآ*هايت را بپوش، رهآ*توشهآ*ات را بردار و هجرت كن.
  7. #7
    2009/09/27
    1,128
    36

    پاسخ : پاسخ : تعریف ارای و هنگ کردن برنامه stm32f103vet6

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

    یه تجربه دیگه که خودم دارم این بود که توی یه تابع یه متغیر 8 بیتی تعریف کرده بودم ولی شمارشی که انجام می دادم بیشتر از 255 بود این سبب می شد که موقع برگشت از تابع به آدرس غیر از آدرسی که انتظار میرفت پرش کنه.

    به نظر من هم مشکل ظاهرا حل شده است احتمالا اگه یه مقدار کد تغییر کنه مجددا خودش رو نشون خواهد داد.

    موفق باشید.
    به نظرتون راه جلوگیری از این مشکل چیه ؟ یعنی اگر همین کد تغییر داده شود، دوباره اتفاقات سابق نیفتد؟
    راه کلی و اصولی برای تعریف متغیرهای آرایه ای به طوری که موجب این اتفاقات نشوند چیست ؟
    ممنون.
    ---------
    .
    .
    ...........
  8. #8
    2005/06/10
    بابل
    1,808
    34

    پاسخ : تعریف ارای و هنگ کردن برنامه stm32f103vet6

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

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

    اگه دوستان برنامه نویس این سوال رو پاسخ بدن، پاسخ دقیق تر و قابل اطمینان تری هست به هر حال بنده مطالعات پراکنده ای در این زمینه داشتم.
    موفق باشید
    شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ*ي جهاد فيآ*سبيلآ*الله.
    هجرت، هجرت از سنگينيآ*هاست و جاذبهآ*هايي كه تو را به خاك ميآ*چسباند.
    چكمهآ*هايت را بپوش، رهآ*توشهآ*ات را بردار و هجرت كن.
  9. #9
    2005/12/08
    تهران
    618
    20

    پاسخ : تعریف ارای و هنگ کردن برنامه stm32f103vet6

    مشکلش خیلی ساده ست

    این خط از کد اشتباهه

    کد:
    unsigned char buf[4]={0,0,0,0};
    کافیه بنویسید

    کد:
    unsigned char buf[4]={0};

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

نمایش نتایج: از 1 به 9 از 9

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

  1. پاسخ: 4
    آخرين نوشته: 2015/06/16, 17:36
  2. آیا برنامه ام بدون تعریف حافظه پشته به مشکل بر میخوره؟
    توسط Questioner در انجمن میکروکنترلرهای AVR
    پاسخ: 8
    آخرين نوشته: 2015/01/09, 20:00
  3. کتابخانه شماتیک برای STM32F103VET6
    توسط tictactoe در انجمن نرم افزار Protel
    پاسخ: 3
    آخرين نوشته: 2013/04/06, 11:46
  4. تعریف کردن کلید برای avr
    توسط ramin20007 در انجمن میکروکنترلرهای AVR
    پاسخ: 2
    آخرين نوشته: 2012/03/07, 13:27
  5. مشکل در تعریف کردن ورودی در avr
    توسط taheri_reza در انجمن میکروکنترلرهای AVR
    پاسخ: 5
    آخرين نوشته: 2008/11/11, 09:37

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

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

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