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

基于STM32CUBEMX配置printf经验分享

[复制链接]
攻城狮Melo 发布时间:2023-4-8 22:48
概述
    本章STM32CUBEMX配置STM32F103,并且在GD32F303中进行开发,同时通过GD32303C_START开发板内进行验证。
5 a9 Q0 F" f" F# J- R; O
生成例程
    这里准备了GD32303C_START开发板进行验证。

& e6 A$ l& L& l+ H$ Y+ V2 @
微信图片_20230408224815.png

. r, V) i4 ^* e  y+ \
  X0 N: u/ D# u$ p) |) @7 {printf()函数
9 T  d9 {. n$ Z; n
    printf()函数是式样化输出函数, 一般用于向准则输出设备按规定式样输出消息。正在编写步骤时经常会用到此函数。printf()函数的挪用式样为: printf(“<式样化字符串>”,<参数表>);
    其中式样化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出;另一部分是式样化规定字符, 以"%“开端, 后跟一个或几个规定字符, 用来确定输出内容式样。参量表是需求输出的一系列参数, 其个数务必与式样化字符串所阐明的输出参数个数一样多, 各参数之间用英文逗号”,"分开, 且顺序逐一对应, 不然将会出现意想不到的错误。
    注意:函数printf从右到左压栈,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所以我们看见的结果是,从右边开始处理的。

! K7 T% x: j; O3 K3 k# Z% ?
STM32CUBEMX配置
  
微信图片_20230408224818.png
9 a9 j4 B% F4 S3 V( ~- ^# U
微信图片_20230408224822.png

1 F( H, L3 s1 t* R7 P- i2 C, Okeil配置
) w* `5 m7 D8 q& h& o# |$ g9 P
    microlib 进行了高度优化以使代码变得很小。它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。某些库函数的运行速度也比较慢,如果要使用printf(),必须开启。

) p, i8 R2 j2 A( H* Y. L
微信图片_20230408224824.png
; d; P! {# ]5 b3 o6 W0 G
代码
    在main.c中,添加头文件,若不添加会出现 identifier "FILE" is undefined报错。
  1. /* USER CODE BEGIN Includes */7 Y) t! b( n) ~  {: c
  2. #include "stdio.h"
    - F8 e  W3 _( Q, ~
  3. /* USER CODE END Includes */
复制代码

& f/ I5 w. S. v) |1 @
    函数声明和串口重定向:
  1. /* USER CODE BEGIN PFP */& F4 E0 Q, g( Z% S# T! x1 V" U
  2. void uart1_data(void);          //接收函数" M; d. Q2 \1 P9 e7 N, {" c
  3. #ifdef __GNUC__                  //串口重定向
    / Q$ W+ m0 C) B) j. k
  4. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
    6 [2 J* W6 @# p& [# m9 `5 X" N
  5. #else( J0 ?0 Z; L) b
  6. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f); ?5 T0 J& r9 t2 `+ c
  7. #endif
    : e$ `+ }7 j% w0 v) O5 F8 }
  8. PUTCHAR_PROTOTYPE0 o+ ^7 f4 l+ ], Y
  9. {+ W( O) A) p. a! L( @2 D
  10.     HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
    7 u6 e+ I7 D4 y; W# v  O# y2 [( Z
  11.     return ch;
    : x. q7 y! ~9 E; R4 u: K
  12. }
    $ b& j3 n- T# ^: W
  13. /* USER CODE END PFP */
复制代码
% S- r& \9 l5 J+ u/ ^
    printf()打印。
  1.   /* USER CODE BEGIN WHILE */& E- _( `- _1 e3 a7 E% C
  2.   while (1)
    1 r) q: d" i! X9 P: ^9 {- O/ u
  3.   {: g& b; [' d/ n* Q& h
  4.     /* USER CODE END WHILE */( p, j7 L3 Q) y4 T  r# ?% D
  5. . [  H+ `/ }" I
  6.     /* USER CODE BEGIN 3 */  
    & D/ M- e3 C, C* G0 @2 Y$ E
  7.     printf("串口打印例程\r\n");
    7 B$ C+ h: Z" m; a# _+ \
  8.     HAL_Delay(1000);      ( k7 B& h) s. u) x- Z6 v
  9.   }
    & f4 J- |+ e  a; x) A
  10.   /* USER CODE END 3 */
复制代码
& j8 `/ t  {+ t5 a0 u8 H5 `" T
微信图片_20230408224827.png

$ M0 l( O3 f7 y9 R
转载自: 记帖
如有侵权请联系删除
' _) ]* v6 x( t# T* M6 ~* Q
& o4 Y% L8 e( |. l
赞 收藏 评论0 发布时间:2023-4-8 22:48

举报

0个回答

所属标签

相似技术帖

官网相关资源

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