OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4259|回复: 15

请教一下大家和原子哥,关于串口接收的问题。

[复制链接]

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
发表于 2020-8-20 11:41:02 | 显示全部楼层 |阅读模式
10金钱
请教一下大家和原子哥,关于串口接收的问题。我使用串口调试助手发送16进制报文,但是串口接收没有显示,灯不亮,我发送的是16进制数16 09 01
  1. void USART1_IRQHandler(void)                        //′®¿ú1ÖD¶Ï·tÎñ3ìDò
  2. {
  3.           int i,a;
  4.           u8 res;
  5.         u8 *c;
  6.     if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  
  7.                 {
  8.                 RxBuffer1[i++]=USART_ReceiveData(USART1);

  9.                         }                 
  10.                         if((0x16==RxBuffer1[0])&&(0x09==RxBuffer1[1])&&0x01==RxBuffer1[2])
  11.   {
  12.                             LED0=0;
  13.                 delay_ms(250);
  14.                     


  15.         }
  16.        
  17. }
复制代码


最佳答案

查看完整内容[请看2#楼]

你在串口调试助手上发送数据给单片机吧,你要和单片机约定,比如如果收到0x11,0x22,0x33时,数据发送完,然后上面的全局变量i = 0;然后开始下一次传输这样,不要急,先发送几个数据,然后printf出来看看对不对,慢慢调
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

34

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
912
金钱
912
注册时间
2019-7-5
在线时间
189 小时
发表于 2020-8-20 11:41:03 | 显示全部楼层
支持者2400 发表于 2020-8-20 14:47
不行啊,以前做出来过,有印象,但是具体细节想不起来

你在串口调试助手上发送数据给单片机吧,你要和单片机约定,比如如果收到0x11,0x22,0x33时,数据发送完,然后上面的全局变量i = 0;然后开始下一次传输这样,不要急,先发送几个数据,然后printf出来看看对不对,慢慢调
回复

使用道具 举报

34

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
912
金钱
912
注册时间
2019-7-5
在线时间
189 小时
发表于 2020-8-20 12:05:42 | 显示全部楼层
串口中断里面不要加延时啊
回复

使用道具 举报

9

主题

219

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1434
金钱
1434
注册时间
2020-5-12
在线时间
394 小时
发表于 2020-8-20 13:32:42 | 显示全部楼层
这个程序问题很大啊。。首先i 你定义成局部变量,你记录不了数据。先把i定义成 static int i = 0;然后将数据判断放在main去处理,别放在中断里面。
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2020-8-20 13:33:33 | 显示全部楼层
liaohaijian 发表于 2020-8-20 12:05
串口中断里面不要加延时啊

延时去掉了,还是没反应
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2020-8-20 13:44:28 | 显示全部楼层
叶子君 发表于 2020-8-20 13:32
这个程序问题很大啊。。首先i 你定义成局部变量,你记录不了数据。先把i定义成 static int i = 0;然后将数 ...

以前就是这样做的,没问题啊
回复

使用道具 举报

2

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
481
金钱
481
注册时间
2019-10-25
在线时间
66 小时
发表于 2020-8-20 14:03:55 | 显示全部楼层
支持者2400 发表于 2020-8-20 13:44
以前就是这样做的,没问题啊

这样问题很大,首先局部变量i的值初始化不一定是0,那么RxBuffer1就有可能超限,出现问题
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2020-8-20 14:06:11 | 显示全部楼层
ttg 发表于 2020-8-20 14:03
这样问题很大,首先局部变量i的值初始化不一定是0,那么RxBuffer1就有可能超限,出现问题

我把i移到全局变量了,也归于0了,还是不行
回复

使用道具 举报

34

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
912
金钱
912
注册时间
2019-7-5
在线时间
189 小时
发表于 2020-8-20 14:33:18 | 显示全部楼层
支持者2400 发表于 2020-8-20 14:06
我把i移到全局变量了,也归于0了,还是不行

我觉得你还是先去搞懂串口是怎么传输先,串口传输是每传输一个字节进入一次中断的,看看原子的代码吧
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2020-8-20 14:38:47 | 显示全部楼层
liaohaijian 发表于 2020-8-20 14:33
我觉得你还是先去搞懂串口是怎么传输先,串口传输是每传输一个字节进入一次中断的,看看原子的代码吧

以前做过,时间长忘了, 我是处理报文
回复

使用道具 举报

34

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
912
金钱
912
注册时间
2019-7-5
在线时间
189 小时
发表于 2020-8-20 14:45:39 | 显示全部楼层
支持者2400 发表于 2020-8-20 14:38
以前做过,时间长忘了, 我是处理报文

那你直接拿原子哥的代码就可以了
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2020-8-20 14:47:42 | 显示全部楼层
liaohaijian 发表于 2020-8-20 14:45
那你直接拿原子哥的代码就可以了

不行啊,以前做出来过,有印象,但是具体细节想不起来
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2020-8-20 15:15:55 | 显示全部楼层
liaohaijian 发表于 2020-8-20 14:56
你在串口调试助手上发送数据给单片机吧,你要和单片机约定,比如如果收到0x11,0x22,0x33时,数据发送完, ...

res=USART_ReceiveData(USART1);这一步没问题,现在的问题在这,RxBuffer1=res;这一步始终想不起来怎么写的了
回复

使用道具 举报

34

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
912
金钱
912
注册时间
2019-7-5
在线时间
189 小时
发表于 2020-8-20 15:21:04 | 显示全部楼层
支持者2400 发表于 2020-8-20 15:15
res=USART_ReceiveData(USART1);这一步没问题,现在的问题在这,RxBuffer1=res;这一步始终想不起来怎么 ...

你要理解啊,兄弟
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2020-8-20 15:26:45 | 显示全部楼层
liaohaijian 发表于 2020-8-20 15:21
你要理解啊,兄弟

你帮我点播一下,实在想不起来了
回复

使用道具 举报

34

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
912
金钱
912
注册时间
2019-7-5
在线时间
189 小时
发表于 2020-8-20 15:40:20 | 显示全部楼层
支持者2400 发表于 2020-8-20 15:26
你帮我点播一下,实在想不起来了
......................

回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 10:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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