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

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

[复制链接]
STMCU小助手 发布时间:2021-11-14 21:04
STM32G474-Nucleo调试问题——串口printf重定向无法打印字符, h, U: q; B( ^) Z* J/ r& t9 K
按照官方提供的参考例程,在设置LPUART1为串口收发端口后,生成代码。添加以下语句:
7 f. i9 \" n, i7 \3 |/ z  R* p; A/ E( Z: a% ^! l* c- |1 P, \
  1. #ifdef __GNUC__6 v( ^2 z5 _3 u: _( Z  l
  2. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
    : ~' Z- p5 [. I+ A
  3. #else2 G" B2 {: H. g  Q  ~; [& j
  4. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)$ J8 `# L; g' Q+ D; N" w
  5. #endif /* __GNUC__ */
复制代码
  1. PUTCHAR_PROTOTYPE" W0 h8 x' J; w4 @& m  z5 k
  2. {6 l. v9 L  J3 J* O
  3.   /* e.g. write a character to the LPUART1 and Loop until the end of transmission */
    & z# ]: T9 t+ @
  4.   HAL_UART_Transmit(&hlpuart1, (uint8_t *)&ch, 1, 0xFFFF);
    . T. D1 h8 E% f4 O  }# ~
  5. 6 U% V9 e7 [- f) R
  6.   return ch;! J% E( d: @6 K! z
  7. }
复制代码
: J4 V6 i* r0 o  g5 J# N
再执行语句printf("How are you?");,发现串口没有办法打印字符。
# |  s5 V! z- c8 U" l1 {3 _5 E# {: [因此便在Cubemx中与例程一一比对,几乎没有差错,甚至启用了文本比较器进行代码的比较,也发现几乎没有什么差别。于是便上网查询原因,解决方法如下:
1 T6 W  z' F3 ?1 ^9 B& S
386aec33aae14f13b4a280e4128387de.png

4 B  @/ f* ~5 r* o2 B% P* Y
5 q% o! [( j. }9 N3 d5 g$ I1 u! H在keil魔术棒选项中勾选Use MicroLIB选项,使用微库,防止printf()之类的函数使系统采用了半主机模式,而微库不会导致系统采用半主机模式。
$ H8 k+ X# w5 h1 @* d问题解决,结果如下:% I1 b9 z  P, {0 G/ a1 t7 f$ w  e  X
% L  V+ ?7 K' `' B' u: ]' p
0096aedeb5544631888629096976c674.png

1 c+ }9 Y/ T! P) B; V) R8 F1 [0 A# Y3 W# v5 n! S
; n' `( V$ A( s
. p& B2 V  v5 ~
收藏 评论0 发布时间:2021-11-14 21:04

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版