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

关于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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版