OpenEdv-开源电子网

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

探索者串口发送数据死循环

[复制链接]

9

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2017-9-16
在线时间
19 小时
发表于 2018-1-15 15:18:30 | 显示全部楼层 |阅读模式
1金钱
当我接收到一个数据之后,下面的程序就开始发送hello word然后一直发一直发,停不下来。
考虑过用下面的两个函数,但是不是很懂,还请各位大佬指教一下。
USART_ClearITPendingBit()
USART_ClearFlag()




void USART1_IRQHandler(void)
{
        u8 d;
        static unsigned char display[]="hello word";
        if(USART_GetITStatus(USART1,USART_IT_RXNE))
        {
                        for(d=0;d<sizeof(display);d++)
                        {
                                USART_SendData(USART1,display[d]);
                                while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)!=SET);
                        }
        }
}

最佳答案

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

问题已经解决了,当时其实程序都写对了。。。当时接收到数据之后,发送了两个hello word然后我以为有问题,就一直改,结果是我的串口助手没调好,以文本形式发送。。。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2017-9-16
在线时间
19 小时
 楼主| 发表于 2018-1-15 15:18:31 | 显示全部楼层
路人曦 发表于 2018-1-15 17:06
立即发送写函数就行嘞。。。讲真没必要用中断,得到数据就发送,收到数据就回复,这些写在函数里面都很容 ...

问题已经解决了,当时其实程序都写对了。。。当时接收到数据之后,发送了两个hello word然后我以为有问题,就一直改,结果是我的串口助手没调好,以文本形式发送。。。。。
回复

使用道具 举报

3

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2017-5-4
在线时间
21 小时
发表于 2018-1-15 15:39:00 | 显示全部楼层
没有清除中断,所以USART1中断一直都会触发,d又是个局部变量,每次进来都是0,所以一直发
回复

使用道具 举报

9

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2017-9-16
在线时间
19 小时
 楼主| 发表于 2018-1-15 15:46:32 | 显示全部楼层
mill 发表于 2018-1-15 15:39
没有清除中断,所以USART1中断一直都会触发,d又是个局部变量,每次进来都是0,所以一直发

那用哪个函数去清除中断呢?USART_ClearITPendingBit吗?
回复

使用道具 举报

9

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2017-9-16
在线时间
19 小时
 楼主| 发表于 2018-1-15 15:49:21 | 显示全部楼层
mill 发表于 2018-1-15 15:39
没有清除中断,所以USART1中断一直都会触发,d又是个局部变量,每次进来都是0,所以一直发

d是局部变量没关系啊,我只要执行完for就好了啊,然后下次进入中断又重新赋值啊,数组是静态变量,所以和d无关吧
回复

使用道具 举报

7

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
434
金钱
434
注册时间
2017-8-21
在线时间
75 小时
发表于 2018-1-15 16:11:15 | 显示全部楼层
= = 串口中断发送。。。一般来说只会用串口中断来接收。
回复

使用道具 举报

9

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2017-9-16
在线时间
19 小时
 楼主| 发表于 2018-1-15 16:14:59 | 显示全部楼层
路人曦 发表于 2018-1-15 16:11
= = 串口中断发送。。。一般来说只会用串口中断来接收。

这个我也知道。。。。但是,假如说我要立即发送这个东西呢,就是说一接收到就立马返回一个值
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13092
金钱
13092
注册时间
2012-11-26
在线时间
3810 小时
发表于 2018-1-15 16:18:30 | 显示全部楼层
真不知道你这个中断写的有个毛意义
回复

使用道具 举报

9

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2017-9-16
在线时间
19 小时
 楼主| 发表于 2018-1-15 16:49:57 | 显示全部楼层
jermy_z 发表于 2018-1-15 16:18
真不知道你这个中断写的有个毛意义

我知道我没有写接收到数据的处理函数。。。。但是和这个无关啊。。。
回复

使用道具 举报

7

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
434
金钱
434
注册时间
2017-8-21
在线时间
75 小时
发表于 2018-1-15 17:06:49 | 显示全部楼层
彼岸花 发表于 2018-1-15 16:14
这个我也知道。。。。但是,假如说我要立即发送这个东西呢,就是说一接收到就立马返回一个值

立即发送写函数就行嘞。。。讲真没必要用中断,得到数据就发送,收到数据就回复,这些写在函数里面都很容易,不关中断不中断的问题
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-19 22:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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