你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 2407|回复: 7

STM32F103串口中断问题

[复制链接]

1

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
2018-8-9
发表于 2018-8-8 23:52:30 | 显示全部楼层 |阅读模式
void USART1_IRQHandler(void)

      if(USART1->SR&(1<<5)) //读寄存器非空
     {
       //接收过程中,写串口
      }
     else if(USART1->SR&(1<<4)) //帧中断
    {

    }




如上程序,如果我在接收过程中 发送串口的话 后续的数据就没有了,也不会进入帧中断
比如 我用上位机发送了10个字符,在接收到第5个字符的时候 往上位机发送了数据,     后续的数据就没有了,也不会进入帧中断了。

如果时正常的接收完成,则一切正常。    我新手,求大神释疑。
<
回复

使用道具 举报

22

主题

541

回帖

41

蝴蝶豆

金牌会员

最后登录
2020-11-4
发表于 2018-8-9 07:56:38 | 显示全部楼层
想要在接收中断中发送,建议中断方式发送
回复 支持 反对

使用道具 举报

16

主题

1710

回帖

241

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2018-8-9 08:36:58 | 显示全部楼层
我一般接收采用中断,发送采用查询
回复 支持 反对

使用道具 举报

12

主题

484

回帖

111

蝴蝶豆

金牌会员

最后登录
2020-6-12
发表于 2018-8-9 08:56:56 | 显示全部楼层
如果你在中断里面用查询的方式发送数据,那当新的数据到来时这个中断可能还没执行完成,那新的数据应该就会丢掉
回复 支持 反对

使用道具 举报

1

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
2018-8-9
 楼主| 发表于 2018-8-9 10:06:59 | 显示全部楼层
yu0405jie 发表于 2018-8-9 08:56
如果你在中断里面用查询的方式发送数据,那当新的数据到来时这个中断可能还没执行完成,那新的数据应该就会 ...

搞定了,过载中断了。 后续数据被丢掉。

我的写法也有问题  if{}else if{},    如果同时发生多个中断 只能判断其中一个状态。

应该为if{}   if{}。
回复 支持 反对

使用道具 举报

1

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
2018-8-9
 楼主| 发表于 2018-8-9 10:09:25 | 显示全部楼层
wudianjun2001 发表于 2018-8-9 08:36
我一般接收采用中断,发送采用查询

不能放在接收过程中发送,

比如波特率9600,   那么在1/9600 时间后,如果RDR中的内容没有被读出,接收移位寄存器的数据又到来, 就会发生ORE(溢出中断),覆盖移位寄存器中的内容,并丢弃后续数据。
回复 支持 反对

使用道具 举报

1

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
2018-8-9
 楼主| 发表于 2018-8-9 10:10:36 | 显示全部楼层
jyl518-283289 发表于 2018-8-9 07:56
想要在接收中断中发送,建议中断方式发送

是的,不能打断接收。  
我这个也是自己调试用,找到问题了。
回复 支持 反对

使用道具 举报

22

主题

541

回帖

41

蝴蝶豆

金牌会员

最后登录
2020-11-4
发表于 2018-8-9 10:50:56 | 显示全部楼层
buten 发表于 2018-8-9 10:10
是的,不能打断接收。  
我这个也是自己调试用,找到问题了。

解决就好
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版