[STM32F1] STM32F03 串口接收,求大神指点

[复制链接]
1988|11
 楼主| wo142857 发表于 2017-1-8 11:29 | 显示全部楼层 |阅读模式
        if (USART_GetITStatus(UART4, USART_IT_RXNE ) != RESET)
        {
                int UART4RevIndex;
               UART4_RevBuf[UART4RevIndex++] = USART_ReceiveData(UART4 );
              if((UART4_RevBuf[0]==0x0A)&&(UART4_RevBuf[7]==0x0D))
                {
                          mark=1;
                }      
               else
              {
                        mark=0;
                       UART4_RevBuf[8]={0};
              }   

        }

菜鸟刚刚开始学习STM32,不知道怎样串口接收多个字节!!!如上程序,我用串口助手一次下发0A 00 01 01 01 01 01 0d,每次只能收到0A,并且感觉DR没有刷新,最后UART4_RevBuf[8]每个字节都是0A。求大神指点怎么回事。但是debug调试的时候,,用串口助手一个字节 一个字节发 最后 UART——REVBuf[8]就能收到所有数据。

a136498491 发表于 2017-1-8 17:55 | 显示全部楼层
UART4RevIndex 是不是应该static?然后if(UART4RevIndex>7)UART4RevIndex = 0;?
玛尼玛尼哄 发表于 2017-1-8 19:24 | 显示全部楼层
串口接收是不是属于中断类型的?
 楼主| wo142857 发表于 2017-1-8 20:44 | 显示全部楼层
玛尼玛尼哄 发表于 2017-1-8 19:24
串口接收是不是属于中断类型的?

是,写到终端任务里面的
 楼主| wo142857 发表于 2017-1-8 20:44 | 显示全部楼层
a136498491 发表于 2017-1-8 17:55
UART4RevIndex 是不是应该static?然后if(UART4RevIndex>7)UART4RevIndex = 0;?

不知道  我明天去试试 看看你的方式行不行
 楼主| wo142857 发表于 2017-1-8 20:46 | 显示全部楼层
a136498491 发表于 2017-1-8 17:55
UART4RevIndex 是不是应该static?然后if(UART4RevIndex>7)UART4RevIndex = 0;?

不知道为什么  我最后看那个接收 数组  八个字节全部是 0A ,感觉应该是  DR没刷新 是不是要清除一个什么标志位?让DR自动刷新
icecut 发表于 2017-1-8 22:04 | 显示全部楼层
http://open.21ic.com/Video/index/id/5562
新手就去公开课学习一下吧.听老司机讲串口总比自己摸索又快又好
void_chen 发表于 2017-1-8 23:05 | 显示全部楼层
UART4RevIndex变量使用错误
fswyt 发表于 2017-1-9 08:54 | 显示全部楼层
首先,UART4RevIndex变量要定义成静态或者全局的,另外定义变量时最好给它初始化。
你现在定义的是局部变量,每次进中断这个变量都是初始值。
皈依 发表于 2017-1-9 08:56 | 显示全部楼层
static   int UART4RevIndex;
 楼主| wo142857 发表于 2017-1-9 11:16 | 显示全部楼层
void_chen 发表于 2017-1-8 23:05
UART4RevIndex变量使用错误

我现在改过来还是不对,始终都是八个一样的字节,都是串口下来第一个字节
玛尼玛尼哄 发表于 2017-1-14 12:39 | 显示全部楼层
官方的例程里有串口的应用的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部