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

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

[复制链接]
STMCU小助手 发布时间:2021-11-14 21:04
STM32G474-Nucleo调试问题——串口printf重定向无法打印字符$ t* ~% t: o: A+ D: p
按照官方提供的参考例程,在设置LPUART1为串口收发端口后,生成代码。添加以下语句:& T+ Y9 {5 t: W* b5 n
9 n# ?! d: Y+ H: F. S* }( U( l
  1. #ifdef __GNUC__8 [1 f( J  ?4 q5 U
  2. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)7 J, z5 v* A8 _- o% g% ^1 X8 U
  3. #else5 V' A$ J/ y  R; ?* ?
  4. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)7 A+ b. T) N) x, I) O! [& N7 X
  5. #endif /* __GNUC__ */
复制代码
  1. PUTCHAR_PROTOTYPE& m5 R2 M1 I; B! E" T
  2. {: t+ i  O; p- S$ Z1 x
  3.   /* e.g. write a character to the LPUART1 and Loop until the end of transmission */
    6 R  q) D: I6 c5 M2 N5 S' L8 v' }
  4.   HAL_UART_Transmit(&hlpuart1, (uint8_t *)&ch, 1, 0xFFFF);+ V! h, {% i& n# K/ ?" V$ J2 D

  5. / ~& W( f$ V) L7 x1 J
  6.   return ch;
    4 v" f$ Q# H% h
  7. }
复制代码

2 z6 k8 e8 L. \# P) }: n9 y再执行语句printf("How are you?");,发现串口没有办法打印字符。
7 L, q4 x; p2 Z4 e因此便在Cubemx中与例程一一比对,几乎没有差错,甚至启用了文本比较器进行代码的比较,也发现几乎没有什么差别。于是便上网查询原因,解决方法如下:
7 y5 V- b, {4 T$ C
386aec33aae14f13b4a280e4128387de.png
! H7 U. ~/ _+ `2 n

# Q' u+ Q' l0 b$ F4 n: ^1 M. V/ ~在keil魔术棒选项中勾选Use MicroLIB选项,使用微库,防止printf()之类的函数使系统采用了半主机模式,而微库不会导致系统采用半主机模式。2 N) u6 l; P. ~# `/ R8 Y, W
问题解决,结果如下:
) [$ O) {6 t3 |1 q" E% y0 B7 S- q/ V, \
0096aedeb5544631888629096976c674.png
3 \/ s2 C1 e; n" j

& _- h  W0 S5 [
$ \: v  c$ D( o$ H  v, d: E% s0 Y$ h2 K! _6 j
收藏 评论0 发布时间:2021-11-14 21:04

举报

0个回答

所属标签

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