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

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

[复制链接]
请叫我小张张 提问时间: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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版