请选择 进入手机版 | 继续访问电脑版

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

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

[复制链接]
STMCU小助手 发布时间:2021-11-14 21:04
STM32G474-Nucleo调试问题——串口printf重定向无法打印字符
: h: k/ R! ^' m5 M3 v5 b! Q按照官方提供的参考例程,在设置LPUART1为串口收发端口后,生成代码。添加以下语句:
/ `  a" z' G$ F! ~5 a4 E( J$ o' |2 q& u2 s" X- D7 O, ]
  1. #ifdef __GNUC__' ^' {. M8 {& _- K  E3 x' T6 S# l
  2. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
    : F* [6 i2 Y3 g; A! ^
  3. #else
    9 P1 _! Y+ H* V9 T& e. X' \5 M
  4. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
    - n8 N6 H0 [0 P1 i9 V+ U
  5. #endif /* __GNUC__ */
复制代码
  1. PUTCHAR_PROTOTYPE) G# c$ ~5 d( K0 B# u$ }
  2. {8 q2 e- b" W6 J( _( Z; P0 t2 _
  3.   /* e.g. write a character to the LPUART1 and Loop until the end of transmission */
    ) g: a9 D" H9 a9 P& Y- F2 T8 t
  4.   HAL_UART_Transmit(&hlpuart1, (uint8_t *)&ch, 1, 0xFFFF);
      U0 s" x& D, w

  5. 1 L. @* V% o" s) w6 `
  6.   return ch;
    1 B7 k1 P( l( x6 q# t+ |
  7. }
复制代码

( ]1 Y2 Z1 I( l9 L8 m9 _再执行语句printf("How are you?");,发现串口没有办法打印字符。
9 J/ f  Z5 Y9 q9 A( f! c, w! f, x因此便在Cubemx中与例程一一比对,几乎没有差错,甚至启用了文本比较器进行代码的比较,也发现几乎没有什么差别。于是便上网查询原因,解决方法如下:
) m: \$ ~0 W; a2 d
386aec33aae14f13b4a280e4128387de.png
8 `- g4 R  d) K& H4 ?

2 N1 i" j- Q- l" n2 Q, n# [* z/ v在keil魔术棒选项中勾选Use MicroLIB选项,使用微库,防止printf()之类的函数使系统采用了半主机模式,而微库不会导致系统采用半主机模式。- Z6 ~. \+ s' M
问题解决,结果如下:
4 V1 H2 Z% |1 g4 [0 x. C6 l$ d
- ?7 J0 U1 I9 F6 }% F
0096aedeb5544631888629096976c674.png
* d0 j: g- p. x5 l. b" }! |$ J

, Y0 g6 }+ @; J* V  f3 c# E+ m4 G5 D6 S/ X, q. n2 L1 u% e

5 E' z( J" h# A( l
收藏 评论0 发布时间:2021-11-14 21:04

举报

0个回答

所属标签

相似分享

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