اطلاعیه

Collapse
No announcement yet.

مشکل ارسال با UART

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

    مشکل ارسال با UART

    من می خوام یه رشته رو با UART میکروی stm32f107 ارسال کنم
    کانفیگم اینجوریه

    کد:
     GPIO_InitTypeDef GPIO_InitStructure;
     USART_InitTypeDef USART_InitStructure; 
    
     RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB | RCC_APB2Periph_USART1 | RCC_APB2Periph_AFIO ,ENABLE);
    
     GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE); 
    
     //
     // USART1_TX -> PB6 , USART1_RX -> PB7
     //				
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;	     
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
     GPIO_Init(GPIOB, &GPIO_InitStructure);		  
    
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;	    
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
     GPIO_Init(GPIOB, &GPIO_InitStructure);
    
     USART_InitStructure.USART_BaudRate = 57600;
     USART_InitStructure.USART_WordLength = USART_WordLength_8b;
     USART_InitStructure.USART_StopBits = USART_StopBits_1;
     USART_InitStructure.USART_Parity = USART_Parity_No;
     USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
     USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
    
     USART_Init(USART1, &USART_InitStructure); 
     USART_ClearFlag(USART1,USART_FLAG_TC);
     USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
     USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
     USART_Cmd(USART1, ENABLE);
    دستور ارسال هم اینجوری :

    کد:
     i=0;
     while(i<buflen){
     USART_SendData(USART1,(uint8_t)txbuf[i]);
    	i++;
     while (USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);
     }
    برنامه تو while دوم گیر میکنه

    #2
    پاسخ : مشکل ارسال با UART

    خوب مهندس اشتباهه
    بعد از هر ارسال با دستور ارسال یا قبل از اون بیت پرچم ارسال را چک کنید. در صورت اوکی بودن بره خط بعدی(در تابع ارسال یک کاراکتر)
    با یک اشاره گر ، ارشاره بکنه به کاراکتر بعدی در تابع ارسال رشته
    فيلم آموزشي ميکروکنترلر LPC1768
    فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
    فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
    فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

    دیدگاه


      #3
      پاسخ : مشکل ارسال با UART

      ممنون اون کد رو عوض کردم

      کد:
       i=0;
       while(i<buflen){
       while (USART_GetFlagStatus(USARTx,USART_FLAG_TXE) == RESET);
       USART_SendData(USARTx,(uint8_t)txbuf[i]);
      	i++;
       //while (USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);
       }
      دیگه گیر نمی کنه ولی درست هم کار نمی کنه و گیرنده دریافتی تداره ، اگه دریافت داشته باشه چراغش روشن میشه و پاسخ میده
      من تو stm تازه کارم فکر میکردم فلگ USART_FLAG_TC به عنوان ترانسمیت کامپلت استفاده میشه

      دیدگاه


        #4
        پاسخ : مشکل ارسال با UART

        مشکل از قطعه هستش اطلاعات رو از کام 1 به 2 فرستادم کار میکنه
        rxوtx دو تا پورت رو ضربدری وصل کردم

        دیدگاه

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