打印
[应用相关]

stm32f103串口UART4和UART5怎么配置

[复制链接]
7242|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Snow7|  楼主 | 2017-6-30 19:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stm32f103vct6的异步串口UART4和UART5,如下配置貌似只能发数据,不能收数据,连UART4_IRQHandler都进不去,求大神指点一二:
void drv_BT_UartInit(void){
        GPIO_InitTypeDef GPIO_InitStructure;  
        USART_InitTypeDef USART_InitStructure;  
         
        /* config USART1 clock */  
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);  
        
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);   
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);  
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4,ENABLE); //注意UART4是挂载在APB1总线上的,用           RCC_APB1PeriphClockCmd()函数初始化!  
        
        //configˉUART4-TX-PC10  
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
        GPIO_Init(GPIOC, &GPIO_InitStructure);  
        //UART-RX-PC11  
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;  
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;  
         
        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;  
         
        NVIC_SetPriority(UART4_IRQn,PRIORITY_UART4);
        NVIC_EnableIRQ(UART4_IRQn);
        
      USART_DeInit(UART4);
      USART_Init(UART4, &USART_InitStructure);
      USART_Cmd(UART4, ENABLE);
      while(( UART4->SR & USART_FLAG_TC) == 0) __nop();
        
      USART_ITConfig(UART4,USART_IT_RXNE,DISABLE);
      hal_Uart_clear(UART4);
      USART_ITConfig(UART4,USART_IT_RXNE,ENABLE);
        
     USART_ClearFlag(UART4,USART_FLAG_TC);
}

注:
void hal_Uart_clear(USART_TypeDef * pUart){
    volatile int val;
        if(pUart->SR & (USART_FLAG_RXNE|USART_FLAG_ORE)){
        val=pUart->DR;
    }else{
            pUart->SR &= ~0x0F;
    }
}
沙发
feelhyq| | 2017-7-3 09:48 | 只看该作者
      //UART-RX-PC11  
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;  
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
模式是不是配错了,建议换成复用试试

使用特权

评论回复
板凳
yklstudent| | 2017-7-3 13:20 | 只看该作者
楼主写代码这么马虎?????

使用特权

评论回复
地板
huangxd_12345| | 2018-4-19 16:42 | 只看该作者
请教楼主,UART4,UART5的接收问题解决了吗?
我也遇到同样的问题,只能发射,不能接收,连中断都进不去
若已解决,可否指点一下,非常感恩!

使用特权

评论回复
5
mmuuss586| | 2018-4-19 17:56 | 只看该作者
又没什么特殊,根据串口1,2的例程改下就可以了;

使用特权

评论回复
6
xixi2017| | 2018-4-19 23:21 | 只看该作者
总是有人大惊小怪

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

173

主题

926

帖子

3

粉丝