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

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

[复制链接]
STMCU小助手 发布时间:2021-11-14 21:04
STM32G474-Nucleo调试问题——串口printf重定向无法打印字符. p& v) D# }$ \5 H, z
按照官方提供的参考例程,在设置LPUART1为串口收发端口后,生成代码。添加以下语句:+ `- s# e' `! W% T3 g

/ i  e9 g, z5 T+ u6 [- u
  1. #ifdef __GNUC__
    ! H+ b9 N# G5 {  r- @3 ?
  2. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
    ( F7 O% {8 I- E9 l( _
  3. #else
    ' K! @4 d* c6 I# _3 e8 u
  4. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)# r9 E- c  b# z8 d
  5. #endif /* __GNUC__ */
复制代码
  1. PUTCHAR_PROTOTYPE
    . j, p2 L  C) p0 a6 n: v
  2. {
    , u: F4 V4 E+ n
  3.   /* e.g. write a character to the LPUART1 and Loop until the end of transmission */
    ! N3 a! L* p1 B# {' T4 v* ?! r
  4.   HAL_UART_Transmit(&hlpuart1, (uint8_t *)&ch, 1, 0xFFFF);$ n- w# s) G' v, Z2 t1 f* C" W

  5. ! t" `" P$ L2 G6 M
  6.   return ch;4 j% n: T) v: \9 z2 J: l
  7. }
复制代码
# {  [' s- [0 N3 C; Z
再执行语句printf("How are you?");,发现串口没有办法打印字符。7 M6 `. F3 k: ?; N" ^
因此便在Cubemx中与例程一一比对,几乎没有差错,甚至启用了文本比较器进行代码的比较,也发现几乎没有什么差别。于是便上网查询原因,解决方法如下:
* J% t/ \/ A# C, `& ^9 L, f' g' d5 N
386aec33aae14f13b4a280e4128387de.png

6 g. h9 S8 C0 M. e4 \9 H8 F- g5 F3 X9 k1 t5 \6 D: i- k4 j
在keil魔术棒选项中勾选Use MicroLIB选项,使用微库,防止printf()之类的函数使系统采用了半主机模式,而微库不会导致系统采用半主机模式。  X$ ?5 b- x3 h& n) p
问题解决,结果如下:6 U4 G% D3 }5 S% C+ \" e
; I5 Y# b5 Y  q- X% n  \' X- O! R
0096aedeb5544631888629096976c674.png
% T5 ~4 q8 i% v& P% U
: u1 L2 w) s3 l' Y9 I
6 K* q/ G5 H& M- f
9 b/ T$ h( |$ p  U7 t( `4 t5 }( s
赞 收藏 评论0 发布时间:2021-11-14 21:04

举报

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