STM32F103V 4串口电路

发布者:Ziran520最新更新时间:2016-09-06 来源: eefocus关键字:STM32F103V  串口电路 手机看文章 扫描二维码
随时随地手机看文章
最近做东西,需要用到4个串口,就用了STM32F103V,画了个电路

原理图:

STM32F103V 4串口电路 - 小文 - 小文电子设计

 

PCB:

STM32F103V 4串口电路 - 小文 - 小文电子设计

 

 

 实物图:

STM32F103V 4串口电路 - 小文 - 小文电子设计

 

STM32F103V 4串口电路 - 小文 - 小文电子设计

 

STM32F103V 4串口电路 - 小文 - 小文电子设计

 


串口中断相关的程序段:

void GPIO_Configuration(void)
{

  RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1 |RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
                         RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |
                         RCC_APB2Periph_GPIOE, ENABLE);
   
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;  //LED1+RGB LED
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);     

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1; //LED2+LED3
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOE, &GPIO_InitStructure);


  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;          //USART1 TX
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;    //复用推挽输出
  GPIO_Init(GPIOA, &GPIO_InitStructure);      //A端口

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;          //USART1 RX
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;   //复用开漏输入
  GPIO_Init(GPIOA, &GPIO_InitStructure);


  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;          //USART2 TX
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;    //复用推挽输出
  GPIO_Init(GPIOA, &GPIO_InitStructure);      //A端口

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;          //USART2 RX
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;   //复用开漏输入
  GPIO_Init(GPIOA, &GPIO_InitStructure);           //A端口


  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;          //USART3 TX
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;    //复用推挽输出
  GPIO_Init(GPIOB, &GPIO_InitStructure);      //B端口

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;          //USART3 RX
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;   //复用开漏输入
  GPIO_Init(GPIOB, &GPIO_InitStructure);           //B端口

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;          //USART4 TX
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;    //复用推挽输出
  GPIO_Init(GPIOC, &GPIO_InitStructure);      //B端口

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;          //USART4 RX
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;   //复用开漏输入
  GPIO_Init(GPIOC, &GPIO_InitStructure);           //C端口

}

void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;

  /* Configure the NVIC Preemption Priority Bits */  
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
 

  /* Enable the USART1 Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;  //中断通道为RTC全局中断
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //抢占优先级为1
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  //副优先级为0
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

 

                                          //选择串口2中断   
  NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;  //中断通道为RTC全局中断
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级为1
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;  //副优先级为0
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
      

}

 

 

void USARTx_configuration(void)
  /* USART1 、USART2  和 USART3 UART4 配置如下:
        - 波特率 = 9600   
        - 字节 = 8 Bits
        - One Stop Bit
        - No parity
        - Hardware flow control disabled (RTS and CTS signals)
        - Receive and transmit enabled
  */
  {
  USART_InitStructure.USART_BaudRate = 9600;
  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;

  /* Configure USART1 */
   USART_Init(USART1, &USART_InitStructure);
   USART_Init(USART2, &USART_InitStructure);
   USART_Init(USART3, &USART_InitStructure);
   USART_Init(UART4, &USART_InitStructure);
  
  /* Enable USART1 Receive and Transmit interrupts */
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
  USART_ITConfig(USART1, USART_IT_TXE, ENABLE);

  USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
  USART_ITConfig(USART2, USART_IT_TXE, ENABLE);

  USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
  USART_ITConfig(USART3, USART_IT_TXE, ENABLE);

  USART_ITConfig(UART4, USART_IT_RXNE, ENABLE);
  USART_ITConfig(UART4, USART_IT_TXE, ENABLE);
  /* Enable the USART1 */
  USART_Cmd(USART1, ENABLE);
  USART_Cmd(USART2, ENABLE);
  USART_Cmd(USART3, ENABLE);
  USART_Cmd(UART4, ENABLE);
}

 

/****************串口1中断 ************************/
void USART1_IRQHandler(void)
{
   unsigned char i;
     
  if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
  { 
          
  }
  USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清中断标识
   USART_ITConfig(USART1, USART_IT_TXE, DISABLE);

 }

关键字:STM32F103V  串口电路 引用地址:STM32F103V 4串口电路

上一篇:STM32 模拟IIC读写24C02程序代码
下一篇:STM32F103V---固件库使用---USART1

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved