你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

为什么我串口能发但是接受不了求大神帮忙,快半个月了

[复制链接]
请叫我小张张 提问时间:2016-12-6 17:46 /
阅读主题, 点击返回1楼
收藏 1 评论25 发布时间:2016-12-6 17:46
25个回答
高二毛 回答时间:2016-12-7 08:55:27
结合提供的例子好好研究研究。串口还是最简单的。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

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

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

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[OEMVSTATIC.In++] = 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);
    }
}

参考下

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

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使能没

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

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版