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

基于STM32CUBEMX配置printf经验分享

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

2 c. d8 @" h2 q7 {) P$ q* j2 }生成例程
    这里准备了GD32303C_START开发板进行验证。

+ D- X& ?6 F1 y4 z
微信图片_20230408224815.png

  i* Y4 P% s9 \; q* V) a& ^0 j2 \# f
0 i1 Z$ d8 v; k$ x1 |printf()函数3 k% _) W+ I- b4 j& P: _
    printf()函数是式样化输出函数, 一般用于向准则输出设备按规定式样输出消息。正在编写步骤时经常会用到此函数。printf()函数的挪用式样为: printf(“<式样化字符串>”,<参数表>);
    其中式样化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出;另一部分是式样化规定字符, 以"%“开端, 后跟一个或几个规定字符, 用来确定输出内容式样。参量表是需求输出的一系列参数, 其个数务必与式样化字符串所阐明的输出参数个数一样多, 各参数之间用英文逗号”,"分开, 且顺序逐一对应, 不然将会出现意想不到的错误。
    注意:函数printf从右到左压栈,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所以我们看见的结果是,从右边开始处理的。

' u/ e" o, Z) Q# H" ~
STM32CUBEMX配置
  
微信图片_20230408224818.png
6 {( J. U, W- `0 ]  }
微信图片_20230408224822.png
+ r$ ^  m" u& }) k9 |" m
keil配置6 X# _9 X. q; F
    microlib 进行了高度优化以使代码变得很小。它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。某些库函数的运行速度也比较慢,如果要使用printf(),必须开启。

; D: Q6 |: d+ Y9 N# l; ~
微信图片_20230408224824.png

7 ~2 c$ p5 L  R: `6 q# Q代码
    在main.c中,添加头文件,若不添加会出现 identifier "FILE" is undefined报错。
  1. /* USER CODE BEGIN Includes */3 X$ {- Z2 J4 z) H
  2. #include "stdio.h"% j: O8 ?6 ~$ `. I8 E
  3. /* USER CODE END Includes */
复制代码

1 I* a# |/ K7 L. e4 A7 S
    函数声明和串口重定向:
  1. /* USER CODE BEGIN PFP */2 C% S  `' V% D1 l' A9 M
  2. void uart1_data(void);          //接收函数" l* {+ |$ r* _4 a+ @
  3. #ifdef __GNUC__                  //串口重定向( i  A2 M1 l7 S3 ?+ ^
  4. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
    & A; v  P- {7 S2 H
  5. #else, e* R. w; O* D$ \# r9 x- k6 Y
  6. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
    1 p2 {* b2 Z+ a, X* ^3 k
  7. #endif $ d; m8 \6 T; r2 Q" n0 u
  8. PUTCHAR_PROTOTYPE
    : u) I' N9 F9 J4 _1 z0 E
  9. {
    0 B9 [0 E* E3 P; a+ X, X
  10.     HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);8 ]6 k: \' _% Z7 m2 V+ v5 ~
  11.     return ch;# F; D  F3 |- [4 v5 ~
  12. }5 Z5 y2 @4 M5 [, g: C
  13. /* USER CODE END PFP */
复制代码

4 {+ S# w/ |" O' T; r
    printf()打印。
  1.   /* USER CODE BEGIN WHILE */2 b0 N2 J& T) D+ v6 s
  2.   while (1)
    ; D8 y. ]4 b. g3 \& e9 N! I' p. q
  3.   {
    * C, l. F6 U4 b% u9 u
  4.     /* USER CODE END WHILE */# n& U3 i2 \7 e: L# S

  5. 1 x0 f6 X" a; }' w4 l6 A
  6.     /* USER CODE BEGIN 3 */  ! w; [' m% O* B3 }& C
  7.     printf("串口打印例程\r\n");5 P0 h. U: t8 A: C) a4 w* d' m
  8.     HAL_Delay(1000);      
    7 K' x- D* ]9 \1 _
  9.   }
    $ J6 e* i  |9 T2 o
  10.   /* USER CODE END 3 */
复制代码
: C% N* m$ i# i4 G4 j+ e' A' G
微信图片_20230408224827.png
5 Z. E$ L, f1 n4 Y" g
转载自: 记帖
如有侵权请联系删除
& i8 a7 Z" x* }0 ]9 r! j
, K- L6 ?0 ^# k+ }. I# l3 A4 j# Q
赞 收藏 评论0 发布时间:2023-4-8 22:48

举报

0个回答

所属标签

相似技术帖

官网相关资源

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