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

关于HAL库的HAL_UART_Receive使用问题

[复制链接]
qtman 提问时间:2020-6-15 17:01 /
各位好,我在使用HAL库的HAL_UART_Receive()函数时遇到了这样的问题,在第一次使用HAL_UART_Receive()进行接收数据的时候是可以的,但是第二次再使用HAL_UART_Receive()接收数据的时候就接收不到数据了,但是程序还是一直在运行,只是无法接收到数据了。我查了挺久都没找到是为什么。求大佬解释!!!!!下面是我写的串口接收的部分程序,整体程序是使用STM32CubeMX生成的
程序.jpg
收藏 评论8 发布时间:2020-6-15 17:01

举报

8个回答
wenyangzeng 回答时间:2020-6-15 21:08:43
楼主至少要确认一下变量value是“T”,才能够进入第二次接收。
而实际应用中貌似让串口一直接收,只对接收数据筛选是否进一步做处理,应该比较合理。

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

回答时间:2020-6-15 22:03:16
楼主仿真一下是不是可以产生中断,但是由于溢出标志位的情况导致数据不进行接收呢?
陌路夕颜 回答时间:2020-6-16 08:40:56
楼主仿真一下是不是可以产生中断,还有在13行处打印接收到的数据到底是什么,或者在14行加断点,看看value的值是多少

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

wo7756 回答时间:2020-6-16 09:20:16
根据条件,第二次接受仅在第一次接收到,且满足条件的时候(接受到自复位“T”)才能执行,把第二个接受函数拿到if外面就ok了
qtman 回答时间:2020-6-16 09:45:49
wenyangzeng 发表于 2020-6-15 21:08
楼主至少要确认一下变量value是“T”,才能够进入第二次接收。
而实际应用中貌似让串口一直接收,只对接收 ...

第一次接收已经成功了,就是说我第一次是能进到if里面打印那个进入第二次串口接收的,在进入if之后我就把value改成了F,然后再进行接收时就接收不到信息了,后面紧跟着打印出来的也是if里面为value赋的值,也就是F,再后面就再也接收不到串口的信息,也进不到if里面了。在这个过程中我的串口助手是一直保持着发送T的状态的。
szongen 回答时间:2020-6-16 11:34:18
试着用一下仿真器看一下value值是不是'T',才能够进入第二次接收
mikecai 回答时间:2020-6-16 13:58:03
cubeMX 生成是 基本代码,只是替您 初始化CPU 【包括 UART口】,UART接收发送方式【DMA 中断 空闲 得自选】,具体处理数据得靠您。不是用了cubeMX 就是 可放心了

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

qtman 回答时间:2020-6-17 11:05:19
mikecai 发表于 2020-6-16 13:58
cubeMX 生成是 基本代码,只是替您 初始化CPU 【包括 UART口】,UART接收发送方式【DMA 中断 空闲 得自选】 ...

这个我知道,我也有自己写程序,并没有说只靠STM32CubeMX生产程序后就直接编译下载使用,我现在的问题是使用HAL_UART_Receive()函数接收了第一次之后为什么接收不到第二次

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版