社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 精华区
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
搜索
查看: 514|回复: 1

[求助] stm32f103vct6串口UART4和UART5怎么配置?

[复制链接]

26

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-2-9 15:08:04 | 显示全部楼层 |阅读模式
本帖最后由 王zhao 于 2017-2-9 15:09 编辑

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;
    }
}

此帖出自stm32/stm8论坛

回复

使用道具 举报

26

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-2-9 16:32:46 | 显示全部楼层
问题解决,硬件问题。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-9-22 01:47 , Processed in 0.279270 second(s), 15 queries , Redis On.

快速回复 返回顶部 返回列表