打印
[STM32F4]

HAL 串口的BUG

[复制链接]
933|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Ketose|  楼主 | 2016-11-16 23:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Ketose 于 2016-11-16 23:38 编辑

在NUCLEO-F412ZG上使用串口时发现的:
串口使用USART3,115200 8 NONE 1

  while (1)
  {

        while(HAL_UART_GetState(&huart3) != HAL_UART_STATE_READY);
        HAL_UART_Transmit(&huart3,(uint8_t*)"UserA button pressed.\r\n",25,100);
        while(HAL_UART_GetState(&huart3) != HAL_UART_STATE_READY);
        HAL_UART_Transmit(&huart3,(uint8_t*)"UserB button pressed.\r\n",25,100);
        HAL_Delay(1000);
  }

按说应该是串口输出:
UserA button pressed.
UserB button pressed.
可是结果并不是想象的那样,大家有没有遇到过。是我哪里没有弄对?还是HAL 的BUG?


沙发
yklstudent| | 2016-11-17 08:15 | 只看该作者
输出得是什么样得?

使用特权

评论回复
板凳
Ketose|  楼主 | 2016-11-17 09:03 | 只看该作者
本帖最后由 Ketose 于 2016-11-17 09:26 编辑
yklstudent 发表于 2016-11-17 08:15
输出得是什么样得?

输出大多数情况下是UserA button pressed.也会出现第二句但是不全。

使用特权

评论回复
地板
icecut| | 2016-11-17 10:13 | 只看该作者
把两个 while 都删掉.你就调用发送就行了.别等.不用你等.hal 会帮你等

使用特权

评论回复
5
Ketose|  楼主 | 2016-11-17 10:17 | 只看该作者
icecut 发表于 2016-11-17 10:13
把两个 while 都删掉.你就调用发送就行了.别等.不用你等.hal 会帮你等

刚开始的时候,我是没用while等的,直接输出,但是结果是一样的。你可以测试下。

使用特权

评论回复
6
icecut| | 2016-11-17 10:35 | 只看该作者
我一直在用啊.只是没用412

使用特权

评论回复
7
Ketose|  楼主 | 2016-11-17 11:17 | 只看该作者
icecut 发表于 2016-11-17 10:35
我一直在用啊.只是没用412

我在用其它的板子测试,看是HAL的BUG,还是412的BUG,90%都有可能是HAL的BUG.

使用特权

评论回复
8
Ketose|  楼主 | 2016-11-17 12:20 | 只看该作者
icecut 发表于 2016-11-17 10:35
我一直在用啊.只是没用412

单步的时候是没有问题,运行起来结果就不正确了。

使用特权

评论回复
9
icecut| | 2016-11-17 12:56 | 只看该作者
把100改成 HAL_MAX_DELAY

使用特权

评论回复
10
huarana| | 2016-11-17 13:47 | 只看该作者
Ketose 发表于 2016-11-17 11:17
我在用其它的板子测试,看是HAL的BUG,还是412的BUG,90%都有可能是HAL的BUG.

只可能是你的bug。

使用特权

评论回复
11
Ketose|  楼主 | 2016-11-17 13:54 | 只看该作者
huarana 发表于 2016-11-17 13:47
只可能是你的bug。

确实是我的BUG,“\r\n”应该是两个字节,不是4字节。。。

使用特权

评论回复
12
robter| | 2016-11-17 14:27 | 只看该作者
没遇到这样的问题,学习了

使用特权

评论回复
13
Ketose|  楼主 | 2016-11-17 16:23 | 只看该作者
问题找到了:原来是长度没有给对。。。“\r\n” 看上去是4个字符,其实C编译的时候只是0x0D,0x0A只是表示两个字符。
总结一下,字符长度,还是用strlen函数计算比较好,我为了方便,就自己数了一下,结果就错了。

使用特权

评论回复
14
ayl439| | 2016-11-18 00:08 | 只看该作者
顶楼主~

使用特权

评论回复
15
戈卫东| | 2016-11-18 01:06 | 只看该作者
还要数长度,太容易出错了。

使用特权

评论回复
16
戈卫东| | 2016-11-18 01:07 | 只看该作者
维护起来会要命的。。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:我最讨厌两种人:一是有种族歧视的; 二是黑人;三是不识数的!

63

主题

3204

帖子

15

粉丝