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

基于STM32CUBEMX配置printf经验分享

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

( b4 Y8 r3 I# B6 I1 n+ V生成例程
    这里准备了GD32303C_START开发板进行验证。

" j" ?! Z' q, f# o
微信图片_20230408224815.png

4 {' B6 j# w# H* k: Y9 |# _) @3 u! t" j/ h. o4 |, e
printf()函数8 D4 i2 b- z7 D! H8 G8 \
    printf()函数是式样化输出函数, 一般用于向准则输出设备按规定式样输出消息。正在编写步骤时经常会用到此函数。printf()函数的挪用式样为: printf(“<式样化字符串>”,<参数表>);
    其中式样化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出;另一部分是式样化规定字符, 以"%“开端, 后跟一个或几个规定字符, 用来确定输出内容式样。参量表是需求输出的一系列参数, 其个数务必与式样化字符串所阐明的输出参数个数一样多, 各参数之间用英文逗号”,"分开, 且顺序逐一对应, 不然将会出现意想不到的错误。
    注意:函数printf从右到左压栈,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所以我们看见的结果是,从右边开始处理的。

7 b9 [9 {  S' S  d* _4 y2 k/ h* v- e
STM32CUBEMX配置
  
微信图片_20230408224818.png
- d% a+ D2 _" X3 G
微信图片_20230408224822.png

0 M8 ^9 }3 Q1 s7 ]  C2 y& r" ]- i1 |/ lkeil配置
, B3 g/ T; V  E
    microlib 进行了高度优化以使代码变得很小。它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。某些库函数的运行速度也比较慢,如果要使用printf(),必须开启。

% I5 o" H; r$ U9 a6 W7 N4 ~# M: x
微信图片_20230408224824.png

0 X  R( l& C1 ]代码
    在main.c中,添加头文件,若不添加会出现 identifier "FILE" is undefined报错。
  1. /* USER CODE BEGIN Includes */0 D8 ~6 L& b6 {9 S# B- n, C+ X
  2. #include "stdio.h"6 r  W0 `0 Q  V& U& ^( t
  3. /* USER CODE END Includes */
复制代码
0 X% D) ^0 S7 N1 b2 i- @1 P
    函数声明和串口重定向:
  1. /* USER CODE BEGIN PFP */* h% N/ c4 x/ j" ^+ x
  2. void uart1_data(void);          //接收函数
    1 H* M' f5 e' z
  3. #ifdef __GNUC__                  //串口重定向
    ) Q  e  S9 _& j8 r# l1 q
  4. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)5 {! |( L9 X0 V; t/ a
  5. #else
    * G( j- j8 Z  A
  6. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)1 i. U2 G8 B. [5 V9 B
  7. #endif
    , ]$ d9 H+ l+ T& M: s
  8. PUTCHAR_PROTOTYPE+ M- @% f" o3 f6 T$ _* t
  9. {
    7 s4 [; D1 D* q4 F: V9 i9 O
  10.     HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);+ r; j5 |+ ?/ V- \, {8 O
  11.     return ch;: k' \+ o  e: p. C: b; l0 D
  12. }' _  [9 ?7 n3 Z7 x: ?, Z4 S) A/ @; Y
  13. /* USER CODE END PFP */
复制代码

0 ?. X+ J; P. @! V% z  A
    printf()打印。
  1.   /* USER CODE BEGIN WHILE */
    5 i5 [4 e& ^, Z! m% T; S$ d
  2.   while (1)$ U2 H( Z9 p8 b' x7 A
  3.   {3 @: U- M( h1 e1 K  z  r  r
  4.     /* USER CODE END WHILE */+ C# `+ X& n4 u+ q8 y4 ?, ~

  5. + X; z1 D, @) J: F3 w- N
  6.     /* USER CODE BEGIN 3 */  
    . V8 W( Q$ g7 D; v) U1 u
  7.     printf("串口打印例程\r\n");5 k+ T$ j' \$ ~
  8.     HAL_Delay(1000);      
    ' H  q0 u) ?6 |' ?; S
  9.   }/ A: z; K  e0 R% W5 I
  10.   /* USER CODE END 3 */
复制代码

1 f- L6 m! H0 q$ p4 M$ ?/ Z; J( `
微信图片_20230408224827.png

! Y, M+ {6 r+ W2 f3 q! B
转载自: 记帖
如有侵权请联系删除8 O1 q3 R7 f1 y; Y. u  @8 e, p
& _8 f: X* @% K7 k; p1 v8 @7 i
收藏 评论0 发布时间:2023-4-8 22:48

举报

0个回答

所属标签

相似技术帖

官网相关资源

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