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

基于STM32CUBEMX配置printf经验分享

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

1 z  e: r4 G! u9 y: g% E生成例程
    这里准备了GD32303C_START开发板进行验证。
* Q% y0 z+ R* P' t8 l' M$ d
微信图片_20230408224815.png

8 ]* J/ m! j, L; _+ M
! l) _- U( q9 a/ a4 X% B* ^) Xprintf()函数
% i# h8 [9 y7 L; z: |
    printf()函数是式样化输出函数, 一般用于向准则输出设备按规定式样输出消息。正在编写步骤时经常会用到此函数。printf()函数的挪用式样为: printf(“<式样化字符串>”,<参数表>);
    其中式样化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出;另一部分是式样化规定字符, 以"%“开端, 后跟一个或几个规定字符, 用来确定输出内容式样。参量表是需求输出的一系列参数, 其个数务必与式样化字符串所阐明的输出参数个数一样多, 各参数之间用英文逗号”,"分开, 且顺序逐一对应, 不然将会出现意想不到的错误。
    注意:函数printf从右到左压栈,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所以我们看见的结果是,从右边开始处理的。
3 L* e. I" }3 L( e$ u
STM32CUBEMX配置
  
微信图片_20230408224818.png
8 O: \# c2 T% i
微信图片_20230408224822.png
* Z4 w* m; N  I! w& Z8 }; P2 {; [
keil配置' ]  v& k& J: U" \( H! S
    microlib 进行了高度优化以使代码变得很小。它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。某些库函数的运行速度也比较慢,如果要使用printf(),必须开启。
& V7 J2 n4 o) C8 n. i! N. t
微信图片_20230408224824.png
0 W- i3 k; b9 r$ B  y5 K/ m: k5 B6 m) V
代码
    在main.c中,添加头文件,若不添加会出现 identifier "FILE" is undefined报错。
  1. /* USER CODE BEGIN Includes */
    9 f2 f9 O! ~. @6 [& t) V$ J$ N
  2. #include "stdio.h"
    ! Q$ O* r6 B, ^  M
  3. /* USER CODE END Includes */
复制代码

- y7 L' L; I  H- n# c
    函数声明和串口重定向:
  1. /* USER CODE BEGIN PFP */
    2 ^' A0 \$ c  U- t( f$ M: ]5 B
  2. void uart1_data(void);          //接收函数" N, j/ a; q+ K1 W
  3. #ifdef __GNUC__                  //串口重定向& {- f0 c+ J6 |- t( W
  4. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
    ) K8 ?5 d! {) ~% [
  5. #else4 ^. Z5 L5 Z0 @0 F& `; I+ l
  6. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)6 B. H& Y: e& w# N* o3 L7 ?2 U
  7. #endif
    ) e- k/ F% l7 f: O
  8. PUTCHAR_PROTOTYPE% x8 r/ Z4 k: n0 c! R( t
  9. {
    ) U) p* J6 U& j
  10.     HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);( b% d4 V6 j4 ]( Z: ?
  11.     return ch;3 E) s* `( ~. V$ r1 R3 d5 H$ ]
  12. }5 O, O3 n5 i2 J+ U; e2 i
  13. /* USER CODE END PFP */
复制代码
+ B1 z% _0 P4 l
    printf()打印。
  1.   /* USER CODE BEGIN WHILE */
    - g; g2 K; k# a! Z+ v( L' h4 \
  2.   while (1)
    1 E1 j+ {$ n! M' d" m7 B, x$ L' x
  3.   {( O( _' c* a* `2 |  B
  4.     /* USER CODE END WHILE */
    5 b+ C+ A4 P2 N1 f6 m5 y

  5. / d% m- Y- T0 J' `2 T! W
  6.     /* USER CODE BEGIN 3 */  # ^8 a5 x) t$ z6 q5 D5 ]- M
  7.     printf("串口打印例程\r\n");5 R7 R, P! ~3 W1 g' E
  8.     HAL_Delay(1000);      * _7 M: p$ o) B1 |# c
  9.   }4 s' t5 ~9 X' K0 R# `
  10.   /* USER CODE END 3 */
复制代码
' F) M/ ?, V. p- B5 Q1 e
微信图片_20230408224827.png
- P! R6 H# u& h0 K# e4 K/ @
转载自: 记帖
如有侵权请联系删除
& U: m, `+ }' @$ r& _! r
  Q/ e6 E" D- {( L
收藏 评论0 发布时间:2023-4-8 22:48

举报

0个回答

所属标签

相似技术帖

官网相关资源

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