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





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









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









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






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

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

صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 16

موضوع: STM32F103RET6 USART2

  1. #1
    2012/07/15
    34
    0

    STM32F103RET6 USART2

    با سلام

    در خصوص راه اندازی USART2 در میکروکنترلر STM32F103 راهنمایی میخواستم . هدر برد سایت رو خریداری کردم و نمونه برنامه USART رو در کیل دیدم ولی اولین باره با این میکروکنترلر و محیط برنامه نویسی کیل کار میکنم راهنمایی بفرمایید ممنون میشم .

    Header Board : STM32F103RET6


    کد:
    void USART1_Init (void) {
     int i;
    
     RCC->APB2ENR |= (  1UL << 0);    /* enable clock Alternate Function */
     AFIO->MAPR  &= ~(  1UL << 2);    /* clear USART1 remap        */
    
     RCC->APB2ENR |= (  1UL << 2);    /* enable GPIOA clock        */
     GPIOA->CRH  &= ~(0xFFUL << 4);    /* clear PA9, PA10         */
     GPIOA->CRH  |= (0x0BUL << 4);    /* USART1 Tx (PA9) output push-pull */
     GPIOA->CRH  |= (0x04UL << 8);    /* USART1 Rx (PA10) input floating */
    
     RCC->APB2ENR |= (  1UL << 14);    /* enable USART#1 clock       */
    
     USART1->BRR  = 0x0271;         /* 115200 baud @ PCLK2 72MHz    */
     USART1->CR1  = ((  1UL << 2) |    /* enable RX            */
              (  1UL << 3) |    /* enable TX            */
              (  1UL << 5) |    /* enable RXNE Interrupt      */
              (  1UL << 7) |    /* enable TXE Interrupt       */
              (  0UL << 12) );   /* 1 start bit, 8 data bits     */
     USART1->CR2  = 0x0000;         /* 1 stop bit            */
     USART1->CR3  = 0x0000;         /* no flow control         */
     for (i = 0; i < 0x1000; i++) __NOP();  /* avoid unwanted output      */
    
     NVIC_EnableIRQ(USART1_IRQn);
     USART1->CR1 |= ((  1UL << 13) );   /* enable USART           */
    }
    
    void USART1_IRQHandler (void) {
     volatile unsigned int IIR;
     struct buf_st *p;
    
      IIR = USART1->SR;
      if (IIR & USART_SR_RXNE) {      /* read interrupt          */
       USART1->SR &= ~USART_SR_RXNE;	   /* clear interrupt         */
    
       p = &rbuf;
    
       if (((p->in - p->out) & ~(RBUF_SIZE-1)) == 0) {
        p->buf [p->in & (RBUF_SIZE-1)] = (USART1->DR & 0x1FF);
        p->in++;
       }
      }
    
      if (IIR & USART_SR_TXE) {
       USART1->SR &= ~USART_SR_TXE;	   /* clear interrupt          */
    
       p = &tbuf;
    
       if (p->in != p->out) {
        USART1->DR = (p->buf [p->out & (TBUF_SIZE-1)] & 0x1FF);
        p->out++;
        tx_restart = 0;
       }
       else {
        tx_restart = 1;
        USART1->CR1 &= ~USART_SR_TXE;   /* disable TX IRQ if nothing to send */
    
       }
      }
    }
    
    /*------------------------------------------------------------------------------
     buffer_Init
     initialize the buffers
     *------------------------------------------------------------------------------*/
    void buffer_Init (void) {
    
     tbuf.in = 0;              /* Clear com buffer indexes      */
     tbuf.out = 0;
     tx_restart = 1;
    
     rbuf.in = 0;
     rbuf.out = 0;
    }
    همین کد رو میخوام برای USART2 بنویسم
    با تشکر
  2. #2
    2014/01/25
    شهرکرد
    247
    267

    پاسخ : STM32F106RET6 USART2

    سلام فروشگاه میکرو F106 نداره احتمالا منظورتون همون STM32F103RET6 هست. اگر همه تعاریف USART1 رو به USART2 تغییر بدی و همچنین پینهای USART2 رو جایگذین کنی این کد جواب میده.
    پیشنهاد میکنم همین ابتدای کار زیاد خودتو درگیر کار کردن مستقیم با رجیسترها بخاطر اینکه سرعت انجام پروژه رو پایین میاره نکنی و از کتابخانه های CMSIS یا HAL استفاده کنی.
    در صورتی که کتابخانه های CMSIS رو روی KEIL نصب کرده باشی میتونی از این نمونه کد استفاده کنی.

    کد:
    ///////////////////////////////USART DECLARION////////////////////////////////
    /*USAGE: 1-AZ MANAGE RUN-TIME ENVIROMENT LIBRARY USART RA EZAFE MI****M
    	 2-IN GHETE COD RA BE EBTEDA FILE MAIN EZAFE KON
    	 3- MATN TAVABE RA BE ENTEHA EZAFE KON. */
    				 
    #define USART_PORT		GPIOA
    #define USART_TX_PIN	GPIO_Pin_9
    #define USART_RX_PIN	GPIO_Pin_10
    #define USARTx  		USART1
    void USART_Configuration(void);
    void USART1_Send_Byte(u16 Data);
    void USART_Send_Str(const char* data);
    void USART_Send_Enter(void);
    void USART_Put_Num(u32 dat);
    void USART_Put_Inf(char *inf,u32 dat);
    void u32tostr(u32 dat,char *str) ;
    ////////////////////////////////////////////////////////////////////
    
    
    
    
    int main(void)
    {
    	USART_Configuration();
    
    	USART1_Send_Byte('a');	
    	USART1_Send_Byte('=');
    	USART_Put_Num(sss);	
    	USART1_Send_Byte('\t');
    	USART_Send_Str("SALAM");
    	USART1_Send_Byte('\t');
    	USART_Put_Inf("data=",123456789);
    }
    
    
    
    
    
    //////////////////////////////////////////USART FUNCTION///////////////////////////////////////
    void USART_Configuration(void)
    {
    	GPIO_InitTypeDef GPIO_InitStructure;
    	USART_InitTypeDef USART_InitStructure;
    
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1,ENABLE);
    	RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
    
      /*-----------------PA9 TX ?????? PA10 RX ????---------------------------*/
    	GPIO_InitStructure.GPIO_Pin  = USART_TX_PIN ;
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    	GPIO_Init(USART_PORT, &GPIO_InitStructure); 
    
    	GPIO_InitStructure.GPIO_Pin  = USART_RX_PIN ;
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    	GPIO_Init(USART_PORT, &GPIO_InitStructure);
       	
    
    	/* USARTx configured as follow:
    		- BaudRate = 115200 baud 
    	- Word Length = 8 Bits
    	- One Stop Bit
    	- No parity
    	- Hardware flow control disabled (RTS and CTS signals)
    	- Receive and transmit enabled
    	*/
    	USART_InitStructure.USART_BaudRate = 115200;
    	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(USARTx, &USART_InitStructure);
    	USART_Cmd(USARTx, ENABLE);	
    }
    
    void USART1_Send_Byte(u16 Data)
    { 
      	while (!(USART1->SR & USART_FLAG_TXE));
      	USART1->DR = (Data & (uint16_t)0x01FF);	  
    }
    
    void USART_Send_Str(const char* data)
    {
    	u16 i;
    	u16 len = strlen(data)-1;
    	for (i=0; i<len; i++)
    	{
    		USART1_Send_Byte(data[i]);
    	}
    	if(data[i]=='\n') 
    	{
    		USART_Send_Enter();
    	}
    	else
    	{
    		USART1_Send_Byte(data[i]);
    	}		
    }
    
    void USART_Send_Enter(void)
    {
    	USART1_Send_Byte(0x0d);
    	USART1_Send_Byte(0x0a);
    }
    
    void USART_Put_Num(u32 dat)
    {
     	char temp[20];
     	u32tostr(dat,temp);
     	USART_Send_Str(temp);
    }
    
    void USART_Put_Inf(char *inf,u32 dat)
    {
     	USART_Send_Str(inf);
     	USART_Put_Num(dat);
     	USART_Send_Str("\n"); 
    }
    
    void u32tostr(u32 dat,char *str) 
    {
     	char temp[20];
     	u8 i=0,j=0;
     	i=0;
     	while(dat)
     	{
     		temp[i]=dat%10+0x30;
     		i++;
     		dat/=10;
     	}
     	j=i;
     	for(i=0;i<j;i++)
     	{
     		str[i]=temp[j-i-1];
     	}
     	if(!i) {str[i++]='0';}
     	str[i]=0;
    }
    //////////////////////////////////////////USART FUNCTION END///////////////////////////////////////
  3. #3
    2012/07/15
    34
    0

    پاسخ : STM32F106RET6 USART2

    با سلام و تشکر بابت پاسختون

    از کجا میتونم این کتابخونه رو دانلود کنم ؟
  4. #4
    2008/10/24
    528
    140

    پاسخ : STM32F106RET6 USART2

    وقت بخیر

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

    عضویت



    توی سایت stm پیدا میشه !!!
  5. #5
    2007/08/04
    اصفهان
    577
    4

    پاسخ : STM32F106RET6 USART2

    ارسال سریال به سادترین صورت این دنگو فنگ ها را نداره. نیازی به USART1_IRQHandler و ... نیست.
    حتی از cmsis هم ساده تر است.
    یک اینیشیالیز و ارسال یک کاراکتر و سپس ارسال یک رشته. همین
    فيلم آموزشي ميکروکنترلر LPC1768
    فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
    فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
    فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...
  6. #6
    2012/07/15
    34
    0

    پاسخ : STM32F103RET6 USART2

    با سلام

    برای ایجاد یک پروژه جدید در CMSIS راهنمایی لازم دارم .

    در پنجره Select Device For Target برای انتخاب پردازنده مورد نظرم که STM32F103RET6 هستش کدام گزینه رو انتخاب کنم ؟ چطوری باید مطمئن بشم پردازنده درست رو انتخاب کردم ؟

    با تشکر
  7. #7
    2012/07/15
    34
    0

    پاسخ : STM32F103RET6 USART2

    با سلام

    بالاخره CMSIS راه اندازی شد و خطایی هم نداره ، فقط توی نمونه برنامه ای که جناب mohammad poorkhalili لطف کردند ، از GPIO_InitTypeDef ایراد میگیره ، لطفا راهنمایی بفرمایید .

    سپاسگزارم .
  8. #8
    2014/01/25
    شهرکرد
    247
    267

    پاسخ : STM32F103RET6 USART2

    تعریف ساختار GPIO و USART باید در ابتدای برنامه و قبل از کدهای اجرایی صورت بگیره، اگه تعریف این دو ساختار پشت سر همه اما فقط به GPIO گیر میده به این معنیه که هدر فایل مربوط به GPIO رو داخل برنامه اینکلود نکردی یا اینکه تیکشو در قسمت مدیریت کتابخانه های پروژه نزدی.
  9. #9
    2012/07/15
    34
    0

    پاسخ : STM32F103RET6 USART2

    با سلام و تشکر از پاسختون

    اون مشکل هم حل شد ، ممنون از راهنمایی شما .

    الان 79 خطا میگیره همه با موضوع تکراری بودن تعریف بعضی چیزها .

    مثلا :
    کد:
     .\Objects\Test4_USART.axf: Error: L6200E: Symbol GPIO_Init multiply defined (by stm32f10x_gpio_1.o and stm32f10x_gpio.o).
    ممنون میشم راهنمایی کنید .
  10. #10
    2012/07/15
    34
    0

    پاسخ : STM32F103RET6 USART2

    با سلام

    مشکل حل شد ولی خروجی ندارم روی یوزارت 1 ، لطف میکنید راهنمایی کنید .

    متشکرم
صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 16

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

  1. راه اندازی RTC در STM32f103ret6
    توسط na333r در انجمن STM
    پاسخ: 6
    آخرين نوشته: 2016/01/06, 21:55
  2. راه اندازی Stm32F103Ret6
    توسط omid_544 در انجمن STM
    پاسخ: 4
    آخرين نوشته: 2015/04/12, 17:44
  3. سوال در مورد هدر برد STM32F103RET6
    توسط soa در انجمن پروسسورهای ARM
    پاسخ: 5
    آخرين نوشته: 2015/01/24, 00:59
  4. ريجستر هاي stm32f103ret6
    توسط blue_pulse در انجمن STM
    پاسخ: 2
    آخرين نوشته: 2014/12/28, 21:26

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

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

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

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

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