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

【经验分享】STM32G474-Nucleo调试问题——串口printf重定向无法打印字符

[复制链接]
STMCU小助手 发布时间:2021-11-14 21:04
STM32G474-Nucleo调试问题——串口printf重定向无法打印字符  }% h3 H1 e! B2 X6 M# p) V
按照官方提供的参考例程,在设置LPUART1为串口收发端口后,生成代码。添加以下语句:  [. {* Y( V$ ], C6 e9 S  o' v

  A3 H+ h! k+ d
  1. #ifdef __GNUC__8 P  P7 B$ `7 x* w% u
  2. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
    0 p5 h3 y; K- h
  3. #else
    . b' J% h4 h1 x( [' q7 A  D: U0 ^
  4. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)' v( E8 k& f0 G7 \& l/ V
  5. #endif /* __GNUC__ */
复制代码
  1. PUTCHAR_PROTOTYPE
    3 e4 X# N1 T1 Y5 M0 y+ W+ Z" ~
  2. {9 f/ H. h: v1 D5 s, x" d  D, D
  3.   /* e.g. write a character to the LPUART1 and Loop until the end of transmission */
    $ q" t$ [* v9 J/ V- h6 `- J
  4.   HAL_UART_Transmit(&hlpuart1, (uint8_t *)&ch, 1, 0xFFFF);
    % y' F( ?: \8 C9 n
  5. % B$ ?" `/ @2 ?) _' {/ u
  6.   return ch;
    : V( [* P: E# P2 C+ a8 ?1 K" B
  7. }
复制代码
, C2 u' m3 p1 o' N! u
再执行语句printf("How are you?");,发现串口没有办法打印字符。
6 A0 h- B5 ]6 W! C, u因此便在Cubemx中与例程一一比对,几乎没有差错,甚至启用了文本比较器进行代码的比较,也发现几乎没有什么差别。于是便上网查询原因,解决方法如下:9 m* `0 z8 I& g0 ^( t
386aec33aae14f13b4a280e4128387de.png

, q3 d6 ^7 y% G" Q. T# E' J2 |9 Y2 N; s5 @/ l
在keil魔术棒选项中勾选Use MicroLIB选项,使用微库,防止printf()之类的函数使系统采用了半主机模式,而微库不会导致系统采用半主机模式。7 P3 }& U% ~% w9 [' P( ^
问题解决,结果如下:, P+ g6 u: D! r) l8 u, e1 ?

  O% F8 k& e7 ?4 N! h
0096aedeb5544631888629096976c674.png

0 U  |9 H+ y( l; Y, k3 H* n" Q, O5 j; i3 F2 t

: T) n- A+ Z+ D0 C# [$ L# f1 }
# w: Y* F  n1 _. C
赞 收藏 评论0 发布时间:2021-11-14 21:04

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版