OpenEdv-开源电子网

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

新人请教,STM32L151C8的USART只能进入发送中断,无法进入接收中断

[复制链接]

11

主题

55

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
290
金钱
290
注册时间
2013-9-2
在线时间
9 小时
发表于 2013-9-2 17:48:37 | 显示全部楼层 |阅读模式
STM32时钟配置:


串口1配置:



中断配置:


主函数:


现在的问题是,可以进入发送中断,但是进不了接收中断,最后一直停留在while(Uart1_Rev_Num <= 49),请大侠们指教,在下感激不尽,先谢谢啦!
众人划桨开大船!!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

1606

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2222
金钱
2222
注册时间
2011-12-15
在线时间
37 小时
发表于 2013-9-2 19:10:32 | 显示全部楼层
进不了中断,首先看通讯是否正常。然后看相应的中断标志位是否打开,中断函数是否对应的正确?
专业制作STM32 物联网通信模块板,模块交流群:369840039。
回复 支持 反对

使用道具 举报

11

主题

55

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
290
金钱
290
注册时间
2013-9-2
在线时间
9 小时
 楼主| 发表于 2013-9-3 08:31:45 | 显示全部楼层

接收中断已经使能了,但是状态寄存器中对应接收部分的标志位一直没有反应,调试的时候,发觉一直没有进入接收中断,刚开始以为硬件的问题,但是用示波器看的时候又发现有波形,所以很迷惑,求解答,先谢谢啦!

众人划桨开大船!!!
回复 支持 反对

使用道具 举报

11

主题

55

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
290
金钱
290
注册时间
2013-9-2
在线时间
9 小时
 楼主| 发表于 2013-9-3 14:36:09 | 显示全部楼层
回复【2楼】ST-FAE-SALE:
---------------------------------
等级: 
注册时间:2013/09/02 17:27 
回复数: 1 
主题数: 1
论坛积分:4
在线 

 接收中断已经使能了,接着调试的时候,发觉进入了溢出中断,处理了溢出中断,使之不进入溢出中断,但还是进不了接收中断,希望您指导一下可能出现错误的地方,不胜感激。
众人划桨开大船!!!
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2013-9-3 15:51:54 | 显示全部楼层
你开的USART_IT_TXE是发送中断,自然只能仅发送中断啊。
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

11

主题

55

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
290
金钱
290
注册时间
2013-9-2
在线时间
9 小时
 楼主| 发表于 2013-9-3 16:46:29 | 显示全部楼层
首先谢谢1楼和4楼的帮助,我现在已经调出来了,将我的调试经验和大家共享一下。
主要有两方面的原因:1、串口GPIO的配置有问题,具体的代码如下,我少了GPIO_PinAFConfig(复用功能配置


)所对应的两句话,即图上蓝色部分。
                             2、在没有添加GPIO_PinAFConfig所对应的两句配置之前,程序老是进入溢出中断,但是添加配置之后,就没有进入溢出中断了。具体我还没有搞清楚是什么原因,但是还是将溢出中断的处理方法说明一下,需要读DR和SR来清除溢出中断。
众人划桨开大船!!!
回复 支持 反对

使用道具 举报

23

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
284
金钱
284
注册时间
2013-8-27
在线时间
37 小时
发表于 2013-9-5 11:27:47 | 显示全部楼层
回复【6楼】I6believe:
--------------- ------------------
楼主的问题 还是没有太明白,是不能进入接收中断么,
另外 复用时钟 不开应该也可以的把,你把IO设置的时候,已经默认为usart1功能了把,如果是发生了重映射的话,那是一定要打开这个时钟,,还有,串口发送中断使能一般初始化的时候不要打开,用的时候打开,用过以后要关掉 USART_ITConfig(USART1, USART_IT_TXE, DISABLE);要不然会一直进入发送中断。。。都是前段时间的一点心得,当然也有可能理解的不全,大家一起来讨论,这样才进步的快!!!
回复 支持 反对

使用道具 举报

11

主题

55

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
290
金钱
290
注册时间
2013-9-2
在线时间
9 小时
 楼主| 发表于 2013-9-10 17:01:10 | 显示全部楼层
回复【7楼】kevin9101:
---------------------------------
1、针对我自己的代码,不能进入接收中断的原因是串口没有配置好,即没有开启GPIO复用功能,如果开启复用功能,则能进入接收中断了。
2、如果只使能串口接收中断时,溢出中断自动也使能了,如果不想进入溢出中断,关闭就可以了。
以上是我的看法,大家共同讨论。。。
众人划桨开大船!!!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-13 07:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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