高二毛 发表于 2016-12-7 08:55:27

:D:D:D结合提供的例子好好研究研究。串口还是最简单的。

斜阳__ 发表于 2016-12-7 09:17:05

首先看进接收中断了么?如果没进,看串口配置哪里出错了;如果进了,好好捋一下中断内的处理过程

anobodykey 发表于 2016-12-7 09:21:46

看下官方例程吧

oktigerxia 发表于 2016-12-7 14:55:29



USART_Cmd(USART2, ENABLE);串口2使能没

oktigerxia 发表于 2016-12-7 14:56:58

void GPIO_Configuration_USART2(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
       
        /*使能USART1时钟*/
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);

    /* Configure USART2 Rx (PA.3) as input floating */
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
       
        /* Configure USART2 Tx (PA.02) as alternate function push-pull */
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

    /*设置USART1波特率为115200*/
    USART_Baud_Rate(USART2,38400);

        /* Enable USART2 Receive and Transmit interrupts */
        USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);

        /* Enable the USART2 */
        USART_Cmd(USART2, ENABLE);
   
       
        USART_ClearFlag(USART2, USART_FLAG_TC);
        USART_ClearFlag(USART2,USART_IT_RXNE);        //先清标志,否则第一个数据有可能出错
   
}



void USART2_IRQHandler(void)
{

    if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
        {
   
      OEMVSTATIC.Buf = USART_ReceiveData(USART2);
                OEMVSTATIC.Count++;
                if(OEMVSTATIC.In >= OEMVSTATIC_Buf_Size)OEMVSTATIC.In = 0;
                if(OEMVSTATIC.Count >= OEMVSTATIC_Buf_Size)
                {
                        OEMVSTATIC.Count = 0;
                        OEMVSTATIC.In = 0;
                }
      OEMVSTATICDatTimeOut = 0;
      USART_ClearFlag(USART2, USART_FLAG_RXNE);
    }
}

参考下

zbber 发表于 2016-12-7 16:39:19

我只是路过打酱油的

请叫我小张张 发表于 2016-12-7 18:24:29

oktigerxia 发表于 2016-12-7 14:55
USART_Cmd(USART2, ENABLE);串口2使能没

使能了 这个问题是解决了 但是我又发现了个问题 就是我换了个串口又不能实现了

请叫我小张张 发表于 2016-12-7 18:25:25

斜阳__ 发表于 2016-12-7 09:17
首先看进接收中断了么?如果没进,看串口配置哪里出错了;如果进了,好好捋一下中断内的处理过程 ...

现在的问题是我从新换了串口又实现不了了配置也是对的啊

请叫我小张张 发表于 2016-12-7 18:25:51

高二毛 发表于 2016-12-7 08:55
结合提供的例子好好研究研究。串口还是最简单的。

现在的问题是我从新换了串口又实现不了了配置也是对的啊

请叫我小张张 发表于 2016-12-7 18:26:18

oktigerxia 发表于 2016-12-7 14:55
USART_Cmd(USART2, ENABLE);串口2使能没

使能了。现在的问题是我从新换了串口又实现不了了配置也是对的啊
页: 1 [2] 3
查看完整版本: 为什么我串口能发但是接受不了求大神帮忙,快半个月了