STM32F103XX的USART串口配置

  • 先从数据手册中查找同步/异步串口在对应的那个数据总线上(APB1和APB2)

STM32F103XX的USART串口配置_第1张图片
  • 查看原理图,引脚分别对应串口的数据收发功能。

  • 设置IO口,配置对应的八种模式

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

    GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽功能
    GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;//9号引脚
    GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;//速度最大
    GPIO_Init(GPIOA,&GPIO_InitStruct);
    
    GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空输入
    GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;//10号引脚
    GPIO_Init(GPIOA,&GPIO_InitStruct);
  • 配置串口模式

//配置串口模式
    //1,开串口1时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
    //2,配置串口1的模式
    USART_InitStruct.USART_BaudRate = 115200;//串口波特率
    USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//不适用硬件控制
    USART_InitStruct.USART_Mode = USART_Mode_Rx|USART_Mode_Tx;//开启发送和接收
    USART_InitStruct.USART_Parity = USART_Parity_No;//不使用奇偶校验
    USART_InitStruct.USART_StopBits = USART_StopBits_1;//1位停止位
    USART_InitStruct.USART_WordLength = USART_WordLength_8b;//8位字长
    
    USART_Init(USART1,&USART_InitStruct);
    //3,使能串口
    USART_Cmd(USART1, ENABLE);
  • 配置中断

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
    //开启空闲中断
    USART_ITConfig(USART1, USART_IT_IDLE, ENABLE);
    
    //初始化中断
    //中断配置
    NVIC_InitStruct.NVIC_IRQChannel=USART1_IRQn;//串口的中断通道
    NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;//使能中断
    NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0;//抢占优先级
    NVIC_InitStruct.NVIC_IRQChannelSubPriority=0;//响应优先级
    NVIC_Init(&NVIC_InitStruct);

你可能感兴趣的:(STM32F103X,嵌入式硬件,stm32)