7236|11

22

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

新手求助!!!STM32在调试状态下子函数设置断点不能进入 [复制链接]

 
   各位大神好,本人是STM32初学者,现在在用STM32F103VET6做一个东西:将串口屏发送过来的数据用串口接收,再通过ZigBee发出,现在在调试串口接收屏发来的数据,接收中断函数正常,写了另一个子函数对接收数据进行处理,发现在这个子函数中设置断点不能执行到,必须点一下“RST”复位一下再能执行到,想知道哪出问题了,已经查了好几天了,谢谢诸位大神!!!

可以看到中断函数正常。

主函数也能进入断点

主函数中的子函数STM32-ZigBee()无法进入断点

当重新复位一下“RST”就能进入断点了
头文件的声明也都写了,百思不得其解,求助各位大神了,万分感谢
此帖出自stm32/stm8论坛

最新回复

空闲中断是可以用的,用在判断一帧数据接收完成的中断,这个是需要读两个寄存器的值就是清除中断,具体在数据手册上有说明,这个中断就不需要额外消耗定时器来超时判断了   详情 回复 发表于 2016-7-18 09:39
点赞 关注
 

回复
举报

1059

帖子

1

TA的资源

版主

沙发
 
中断函数标志不对,不是USART_IT_IDLE
此帖出自stm32/stm8论坛

点评

空闲中断是可以用的,用在判断一帧数据接收完成的中断,这个是需要读两个寄存器的值就是清除中断,具体在数据手册上有说明,这个中断就不需要额外消耗定时器来超时判断了  详情 回复 发表于 2016-7-18 09:39
这个标志是空闲帧中断,表示一帧数据接收完毕,是串口接收不确定长度数据时用的,我在网上看到有人用就用了  详情 回复 发表于 2016-7-17 16:07
 
 

回复

22

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
qwerghf 发表于 2016-7-17 10:40
中断函数标志不对,不是USART_IT_IDLE

这个标志是空闲帧中断,表示一帧数据接收完毕,是串口接收不确定长度数据时用的,我在网上看到有人用就用了
此帖出自stm32/stm8论坛
 
 

回复

1059

帖子

1

TA的资源

版主

4
 
不是这样用,不需要这个
此帖出自stm32/stm8论坛

点评

刚才去掉IDLE标志位了,可以进入子函数的断点,但新情况出现了,接收数组Rxbuffer2[]中接收数据出现错误,即接收数字、字母不是正确的,所以请问我现在要每次接收56个字符,即56个字符算作一帧数据,我该如何设置接  详情 回复 发表于 2016-7-17 20:56
 
 
 

回复

22

帖子

0

TA的资源

一粒金砂(中级)

5
 
qwerghf 发表于 2016-7-17 18:33
不是这样用,不需要这个

刚才去掉IDLE标志位了,可以进入子函数的断点,但新情况出现了,接收数组Rxbuffer2[]中接收数据出现错误,即接收数字、字母不是正确的,所以请问我现在要每次接收56个字符,即56个字符算作一帧数据,我该如何设置接收中断,请指教,谢谢!!
此帖出自stm32/stm8论坛
 
 
 

回复

1059

帖子

1

TA的资源

版主

6
 
不需要清除标志位,你读取数据之后标志位会自动清除,你加入一个超时定时器,每次接受开启定时器计数
此帖出自stm32/stm8论坛

点评

你是说“USART_ClearITPendingBit()”清除标志位不要了,我看别人的程序都用的,这个应该要的吧。 超时定时器是设定多长时间没有数据传来就算完成一帧数据接收了,对吗?我没用过,现在查查  详情 回复 发表于 2016-7-17 21:23
 
 
 

回复

22

帖子

0

TA的资源

一粒金砂(中级)

7
 
qwerghf 发表于 2016-7-17 21:09
不需要清除标志位,你读取数据之后标志位会自动清除,你加入一个超时定时器,每次接受开启定时器计数

你是说“USART_ClearITPendingBit()”清除标志位不要了,我看别人的程序都用的,这个应该要的吧。    超时定时器是设定多长时间没有数据传来就算完成一帧数据接收了,对吗?我没用过,现在查查
此帖出自stm32/stm8论坛

点评

清除标志位要保留的,不然接收不到数据,我试了  详情 回复 发表于 2016-7-17 22:22
 
 
 

回复

1059

帖子

1

TA的资源

版主

8
 
不需要的,你要是对手册熟悉就知道了,不清没关系,当你数据读出来就自动清除了,你根据波特率算你这一数据帧需要多久呀,我之前设置我自己的数据帧500ms,不过我的有协议,只要满足协议就可以判断接受完成,不需要超过500ms
此帖出自stm32/stm8论坛
 
 
 

回复

1059

帖子

1

TA的资源

版主

9
 
我是判断整个数据帧,你也可以判断一个字节长度的时间
此帖出自stm32/stm8论坛
 
 
 

回复

22

帖子

0

TA的资源

一粒金砂(中级)

10
 
豆包 发表于 2016-7-17 21:23
你是说“USART_ClearITPendingBit()”清除标志位不要了,我看别人的程序都用的,这个应该要的吧。    超 ...

清除标志位要保留的,不然接收不到数据,我试了
此帖出自stm32/stm8论坛
 
 
 

回复

1234

帖子

4

TA的资源

纯净的硅(高级)

11
 
qwerghf 发表于 2016-7-17 10:40
中断函数标志不对,不是USART_IT_IDLE

空闲中断是可以用的,用在判断一帧数据接收完成的中断,这个是需要读两个寄存器的值就是清除中断,具体在数据手册上有说明,这个中断就不需要额外消耗定时器来超时判断了
此帖出自stm32/stm8论坛
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 

回复

22

帖子

0

TA的资源

一粒金砂(中级)

12
 
谢谢大家,现在已经解决了,IDLE空闲中断是可以用来判断一帧数据接收完毕,USART_ClearITPendingBit()是可以不加的,手册上也确实是这么说的。我的程序中发送时使用While()判断语句忘了加break,导致循环不出来
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表