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

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

[复制链接]
STMCU小助手 发布时间:2021-11-14 21:04
STM32G474-Nucleo调试问题——串口printf重定向无法打印字符
& ~/ @' O3 ^5 [8 i按照官方提供的参考例程,在设置LPUART1为串口收发端口后,生成代码。添加以下语句:
* A  `+ d% |$ _& v7 _+ g
3 V7 S3 h2 v; O
  1. #ifdef __GNUC__
    # P; j4 B5 A& C$ Y1 s, |) a
  2. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch); i9 ?: Q2 S- u- d
  3. #else
    1 [' z5 o4 r) q1 [
  4. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
    9 x" N; Q) c/ h) u9 ]+ S
  5. #endif /* __GNUC__ */
复制代码
  1. PUTCHAR_PROTOTYPE0 `2 s. Y2 c/ S: {0 l
  2. {
    3 g  }% v' W" \2 }
  3.   /* e.g. write a character to the LPUART1 and Loop until the end of transmission */, J8 ~1 E  f5 \$ [' d: o1 l0 b2 v6 v
  4.   HAL_UART_Transmit(&hlpuart1, (uint8_t *)&ch, 1, 0xFFFF);
    2 [0 t! _( E4 _8 K
  5. ! P3 a1 c; s8 ~, ^' q) n  D
  6.   return ch;+ K0 |7 U  M2 @  g4 w4 I, [
  7. }
复制代码

, }1 ]6 s( I# ^' O再执行语句printf("How are you?");,发现串口没有办法打印字符。# z% f$ |* L5 V, T. F
因此便在Cubemx中与例程一一比对,几乎没有差错,甚至启用了文本比较器进行代码的比较,也发现几乎没有什么差别。于是便上网查询原因,解决方法如下:
" i0 f' E4 f+ g; _' M
386aec33aae14f13b4a280e4128387de.png
7 n" k" \; H- Z7 i' n. Y/ f& s

, S9 ?6 G7 x/ [  S2 g5 T% E在keil魔术棒选项中勾选Use MicroLIB选项,使用微库,防止printf()之类的函数使系统采用了半主机模式,而微库不会导致系统采用半主机模式。
" k6 ~. B4 s/ E! R问题解决,结果如下:6 a) C5 q7 z& S8 V) a

9 `8 s/ v0 V1 [' ]0 T7 c1 ?/ r0 P0 d' \
0096aedeb5544631888629096976c674.png

' f9 g0 m- Z8 Y' a
9 G0 @5 t' \0 d/ _. R2 b7 ?3 M2 E5 w7 {2 k) E7 v

7 d6 h. L1 e. ^. a4 G& i8 ~& p
收藏 评论0 发布时间:2021-11-14 21:04

举报

0个回答

所属标签

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