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

基于STM32CUBEMX配置printf经验分享

[复制链接]
攻城狮Melo 发布时间:2023-4-8 22:48
概述
    本章STM32CUBEMX配置STM32F103,并且在GD32F303中进行开发,同时通过GD32303C_START开发板内进行验证。
- n3 U; l# }: |2 D% n
生成例程
    这里准备了GD32303C_START开发板进行验证。

' U; ^5 o& N- U+ E" v+ H0 m
微信图片_20230408224815.png
3 n2 |/ p5 H/ T! K9 v; y, F

$ h7 K% i* k/ ^, N2 p+ {) w. o  U) _/ Cprintf()函数* ]/ r3 Y; l* c
    printf()函数是式样化输出函数, 一般用于向准则输出设备按规定式样输出消息。正在编写步骤时经常会用到此函数。printf()函数的挪用式样为: printf(“<式样化字符串>”,<参数表>);
    其中式样化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出;另一部分是式样化规定字符, 以"%“开端, 后跟一个或几个规定字符, 用来确定输出内容式样。参量表是需求输出的一系列参数, 其个数务必与式样化字符串所阐明的输出参数个数一样多, 各参数之间用英文逗号”,"分开, 且顺序逐一对应, 不然将会出现意想不到的错误。
    注意:函数printf从右到左压栈,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所以我们看见的结果是,从右边开始处理的。
6 {6 l. l& R; u2 L9 u1 i! e4 w8 r* c
STM32CUBEMX配置
  
微信图片_20230408224818.png

( ?0 M. F, E. v: r" f0 Z3 h
微信图片_20230408224822.png

7 t* D2 m! m6 A3 dkeil配置
/ O7 q; b( ^, f2 M
    microlib 进行了高度优化以使代码变得很小。它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。某些库函数的运行速度也比较慢,如果要使用printf(),必须开启。
4 s8 v& ?! p. z# x3 ~5 t* h
微信图片_20230408224824.png
4 j+ L+ f* i) j# U( R
代码
    在main.c中,添加头文件,若不添加会出现 identifier "FILE" is undefined报错。
  1. /* USER CODE BEGIN Includes */
    6 E' B0 @: J+ H- f6 c$ k
  2. #include "stdio.h"
    " O  C  I: ]- C" a$ V; Q* f
  3. /* USER CODE END Includes */
复制代码

" K9 R% Z' j- X) E# T: c- B  a
    函数声明和串口重定向:
  1. /* USER CODE BEGIN PFP */2 B# I: t% e6 x9 n0 H5 O
  2. void uart1_data(void);          //接收函数' O8 ~2 Q( P9 i% A, T
  3. #ifdef __GNUC__                  //串口重定向. a+ K+ b& v7 @% v2 \
  4. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)" K3 C4 [; X( a# I0 b
  5. #else
    2 G9 B" r0 h. C% p
  6. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
    4 @# r  `1 P& m* i
  7. #endif " |9 S9 G1 ?5 _0 N0 e& v, ]
  8. PUTCHAR_PROTOTYPE2 B1 P+ q1 i4 x9 Z
  9. {, T) Q1 D8 {% N0 m
  10.     HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);. l1 G* H0 {5 ~% `+ R; p
  11.     return ch;
    0 K/ C- u* t( [. ]( T; R
  12. }
    2 Q* S; [' w: j% g& x4 H
  13. /* USER CODE END PFP */
复制代码

7 I7 u+ L* x8 o9 f/ G2 C# r
    printf()打印。
  1.   /* USER CODE BEGIN WHILE */
    ) x% a- \) a: j: Z
  2.   while (1)3 n/ F% V6 j" i& j' [! O
  3.   {
    9 F0 @! d  e, X
  4.     /* USER CODE END WHILE */7 U" |: F& R2 Y5 v3 G1 y# f( C
  5. . U5 Y+ z. g( T
  6.     /* USER CODE BEGIN 3 */  . f: p' _, e; G2 C
  7.     printf("串口打印例程\r\n");1 b. `7 P3 y, z9 H6 }: ]
  8.     HAL_Delay(1000);      ; O) [7 @# O. d* M* G
  9.   }7 P" l+ R( i& V8 X  ^
  10.   /* USER CODE END 3 */
复制代码
; k0 A6 `3 T: C! D9 S! Q
微信图片_20230408224827.png

, D1 {" o0 @5 M( S: o0 k# v
转载自: 记帖
如有侵权请联系删除' R% C7 S# e: a4 U/ q; w

  l. L7 U  Y3 e' h5 k$ Q# J# q5 b' l1 z
收藏 评论0 发布时间:2023-4-8 22:48

举报

0个回答

所属标签

相似分享

官网相关资源

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