اطلاعیه

Collapse
No announcement yet.

شروع کار با uart

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    شروع کار با uart

    قطعات سری LPC2xxx در حال حاضر دارای دو واحد UART می باشند.روش استفاده از هر دوواحد به یک صورت می باشد با این تفاوت که UART2 دارای سیستم پشتیبانی از سیستم ارتباطی مودم می باشد.هردو واحد از استاندارد صنعتی 550 پیروی میکنند و هردو واحد دارای تولید کننده نرخ انتقال و دارای16 بایت بافر انتقال و دریافت از نوع FIFO می باشند.





    مقدار دهی اولیه واحدUART به صورت زیر می باشد:



    Void init_serial(void) /*Initialize Serial Interface */

    {

    PINSEL0 = 0X00050000; /*Enable RxD1 and TxD1

    */

    U1LCR =0x00000083; /*8 bits, no parity , 1 stop bit

    */

    U1DLL = 0x000000c2; /*9600 Baud Rate @ 30MHz VPB Clock

    */

    U1LCR = 0x00000003; /*DLAB = 0

    */

    {

    ابتدا بلوک انتخاب پین برای سوئیچ از حالت GPIO به حالت عملکرد UART با مقدار مناسب برنامه ریزی شود. سپس با استفاده از رجیستر کنترل خط(LCR) واحد UART برای تنظیم فرمت انتقال کاراکترها تنظیم می شود.





    در مثال ما فرمت کاراکترها به صورت 8 بیتی بدون بیت توازن و با یک بیت توقف تنظیم شده است دررجیستر LCR یک بیت اضافی به نام DLAB وجود دارد که برای فعال کردن لچ مقسم نرخ سرعت استفاده می شود که به منظور برنامه ریزی تولید کننده نرخ انتقال این بیت باید ست شود.
    تولید کننده نرخ سرعت انتقال یک مقسم 16بیتی می باشد که با تقسیم Pclk بر آن برای کلاک واحد UART که باید 16 برابر نرخ سرعت باشد بدست می آید.بنابراین فرمول استفاده شده برای محاسبه نرخ سرعت UART به صورت زیر می باشد:

    Divisor = Pclk/16 x BAUD



    که با کلاک 30 مگاهرتز داریم:

    Divisor = 30,000,000/16 x 9600 = (approx) 194 or 0Xc2

    این فرمول نرخ واقعی 9665 را به ما می دهد و اغلب غیرممکن است که یک نرخ انتقال دقیق برای uart بدست آورد اما این واحد می تواند با خطای %5 نیز کار کند. بنا براین شما مقداری انحراف در زمانبندی UART خواهید داشت اگرم لاز داشته باشید که مقدار Pclk را به طور دقیق برای زمانبندی واحدهای جانبی دیگر مانند CAN تنظیم کنید.مقدار مقسم در دو رجیستر نگه داشته می شود ،لچ قسمت MSB مقسم (DLM) و لچ قسمت LSB مقسم (DLL).هشت بیت اول هر رجیستر نصف مقدار مقسم را همانطور که در شکل زیر نشان داده شده است نگه می دارد. سرانجام بیت DLAB در رجیستر LCR باید برای محافظت از مقدایر رجیسترهای مقسم به مقدار صفر برگردد.


    [/img]


    یکبار که واحد UART مقدار دهی اولیه شود کاراکترها می توانند با نوشتن در رجیستر نگه دار انتقال منتقل شوند. به طور مشابه کاراکترها می توانند با خواندن از رجیستر بافر دریافت خوانده شوند.در واقع هر دو این رجیسترها مکان یکسانی در حافظه اشغال می کنند.نوشتن یک کاراکتر،کاراکتر را در رجیستر انتقال FIFO قرار می دهد و خواندن از این مکان یک کاراکتر را از رجیستر دریافت FIFO بار می کند.

    روشی که در زیر نشان داده شده است نحوه ارسال و دریافت کاراکتر را نشان می دهد.

    int putchar (int ch) /* Write character to Serial Port */

    {

    if (ch == '\n&#039 {

    while (!(U1LSR & 0x20));

    U1THR = CR; /* output CR */

    }

    while (!(U1LSR & 0x20));

    return (U1THR = ch);

    }

    int getchar (void) /* Read character from Serial Port */

    {

    while (!(U1LSR & 0x01));

    return (U1RBR);

    }

    توابع ()Putchar و ()Getchar برای نوشتن و خواندن یک کاراکتر منفرد توسط UART استفاده می شود.این درایورهای سطح پایین به وسیله توابع STDIO در نرم افزار Keil مانند ()printf و ()scanf فراخوانی می شوند.بنابراین اگر شما می خواهید از I/O های استاندارد به عنوان UART برای کار با LCD و KEYPAD استفاده کنید این توابع را برای پشتیبانی از ارسال و دریافت یک کاراکتر به ورودی و خروجی قطعه مورد نظر باید بازنویسی کنید.هردو تابع()putchar و ()getchar رجیستر وضعیت ارتباط (LSR) را برای چک کردن خطاهای UART و چک کردن وضعیت FIFO های ارسال و دریافت بررسی می کنند.





    واحد UART دارای یک کانال وقفه در VIC می باشد اما دارای سه منبع وقفه است.وقفه UART می تواند به وسیله تغییر در رجیستر وضعیت خط تولید شود.بنابراین اگر یک شرایط خطا اتفاق بیافتد یک وقفه تولید می شود و LSR می تواند خوانده شود تا علت خطا مشخص شود. دو منبع باقی مانده تولید وقفه،وقفه ارسال و دریافت می باشند. وقفه دریافت به وسیله شروع دریافت کاراکتر دررجیستر RXFIFO اغاز می شود.عمقی که در آن وقفه تریگر می شود به وسیله رجیستر کنترل UART FIFO تعیین می شود.





    وقفه دریافت می تواند طوری تنظیم شود که بعد از دریافت 1،4،8 یا 14 کاراکتر تریگر شود.بنایراین اگر وقفه طوری تنظیم شود که هنگامیکه 8 کاراکتر در بافر دریافت هست و 34 کاراکتر ارسال شده است بنابراین چهار وقفه تولید خواهد شد و دو کاراکتر در FIFO باقی خواهد ماند.این کارکترهای باقی مانده سبب بروز وقفه

    (character time out indication”(CTI" می شود.وقفه CTI هنگامیکه یک یا چند کاراکتر در FIFO باقی مانده باشد و هیچ فعالیتی برای3.5 تا 4.5 برابر زمان دریافت یک کاراکتر انجام نشود اتفاق می افتد.

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





    UART1 نیز ساختاری مانند UART0 دارد اگرچه امکانات بیشتری برای کنترل حالت عملکرد مودم دارد. UART1 دارای پینهای اضافی برای پشتیبانی از رابط مودم کامل می باشد.(CTS,DCD,DSR,DTR,RI,RTS) .دو رجیستر اضافی نیز به نامهای رجیستر کنترل مودم و رجیستر وضعیت مودم و یک منبع وقفه اضافی برای فراهم کردن وقفه وضعیت ارتباط وجود دارد.

    این ویژگی اضافی امکان ارتباط بهینه با یک مودم با تولید یک وقفه هربار که یک تغییر در رجیستر وضعیت مودم اتفاق افتد را به کاربر می دهد.





    برنامه ساده زیر کارکتری را دریافت وا مجددا ارسال می کند.

    #define CR 0x0D

    #include <LPC21xx.H>

    void init_serial (void);

    int putchar (int ch);

    int getchar (void);

    unsigned char test;

    int main(void)

    {

    VPBDIV = 0x02; //Divide Pclk by two

    init_serial();

    while(1)

    {

    putchar(getchar()); //Echo terminal

    }

    }

    void init_serial (void) /* Initialize Serial Interface */

    {

    PINSEL0 = 0x00050000; /* Enable RxD1 and TxD1 */

    U1LCR = 0x00000083; /* 8 bits, no Parity, 1 Stop bit */

    U1DLL = 0x000000C2; /* 9600 Baud Rate @ 30MHz VPB Clock */

    U1LCR = 0x00000003; /* DLAB = 0 */

    }

    int putchar (int ch) /* Write character to Serial Port */

    {

    if (ch == '\n&#039 {

    while (!(U1LSR & 0x20));

    U1THR = CR; /* output CR */

    }

    while (!(U1LSR & 0x20));

    return (U1THR = ch);

    }

    int getchar (void) /* Read character from Serial Port */

    {

    while (!(U1LSR & 0x01));

    return (U1RBR);

    }
    منبع:قطعات سری LPC2xxx در حال حاضر دارای دو واحد UART می باشند.روش استفاده از هر دوواحد به یک صورت می باشد با این تفاوت که UART2 دارای سیستم پشتیبانی از سیستم ارتباطی مودم می باشد.هردو واحد از استاندارد صنعتی 550 پیروی میکنند و هردو واحد دارای تولید کننده نرخ انتقال و دارای16 بایت بافر انتقال و دریافت از نوع FIFO می باشند.





    مقدار دهی اولیه واحدUART به صورت زیر می باشد:



    Void init_serial(void) /*Initialize Serial Interface */

    {

    PINSEL0 = 0X00050000; /*Enable RxD1 and TxD1

    */

    U1LCR =0x00000083; /*8 bits, no parity , 1 stop bit

    */

    U1DLL = 0x000000c2; /*9600 Baud Rate @ 30MHz VPB Clock

    */

    U1LCR = 0x00000003; /*DLAB = 0

    */

    {

    ابتدا بلوک انتخاب پین برای سوئیچ از حالت GPIO به حالت عملکرد UART با مقدار مناسب برنامه ریزی شود. سپس با استفاده از رجیستر کنترل خط(LCR) واحد UART برای تنظیم فرمت انتقال کاراکترها تنظیم می شود.





    در مثال ما فرمت کاراکترها به صورت 8 بیتی بدون بیت توازن و با یک بیت توقف تنظیم شده است دررجیستر LCR یک بیت اضافی به نام DLAB وجود دارد که برای فعال کردن لچ مقسم نرخ سرعت استفاده می شود که به منظور برنامه ریزی تولید کننده نرخ انتقال این بیت باید ست شود.

    تولید کننده نرخ سرعت انتقال یک مقسم 16بیتی می باشد که با تقسیم Pclk بر آن برای کلاک واحد UART که باید 16 برابر نرخ سرعت باشد بدست می آید.بنابراین فرمول استفاده شده برای محاسبه نرخ سرعت UART به صورت زیر می باشد:

    Divisor = Pclk/16 x BAUD



    که با کلاک 30 مگاهرتز داریم:

    Divisor = 30,000,000/16 x 9600 = (approx) 194 or 0Xc2

    این فرمول نرخ واقعی 9665 را به ما می دهد و اغلب غیرممکن است که یک نرخ انتقال دقیق برای uart بدست آورد اما این واحد می تواند با خطای %5 نیز کار کند. بنا براین شما مقداری انحراف در زمانبندی UART خواهید داشت اگرم لاز داشته باشید که مقدار Pclk را به طور دقیق برای زمانبندی واحدهای جانبی دیگر مانند CAN تنظیم کنید.مقدار مقسم در دو رجیستر نگه داشته می شود ،لچ قسمت MSB مقسم (DLM) و لچ قسمت LSB مقسم (DLL).هشت بیت اول هر رجیستر نصف مقدار مقسم را همانطور که در شکل زیر نشان داده شده است نگه می دارد. سرانجام بیت DLAB در رجیستر LCR باید برای محافظت از مقدایر رجیسترهای مقسم به مقدار صفر برگردد.





    یکبار که واحد UART مقدار دهی اولیه شود کاراکترها می توانند با نوشتن در رجیستر نگه دار انتقال منتقل شوند. به طور مشابه کاراکترها می توانند با خواندن از رجیستر بافر دریافت خوانده شوند.در واقع هر دو این رجیسترها مکان یکسانی در حافظه اشغال می کنند.نوشتن یک کاراکتر،کاراکتر را در رجیستر انتقال FIFO قرار می دهد و خواندن از این مکان یک کاراکتر را از رجیستر دریافت FIFO بار می کند.

    روشی که در زیر نشان داده شده است نحوه ارسال و دریافت کاراکتر را نشان می دهد.

    int putchar (int ch) /* Write character to Serial Port */

    {

    if (ch == '\n&#039 {

    while (!(U1LSR & 0x20));

    U1THR = CR; /* output CR */

    }

    while (!(U1LSR & 0x20));

    return (U1THR = ch);

    }

    int getchar (void) /* Read character from Serial Port */

    {

    while (!(U1LSR & 0x01));

    return (U1RBR);

    }

    توابع ()Putchar و ()Getchar برای نوشتن و خواندن یک کاراکتر منفرد توسط UART استفاده می شود.این درایورهای سطح پایین به وسیله توابع STDIO در نرم افزار Keil مانند ()printf و ()scanf فراخوانی می شوند.بنابراین اگر شما می خواهید از I/O های استاندارد به عنوان UART برای کار با LCD و KEYPAD استفاده کنید این توابع را برای پشتیبانی از ارسال و دریافت یک کاراکتر به ورودی و خروجی قطعه مورد نظر باید بازنویسی کنید.هردو تابع()putchar و ()getchar رجیستر وضعیت ارتباط (LSR) را برای چک کردن خطاهای UART و چک کردن وضعیت FIFO های ارسال و دریافت بررسی می کنند.





    واحد UART دارای یک کانال وقفه در VIC می باشد اما دارای سه منبع وقفه است.وقفه UART می تواند به وسیله تغییر در رجیستر وضعیت خط تولید شود.بنابراین اگر یک شرایط خطا اتفاق بیافتد یک وقفه تولید می شود و LSR می تواند خوانده شود تا علت خطا مشخص شود. دو منبع باقی مانده تولید وقفه،وقفه ارسال و دریافت می باشند. وقفه دریافت به وسیله شروع دریافت کاراکتر دررجیستر RXFIFO اغاز می شود.عمقی که در آن وقفه تریگر می شود به وسیله رجیستر کنترل UART FIFO تعیین می شود.





    وقفه دریافت می تواند طوری تنظیم شود که بعد از دریافت 1،4،8 یا 14 کاراکتر تریگر شود.بنایراین اگر وقفه طوری تنظیم شود که هنگامیکه 8 کاراکتر در بافر دریافت هست و 34 کاراکتر ارسال شده است بنابراین چهار وقفه تولید خواهد شد و دو کاراکتر در FIFO باقی خواهد ماند.این کارکترهای باقی مانده سبب بروز وقفه

    (character time out indication”(CTI" می شود.وقفه CTI هنگامیکه یک یا چند کاراکتر در FIFO باقی مانده باشد و هیچ فعالیتی برای3.5 تا 4.5 برابر زمان دریافت یک کاراکتر انجام نشود اتفاق می افتد.

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





    UART1 نیز ساختاری مانند UART0 دارد اگرچه امکانات بیشتری برای کنترل حالت عملکرد مودم دارد. UART1 دارای پینهای اضافی برای پشتیبانی از رابط مودم کامل می باشد.(CTS,DCD,DSR,DTR,RI,RTS) .دو رجیستر اضافی نیز به نامهای رجیستر کنترل مودم و رجیستر وضعیت مودم و یک منبع وقفه اضافی برای فراهم کردن وقفه وضعیت ارتباط وجود دارد.

    این ویژگی اضافی امکان ارتباط بهینه با یک مودم با تولید یک وقفه هربار که یک تغییر در رجیستر وضعیت مودم اتفاق افتد را به کاربر می دهد.





    برنامه ساده زیر کارکتری را دریافت وا مجددا ارسال می کند.

    #define CR 0x0D

    #include <LPC21xx.H>

    void init_serial (void);

    int putchar (int ch);

    int getchar (void);

    unsigned char test;

    int main(void)

    {

    VPBDIV = 0x02; //Divide Pclk by two

    init_serial();

    while(1)

    {

    putchar(getchar()); //Echo terminal

    }

    }

    void init_serial (void) /* Initialize Serial Interface */

    {

    PINSEL0 = 0x00050000; /* Enable RxD1 and TxD1 */

    U1LCR = 0x00000083; /* 8 bits, no Parity, 1 Stop bit */

    U1DLL = 0x000000C2; /* 9600 Baud Rate @ 30MHz VPB Clock */

    U1LCR = 0x00000003; /* DLAB = 0 */

    }

    int putchar (int ch) /* Write character to Serial Port */

    {

    if (ch == '\n&#039 {

    while (!(U1LSR & 0x20));

    U1THR = CR; /* output CR */

    }

    while (!(U1LSR & 0x20));

    return (U1THR = ch);

    }

    int getchar (void) /* Read character from Serial Port */

    {

    while (!(U1LSR & 0x01));

    return (U1RBR);

    }
    منبعspWorld

    #2
    پاسخ : شروع کار با uart

    اینم یک برنامه کاملی که باوقفه دریافت نوشتم.دوستان اگه فکر میکنند این پست خوب و مفید هست بگن هرقسمت رو به همین صورت بزارم
    کد:
    #include <LPC17xx.h>
    #include <string.h>
    
    #define BUFSIZE 100
    int j,i;
    uint8_t rx_buffer[100];               // Reception buffer
    uint32_t rev_cnt = 0;                 // Reception counter
    void UARTInit( uint32_t SystemFrequency, uint32_t baudrate );
    int UART0_SendByte (int ucData);
    int UART0_GetChar (void); 
    void UART0_SendString (unsigned char *s); 
    /******************************************************************************
             UART0 Interrupt service function
    ******************************************************************************/
    void UART0_IRQHandler(void)
    {
    	 uint8_t Dummy = Dummy;
      
    			LPC_GPIO2->FIOSET = 3<<4 ;
    			for(j=0;j<4000;j++);
    			LPC_GPIO2->FIOCLR = 3<<4 ;
    		 for(j=0;j<4000;j++);
       // if (LSRValue & LSR_RDR)	/* Receive Data Ready */			
      
       /* If no error on RLS, normal ready, save into the data buffer. */
       /* Note: read RBR will clear the interrupt */
       rx_buffer[rev_cnt++] = LPC_UART0->RBR;
       if (rev_cnt == BUFSIZE)
       {
        rev_cnt = 0;		/* buffer overflow */
       }
    }
    /*******************************************************************************/
    
    int main(void){
    	void SystemInit ();
     LPC_GPIO2->FIODIR1 = 0x00 ;
    	LPC_GPIO2->FIODIR0 = 0xFF ;
    	LPC_GPIO2->FIOCLR0 = 0xFF ;  
     UARTInit(100e6,9600);  
     while(1){
    	
    	     
    	    	UART0_SendString("http://www.DIDBANSANAT.COM\r\n");
    		    for(j=0;j<40000;j++);
    	    UART0_SendString((unsigned char *)rx_buffer);
    	    for(j=0;j<40000;j++);
         }
      
     
     
      
    }
    
    /***********************************************************************************/
    void UARTInit( uint32_t SystemFrequency, uint32_t baudrate )
    {
     uint32_t Fdiv;
     uint32_t pclkdiv, pclk;
     
      LPC_SC->PCONP |= (0x1<<3);
      LPC_PINCON->PINSEL0 &= ~0x000000F0;
      LPC_PINCON->PINSEL0 |= 0x00000050; /* RxD0 is P0.3 and TxD0 is P0.2 */
      /* By default, the PCLKSELx value is zero, thus, the PCLK for
        all the peripherals is 1/4 of the SystemFrequency. */
        /* Bit 6~7 is for UART0 */
        pclkdiv = (LPC_SC->PCLKSEL0 >> 6) & 0x03;
        switch ( pclkdiv )
        {
         case 0x00:
         default:
            pclk = SystemFrequency/4;
            break;
         case 0x01:
            pclk = SystemFrequency;
            break; 
         case 0x02:
            pclk = SystemFrequency/2;
            break; 
         case 0x03:
            pclk = SystemFrequency/8;
            break;
        }
    
      LPC_UART0->LCR = 0x83;        /* 8 bits, no Parity, 1 Stop bit */
      Fdiv = ( pclk / 16 ) / baudrate ;    /*baud rate */
      LPC_UART0->DLM = Fdiv / 256;                            
      LPC_UART0->DLL = Fdiv % 256;
      LPC_UART0->LCR = 0x03;        /* DLAB = 0 */
      LPC_UART0->FCR = 0x07|(0x2<<6);        /* Enable and reset TX and RX FIFO. */
      NVIC_SetPriority(UART0_IRQn,0);     /* Default priority group 0, can be 0(highest) - 31(lowest) */
      NVIC_EnableIRQ(UART0_IRQn);
    
    
      LPC_UART0->IER = 0x01;    /* Enable UART0 interrupt */
     
    }
    
    /********************************************************************************************************/
    int UART0_SendByte (int ucData)
    {
    	while (!(LPC_UART0->LSR & 0x20));
      return (LPC_UART0->THR = ucData);
    }
    /*----------------------------------------------------------------------------
     Read character from Serial Port  (blocking read)
     *----------------------------------------------------------------------------*/
    int UART0_GetChar (void) 
    {
     	while (!(LPC_UART0->LSR & 0x01));
     	return (LPC_UART0->RBR);
    }
    
    /*********************************************************************************************************/
    void UART0_SendString (unsigned char *s) 
    {
     	while (*s != 0) 
    	{
      		UART0_SendByte(*s++);
    	}
    }
    /***********************/

    دیدگاه


      #3
      پاسخ : شروع کار با uart

      سلام اروین خان
      ممنون از پست مفیدتون
      من میخوام یه کاراکتر از روی pc با سریال بفرستم روی uart برد آموزشی lpc1768 و بعد اونو بگیره و روی lcd کارکتری نمایش بده.
      قسمت lcd رو بلدم ولی این قسمتی که بناس داده از کامپیوتر بیاد روی uart و اونو بگیره رو مشکل دارم!
      سوالم اینه که برای این کار باید از کدوم قسمت برنامتون استفاده کرد و چه چیزای دیگه ایی باید بهش اضافه بشه تا این کاری که میخوامو انجام بده؟

      بازم سپاس :agree:

      دیدگاه


        #4
        پاسخ : شروع کار با uart

        ممنونم، بسیار مفید بود.

        دیدگاه


          #5
          پاسخ : شروع کار با uart

          سلام دوستان
          من زمانی که یک پروژه جدید ایجاد می کنم و تمام فایل های نمونه برنامه برد آموزشی رو در این فایل کپی میکنم بعد کامپایل و پروگرام میکنم, برنامه کار نمیکنه :angry: :angry: :angry:
          ولی وقتی نمونه برنامه خود برد آموزشی رو پروگرام میکنم درست کار میکنه
          در ضمن فایل هدر ها رو هم اضافه کردم.
          چند تا برنامه خودم هم نوشتم باز هم کار نکرد.
          به نظر شما تنظیم خاصی نیاز هست که من انجام نمیدم؟

          دیدگاه


            #6
            پاسخ : شروع کار با uart

            میخوای یکیش رو اپ کن ببینم مشکلت چیه

            دیدگاه


              #7
              پاسخ : شروع کار با uart

              اگر یک نگاه به این فایل بندازید ممنون میشم
              این Errorآ‌ رو میده
              کد:
              UART TFTLCD.axf: Error: L6218E: Undefined symbol SystemCoreClock (referred from lpc17xx_clkpwr.o).
              http://gameelec.persiangig.com/UART%20%5B2%5D.rar

              دیدگاه


                #8
                پاسخ : شروع کار با uart

                متاسفانه پروژه ای که فرستادید خراب و اصلا باز نمیشه.

                دیدگاه


                  #9
                  پاسخ : شروع کار با uart

                  من همین الان خودم دانلود کردم . سالم است

                  دیدگاه


                    #10
                    پاسخ : شروع کار با uart

                    دانلود میشه پروزه رو که باز میکنم کیل بعد از چند تا ارور خالی باز میشه.فایل اصلی پروژه رو ببینم 0 کیلو بایت هست

                    دیدگاه


                      #11
                      پاسخ : شروع کار با uart

                      شرمنده
                      دوباره پلود کردم براتون (تستشم کردم درست هست)

                      http://gameelec.persiangig.com/UART%...d.rar/download

                      دیدگاه


                        #12
                        پاسخ : شروع کار با uart

                        نوشته اصلی توسط Homayon
                        شرمنده
                        دوباره پلود کردم براتون (تستشم کردم درست هست)

                        http://gameelec.persiangig.com/UART%...d.rar/download
                        مشکل برنامه شما از فایل startup و فایل سیستم هست که به پروژه اد کردی.منم همون مشکل شما رو داشتم ولی باپاک کردن فایهای نامبرده شده و اد کردن دوبار انها مشکل حل شد.
                        این دو فایل رو در پروژه پاک کن و از ادرس کیل پوشه arm , بعد در پوشه startup این دو فایل را دوبار اد کن اگه مشکل برطرف نشد برنامه کیل شما مشکل دارد

                        دیدگاه


                          #13
                          پاسخ : شروع کار با uart

                          خیلی خیلی برای وقتی که گداشتید ممنونم.
                          این کار رو امجام دادم ولی باز هم درست نشد. این CMSIS دقیقا این جور وقت ها رو اعصاب راه میره :angry: :angry: :angry:
                          بعد این که شما گفتید Keil مشکل داره فکر نکنم دست باشه چون من وقتی ار رجیستر ها استفاده می کنم درست کار می کنه بعدش تاره من برای AT91sam7x خم وقتی برنامه می نویسم درست کامپایل میکنه.

                          دیدگاه


                            #14
                            پاسخ : شروع کار با uart

                            من پروژه شما رو با همون دو فایل درست کردم و گر نه همون ارور کلاک رو میداد.شاید این دو فایل شما مشکل داره یا برای ورژن کیل شما نباشه.از من میشنوی یک بار کیل رو کلا پاک کن و دوباره نصب کن.اینجوری فایلاهایی که تغییر کرده درست میشه .

                            دیدگاه


                              #15
                              پاسخ : شروع کار با uart

                              مشکل شما دقیقا سر این فایله.این فایل رو به پروژه اد کن
                              http://uplod.ir/5b73ckihw68y/system_LPC17xx.rar.htm

                              دیدگاه

                              لطفا صبر کنید...
                              X