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

HAL 串口的BUG 重大发现

[复制链接]
党国特派员 提问时间:2016-11-17 09:25 /
本帖最后由 党国特派员 于 2016-11-17 16:20 编辑

在NUCLEO-F412ZG上使用串口时发现的:
串口使用USART3,115200 8 NONE 1
  1.   while (1)
  2.   {

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

复制代码
按说应该是串口输出:
UserA button pressed.
UserB button pressed.
可是结果并不是想象的那样,
输出大部分是UserA button pressed.偶尔会出现不全的第二句
大家有没有遇到过。是我哪里没有弄对?还是HAL 的BUG?

问题找到了:原来是长度没有给对。。。“\r\n” 看上去是4个字符,其实C编译的时候只是0x0D,0x0A只是表示两个字符。
总结一下,字符长度,还是用strlen函数计算比较好,我为了方便,就自己数了一下,结果就错了。


<
收藏 1 评论18 发布时间:2016-11-17 09:25

举报

18个回答
wolfgang2015 回答时间:2016-11-17 13:18:56
问题在这里'....\r\n",25....'

\r \n是控制字符,各占1位~~~
风子 回答时间:2016-11-17 09:45:19
是不是size参数的问题?
haifeng-388081 回答时间:2016-11-17 09:56:06
这个,,,,还 没有用过F4的板子。
党国特派员 回答时间:2016-11-17 09:56:41
风子 发表于 2016-11-17 09:45
是不是size参数的问题?

size,我是数过的,没错。
有开发板的,可以测试下
党国特派员 回答时间:2016-11-17 09:57:27
haifeng-388081 发表于 2016-11-17 09:56
这个,,,,还 没有用过F4的板子。

有其它的开发板也可以测试,不一定非要F4的板子。
风子 回答时间:2016-11-17 09:58:19
党国特派员 发表于 2016-11-17 09:56
size,我是数过的,没错。
有开发板的,可以测试下

手边没这个型号,我数的size是23,,要不你放到数组里,用sizeof试试
creep 回答时间:2016-11-17 10:33:48
波特率调高些或者发送的延时加长试下!
xhzheng 回答时间:2016-11-17 10:36:03
取消按键评定部分,直接循环输出,看看是否可以循环显示A/B语句;
可以的话,再进行调试,
而且A/B按键之间没有延时,最后加了延时,所以,应该执行A语句的可能性最大;
忘记一切Q 回答时间:2016-11-17 10:44:01
党国特派员 回答时间:2016-11-17 11:18:46
xhzheng 发表于 2016-11-17 10:36
取消按键评定部分,直接循环输出,看看是否可以循环显示A/B语句;
可以的话,再进行调试,
而且A/B按键之间 ...

我这里没有按键,就是下接输出两个语句。
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版