OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32/FPGA开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...
查看: 779|回复: 29

串口发送中断

[复制链接]

  离线 

3

主题

18

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2018-5-9
在线时间
15 小时
发表于 2018-5-9 14:15:12 | 显示全部楼层 |阅读模式
1金钱
请教一个问题,我打开了发送中断,但是中断标志位无法被清除,发送中断一直会被循环,请教如何清除中断标志位。

20180509101632.png

最佳答案

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

刚刚看了官方BSP里面的代码,官方的处理方式简单粗暴。。。。 直接把TIE给关了。。。
回复

使用道具 举报

  离线 

523

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
135745
金钱
135745
注册时间
2010-12-1
在线时间
1356 小时
发表于 2018-5-9 14:15:13 | 显示全部楼层
刚刚看了官方BSP里面的代码,官方的处理方式简单粗暴。。。。
直接把TIE给关了。。。
无标题.png
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

12

主题

791

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2067
金钱
2067
注册时间
2015-8-25
在线时间
357 小时
发表于 2018-5-9 15:11:11 | 显示全部楼层
发送中断里面又发送数据了吧?
回复

使用道具 举报

  离线 

3

主题

18

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2018-5-9
在线时间
15 小时
 楼主| 发表于 2018-5-9 15:22:07 来自手机 | 显示全部楼层
没有发送数据,只是翻转led灯
回复

使用道具 举报

  离线 

3

主题

18

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2018-5-9
在线时间
15 小时
 楼主| 发表于 2018-5-9 15:52:37 来自手机 | 显示全部楼层
以后要发送数据,现在只是做一个简单的翻转led灯的测试。
回复

使用道具 举报

  离线 

3

主题

18

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2018-5-9
在线时间
15 小时
 楼主| 发表于 2018-5-9 20:44:24 来自手机 | 显示全部楼层
现在是无法清除中断标志位,程序在中断里跳出来之后,又会重复进入发送中断程序。
回复

使用道具 举报

  离线 

20

主题

249

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
383
金钱
383
注册时间
2017-7-17
在线时间
83 小时
发表于 2018-5-9 21:37:52 | 显示全部楼层
这种问题你只能够对照参考手册把相关部分仔细的看看。。
回复

使用道具 举报

  离线 

3

主题

18

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2018-5-9
在线时间
15 小时
 楼主| 发表于 2018-5-9 22:25:48 来自手机 | 显示全部楼层
已经看了两天的参考手册了,实在搞不定了,所以发帖求助
回复

使用道具 举报

  离线 

1

主题

581

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4667
金钱
4667
注册时间
2015-1-15
在线时间
884 小时
发表于 2018-5-9 23:22:09 来自手机 | 显示全部楼层
你就不关发送中断?
来自: 微社区
回复

使用道具 举报

  离线 

3

主题

18

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2018-5-9
在线时间
15 小时
 楼主| 发表于 2018-5-9 23:35:21 来自手机 | 显示全部楼层
我本身就要使用发送完成中断功能,还有即使关掉了发生中断,这接收完一帧数据之后进入串口中断,他判断的TC位为1的时候一样会进入发送完成中断程序
回复

使用道具 举报

  离线 

523

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
135745
金钱
135745
注册时间
2010-12-1
在线时间
1356 小时
发表于 2018-5-10 01:26:55 | 显示全部楼层
手册没写清除方法?
回复

使用道具 举报

  离线 

3

主题

18

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2018-5-9
在线时间
15 小时
 楼主| 发表于 2018-5-10 10:24:26 | 显示全部楼层
不好意思,各位大神,可能是我请教的问题太低级了,我再多花点时间好好学学
回复

使用道具 举报

  在线 

38

主题

397

帖子

0

精华

高级会员

Rank: 4

积分
715
金钱
715
注册时间
2017-11-18
在线时间
161 小时
发表于 2018-5-10 14:32:19 | 显示全部楼层
还有可能是参考手册清除中断的操作方法写错了,看看英文的参考手册吧
不回答我问题我就卖萌给你看。
回复

使用道具 举报

  离线 

3

主题

18

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2018-5-9
在线时间
15 小时
 楼主| 发表于 2018-5-10 16:12:10 来自手机 | 显示全部楼层
美丽的时光机器 发表于 2018-5-10 14:32
还有可能是参考手册清除中断的操作方法写错了,看看英文的参考手册吧

谢谢你!这个就是RT1050的英文参考手册,手册上有说明清除方法,1,重新发送数据,2,关闭TE发送功能,3,进入中段读取STAT,可是这几个方法我都测试过了,都不行,所以就蒙圈了,不过也有可能是我英文不好,对英文手册的理解不够。
回复

使用道具 举报

  离线 

3

主题

18

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2018-5-9
在线时间
15 小时
 楼主| 发表于 2018-5-10 16:15:21 来自手机 | 显示全部楼层
1,我是要在有需要的时候才会发送数据,不可能一直在发送数据的,2,关闭TE可以清除这个标志位,但是重新打开TE的时候,又会马上进入中断程序。
回复

使用道具 举报

  离线 

523

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
135745
金钱
135745
注册时间
2010-12-1
在线时间
1356 小时
发表于 2018-5-11 01:40:44 | 显示全部楼层
一般没人用这个中断啊。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

1

主题

581

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4667
金钱
4667
注册时间
2015-1-15
在线时间
884 小时
发表于 2018-5-11 07:17:43 来自手机 | 显示全部楼层
应该是你不会使用而已
来自: 微社区
回复

使用道具 举报

  离线 

3

主题

18

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2018-5-9
在线时间
15 小时
 楼主| 发表于 2018-5-11 11:14:46 | 显示全部楼层
正点原子 发表于 2018-5-11 01:40
一般没人用这个中断啊。。。

我们却要使用发送完成中断这个功能的,从51,F1,F4,F7一直都在使用,并且一直都很好用的。
回复

使用道具 举报

  离线 

3

主题

18

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2018-5-9
在线时间
15 小时
 楼主| 发表于 2018-5-11 11:17:36 | 显示全部楼层
yklstudent 发表于 2018-5-11 07:17
应该是你不会使用而已

我不会用是肯定的,所以才请教各位大神的。
QQ截图20180511111548.png
回复

使用道具 举报

  离线 

0

主题

101

帖子

0

精华

高级会员

Rank: 4

积分
776
金钱
776
注册时间
2017-12-14
在线时间
172 小时
发表于 2018-5-11 16:40:47 | 显示全部楼层
在中断里读取中断标志两次,确定一下是不是第一次的读取使中断标志清0,如果没有就证明这个方法有问题,如果有,那就是其他使之进行新的中断
回复

使用道具 举报

  离线 

3

主题

18

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2018-5-9
在线时间
15 小时
 楼主| 发表于 2018-5-11 17:08:42 | 显示全部楼层
我测试过多次读取,并且确认没有别处在发送数据,用串口监视软件也在监测,并没有数据在输出,
回复

使用道具 举报

  离线 

523

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
135745
金钱
135745
注册时间
2010-12-1
在线时间
1356 小时
发表于 2018-5-11 18:55:32 | 显示全部楼层
我刚刚测试了下,在中断里面,取反TE,可以让程序正常运行。但是TE取反的次数好多。一秒钟有5.8K左右的取反。好奇怪。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

523

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
135745
金钱
135745
注册时间
2010-12-1
在线时间
1356 小时
发表于 2018-5-11 18:55:55 | 显示全部楼层
完全不像手册说的。我的例程是1秒钟发送一个数据,按理说只要取反一次TE就可以了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

523

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
135745
金钱
135745
注册时间
2010-12-1
在线时间
1356 小时
发表于 2018-5-11 18:57:00 | 显示全部楼层
手册上说的,三种清除TC的方法:
1,对DATA寄存器写入数据(因为如果我只发一个数据,根本不需要再写DATA,所以否决)
2,对TE取反。
3,设置SBK为1。

三个方法都不太灵光。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

3

主题

18

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2018-5-9
在线时间
15 小时
 楼主| 发表于 2018-5-11 19:03:48 | 显示全部楼层
正点原子 发表于 2018-5-11 18:57
手册上说的,三种清除TC的方法:
1,对DATA寄存器写入数据(因为如果我只发一个数据,根本不需要再写DATA, ...

这就是奇怪的地方,这三种方法我都测试无数遍了,都不行!
回复

使用道具 举报

  离线 

523

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
135745
金钱
135745
注册时间
2010-12-1
在线时间
1356 小时
发表于 2018-5-11 20:35:52 | 显示全部楼层
DGZL888 发表于 2018-5-11 19:03
这就是奇怪的地方,这三种方法我都测试无数遍了,都不行!

我问问NXP官方,看有没有解释。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

3

主题

18

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2018-5-9
在线时间
15 小时
 楼主| 发表于 2018-5-11 21:11:45 | 显示全部楼层
正点原子 发表于 2018-5-11 20:45
刚刚看了官方BSP里面的代码,官方的处理方式简单粗暴。。。。
直接把TIE给关了。。。

这个我也测试过,不可行的,发送中断和接收中断共用中断程序,当接收触发中断后程序判断TC位为1的时候还是会进入发送中断程序的。
回复

使用道具 举报

  离线 

3

主题

18

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2018-5-9
在线时间
15 小时
 楼主| 发表于 2018-5-12 01:04:14 | 显示全部楼层
正点原子 发表于 2018-5-11 20:35
我问问NXP官方,看有没有解释。

谢谢您!我们以前用F1,F4,F7做的主板,串口通讯采用的是rs485方式,现在想用RT1052,我们程序对串口的实时性要求比较高,在家指定的字符串发送完成时候,需要将串口快速切换的接收模式,如果RS485没有及时切换为接收模式,会出现两个问题:1,通讯双方同时处于发送状态,容易损坏485芯片,2,接收的数据会出现掉包,这个再用F1做CPU的时候都已经测试过了.
回复

使用道具 举报

  离线 

523

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
135745
金钱
135745
注册时间
2010-12-1
在线时间
1356 小时
发表于 2018-5-12 01:45:53 | 显示全部楼层
DGZL888 发表于 2018-5-12 01:04
谢谢您!我们以前用F1,F4,F7做的主板,串口通讯采用的是rs485方式,现在想用RT1052,我们程序对串口的实时性 ...

不可以用等待发送完成,然后立即切换么?
死等发送完成那种方法。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

3

主题

18

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2018-5-9
在线时间
15 小时
 楼主| 发表于 2018-5-12 08:52:14 | 显示全部楼层
本帖最后由 DGZL888 于 2018-5-12 10:33 编辑
正点原子 发表于 2018-5-12 01:45
不可以用等待发送完成,然后立即切换么?
死等发送完成那种方法。

谢谢您!我的主程序还有很多任务要完成,用F7做过测试,如果要轮询的方式来做,根据任务的不同会有2ms-5ms的延迟,这个延迟是无法被容忍的。如果用发送数据》》等待发送完成就更不行了,有时一次要发送上百个数据的,别的任务就没法运行了。
回复

使用道具 举报

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

本版积分规则




关闭

正点原子STM32/FPGA资料免费洗澡上一条 /1 下一条

正点原子公众号

QQ|联系我们|手机版|官方淘宝店|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-12-14 13:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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