找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2315|回复: 6
打印 上一主题 下一主题
收起左侧

关于stm32串口接收的问题

[复制链接]
回帖奖励 25 黑币 回复本帖可获得 5 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
ID:731303 发表于 2020-5-5 21:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
附程序如下
void USART2_IRQHandler(void){         
        u8 res;              
       if(USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET )     //接收数据寄存器非空中断
                 {
                         res =USART_ReceiveData (USART2);//将进入串口2的哪一个数据取出
                         if((USART2_RX_STA&0X8000)==0)   //表明 要么串口2还没有收到数据 或者 收到数据已经后被调用过
                         {
                                if(USART2_RX_STA<USART2_REC_LEN) //判断缓存器是不是已经存满了
                                 {
                                         TIM_SetCounter(TIM3 ,0);//设置TIMx计数器寄存器值 清零定时器 避免其计时到达 进入定时器中断
                                         if(USART2_RX_STA==0)//判断缓存器中是否已经存入数据
                                                 TIM_Cmd (TIM3,ENABLE );//给定时器3 一个新的状态 使能它
                                         USART2_RX_BUF[USART2_RX_STA++]=res;
                                 }
                                 else
                                 {
                                         USART2_RX_STA|=0X8000; //给接收完成标志位置1
                                 }
                    }
                 }
}




如果串口正常接收了两次数据 ,但是第一次数据的长度比第二次收到的长,那么USART2_RX_BUF里面会有第一个数据的残留值吗?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:606489 发表于 2020-5-7 14:28 | 只看该作者
如果你用完之后清零了就不会有
回复

使用道具 举报

板凳
ID:236035 发表于 2020-5-7 15:56 | 只看该作者
会有残留,但不用担心。有变量USART2_RX_STA确定数据长度。
回复

使用道具 举报

地板
ID:733993 发表于 2020-5-7 18:10 | 只看该作者
会有,还得优化一下
回复

使用道具 举报

5#
ID:746513 发表于 2020-5-7 22:47 | 只看该作者
会有,要清零
回复

使用道具 举报

6#
ID:731303 发表于 2020-5-10 15:51 | 只看该作者

清零是对buf清零,还是对数据长度清零
回复

使用道具 举报

7#
ID:748454 发表于 2020-5-10 16:44 | 只看该作者
有点乱
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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