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

基于STM32CUBEMX配置printf经验分享

[复制链接]
攻城狮Melo 发布时间:2023-4-8 22:48
概述
    本章STM32CUBEMX配置STM32F103,并且在GD32F303中进行开发,同时通过GD32303C_START开发板内进行验证。

% d. E8 ?) h, W  w* Z生成例程
    这里准备了GD32303C_START开发板进行验证。

$ l& O5 T0 ~5 p/ I' Y
微信图片_20230408224815.png

% u' a5 W, O! M4 ^8 ^, y5 D% ~3 c2 C( W9 p2 Q. {/ \# J1 x5 q* O7 d) R
printf()函数
4 C5 m/ d" {! K  ?1 k
    printf()函数是式样化输出函数, 一般用于向准则输出设备按规定式样输出消息。正在编写步骤时经常会用到此函数。printf()函数的挪用式样为: printf(“<式样化字符串>”,<参数表>);
    其中式样化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出;另一部分是式样化规定字符, 以"%“开端, 后跟一个或几个规定字符, 用来确定输出内容式样。参量表是需求输出的一系列参数, 其个数务必与式样化字符串所阐明的输出参数个数一样多, 各参数之间用英文逗号”,"分开, 且顺序逐一对应, 不然将会出现意想不到的错误。
    注意:函数printf从右到左压栈,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所以我们看见的结果是,从右边开始处理的。

, ^$ L0 {" u  f( n
STM32CUBEMX配置
  
微信图片_20230408224818.png

( q  C4 D9 k+ N6 r/ \7 v6 H$ m3 a
微信图片_20230408224822.png

0 m% y% G5 [3 x0 _keil配置" Z9 F8 u# m% K  o
    microlib 进行了高度优化以使代码变得很小。它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。某些库函数的运行速度也比较慢,如果要使用printf(),必须开启。
6 c; }" l( `! {" m+ c
微信图片_20230408224824.png

& c# A. I( Y$ M3 E7 X代码
    在main.c中,添加头文件,若不添加会出现 identifier "FILE" is undefined报错。
  1. /* USER CODE BEGIN Includes */
    8 l8 _! S3 _2 |, D" P
  2. #include "stdio.h"
    ' h+ k5 [/ U/ [5 j/ f' t
  3. /* USER CODE END Includes */
复制代码
9 v4 @+ k1 L) R5 V
    函数声明和串口重定向:
  1. /* USER CODE BEGIN PFP */1 v4 K+ {7 q5 G% I. n4 l4 b
  2. void uart1_data(void);          //接收函数5 t9 v  h( i) J- s# y
  3. #ifdef __GNUC__                  //串口重定向
    2 E5 q; _- v4 i( \9 }- _3 l6 ?
  4. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)' e4 O2 S: h( r, X/ j
  5. #else& |: O2 ?+ k/ C8 m
  6. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
    1 c$ N9 K1 C6 o* S& a+ Q
  7. #endif
    4 G4 _7 x  ^' c! U" h& o+ w5 v
  8. PUTCHAR_PROTOTYPE$ h3 K& E. T% {' A2 e0 a
  9. {0 z% r: S/ S/ c. O5 [
  10.     HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);- Q8 H6 t6 ?8 F# `
  11.     return ch;$ Z* S* b+ Z  x7 ^$ }8 Z$ y5 N" T
  12. }; a$ l3 v0 u1 O) S$ }% W* q
  13. /* USER CODE END PFP */
复制代码

  N4 x/ \5 @9 H4 p
    printf()打印。
  1.   /* USER CODE BEGIN WHILE */6 _2 A, W/ A* t; u' k/ @' m" B
  2.   while (1)2 t3 Z- _7 m) f2 t& E
  3.   {' p& \% _; r, x% F; H- T
  4.     /* USER CODE END WHILE */9 W+ l% x' h$ t% S, ~) D) P
  5. ' I+ ~8 ^6 r: T( y  z0 d
  6.     /* USER CODE BEGIN 3 */  
    - H( X2 E# g2 I+ |5 m. @; k
  7.     printf("串口打印例程\r\n");
    2 T2 h) `5 R3 c( N
  8.     HAL_Delay(1000);      
    $ {& F  j# i2 i/ T3 B9 @& h
  9.   }
    ; D- r2 D# i; n/ f
  10.   /* USER CODE END 3 */
复制代码

% [4 T$ D! C5 @6 i3 G/ P
微信图片_20230408224827.png
" v1 i( w0 \, l# |
转载自: 记帖
如有侵权请联系删除
# k2 C8 b8 l4 h

% `& V3 Y4 I9 b( O0 \
赞 收藏 评论0 发布时间:2023-4-8 22:48

举报

0个回答

所属标签

相似技术帖

官网相关资源

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