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

基于STM32CUBEMX配置printf经验分享

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

1 S5 A, _% N3 }' q6 a生成例程
    这里准备了GD32303C_START开发板进行验证。
8 o4 @5 g, B' W) `" c, {6 u# c
微信图片_20230408224815.png
$ d0 E1 r9 a+ O) ~+ ?

' c% p" Z+ s* G: Q+ H( o, N/ oprintf()函数
% r* v. T/ W3 W9 e' O. s0 _9 ^- _
    printf()函数是式样化输出函数, 一般用于向准则输出设备按规定式样输出消息。正在编写步骤时经常会用到此函数。printf()函数的挪用式样为: printf(“<式样化字符串>”,<参数表>);
    其中式样化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出;另一部分是式样化规定字符, 以"%“开端, 后跟一个或几个规定字符, 用来确定输出内容式样。参量表是需求输出的一系列参数, 其个数务必与式样化字符串所阐明的输出参数个数一样多, 各参数之间用英文逗号”,"分开, 且顺序逐一对应, 不然将会出现意想不到的错误。
    注意:函数printf从右到左压栈,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所以我们看见的结果是,从右边开始处理的。
" k+ Q1 f2 L0 l' j
STM32CUBEMX配置
  
微信图片_20230408224818.png

& H3 n- K3 ^+ J" {$ i, Q! |. I% r% o
微信图片_20230408224822.png
4 Z8 j" v: K0 m7 ^, {8 Q: X
keil配置
% u/ Y) b, Y8 [, d1 ~
    microlib 进行了高度优化以使代码变得很小。它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。某些库函数的运行速度也比较慢,如果要使用printf(),必须开启。

8 @9 p  u: I7 L  B$ Z+ C7 \
微信图片_20230408224824.png
# e# X& X3 E' \' Z2 f' t" w+ R7 R
代码
    在main.c中,添加头文件,若不添加会出现 identifier "FILE" is undefined报错。
  1. /* USER CODE BEGIN Includes */; b1 k& u& x) K, K; b! v4 J* J
  2. #include "stdio.h"
    # ?) X; o- T7 d4 H
  3. /* USER CODE END Includes */
复制代码

/ M  N% o9 e7 `0 C3 n# s: r9 z
    函数声明和串口重定向:
  1. /* USER CODE BEGIN PFP */
    2 E! b! P# h( a! `
  2. void uart1_data(void);          //接收函数
    ) I- U- ^" d* A4 |" j8 x
  3. #ifdef __GNUC__                  //串口重定向  ?1 |5 |( f5 c. p9 N$ B0 x( M
  4. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
    2 S* a  k3 R3 J( N8 B- p- H
  5. #else2 `3 D$ Z# C. x' r( t
  6. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
    2 m$ n9 ~  |' i1 M: G
  7. #endif
    + N, X8 N8 E2 @' F4 R8 _; j
  8. PUTCHAR_PROTOTYPE
    ' ]6 n4 q- t% ^3 e) B
  9. {
    ; o: v% }8 M: R" _* e. [; s) L9 |
  10.     HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);0 h& L7 J- {. ]! Y, D
  11.     return ch;' R+ D# H4 J8 c
  12. }
    ( ~9 c" X: K) R: R2 C
  13. /* USER CODE END PFP */
复制代码
- `1 f* w5 E& l2 j( X
    printf()打印。
  1.   /* USER CODE BEGIN WHILE */  s8 k# S6 N; L; v& y
  2.   while (1)
    . R( B; w$ t3 c9 `" @; P! ?- N
  3.   {
    " [( H7 B, u) |+ k6 P, s
  4.     /* USER CODE END WHILE */
    0 q5 b) c3 F% l7 a6 m: i$ p

  5.   D$ {. H/ a, J( u  F4 M2 q
  6.     /* USER CODE BEGIN 3 */  
    7 q) D  N7 O0 {. x
  7.     printf("串口打印例程\r\n");
    ( K7 `. P2 H$ K0 r( @% q* m1 V
  8.     HAL_Delay(1000);      
    . O9 U: f: g) q8 @) O2 g. s/ |
  9.   }
    - g2 a% L4 P2 M2 p2 K
  10.   /* USER CODE END 3 */
复制代码
& \$ C+ W$ b( c+ O6 ]3 e) v" ]
微信图片_20230408224827.png

2 j: {1 b: l9 L" ~/ x6 B
转载自: 记帖
如有侵权请联系删除5 p, g: S, x1 Q* f

+ P, d# A5 G" |0 {* _
赞 收藏 评论0 发布时间:2023-4-8 22:48

举报

0个回答

所属标签

相似技术帖

官网相关资源

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