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

STM32CUBEMX开发GD32F303(7)----配置printf

[复制链接]
STMCU小助手 发布时间:2022-8-18 17:38
硬件准备
$ h' U! Z; |" N4 D( W6 y这里准备了GD32303C_START开发板进行验证。( q$ o! P0 ?8 O9 K
4 ]( ~( ~1 Y/ |# ]+ S
a15305ac91d945bda69c446903f697d6.png 7 |1 V4 p" `3 D: ~, r
2 m) H8 Z  C& z
printf()函数

8 R" _6 p/ z( {* Uprintf()函数是式样化输出函数, 一般用于向准则输出设备按规定式样输出消息。正在编写步骤时经常会用到此函数。printf()函数的挪用式样为: printf(“<式样化字符串>”,<参数表>);
- {( }, w0 O8 q1 a- M1 n0 W- l其中式样化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出;另一部分是式样化规定字符, 以"%“开端, 后跟一个或几个规定字符, 用来确定输出内容式样。 参量表是需求输出的一系列参数, 其个数务必与式样化字符串所阐明的输出参数个数一样多, 各参数之间用英文逗号”,"分开, 且顺序逐一对应, 不然将会出现意想不到的错误。
* D) l* L! m$ R注意:函数printf从右到左压栈,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所以我们看见的结果是,从右边开始处理的。, y" h2 m) _) {9 [

# i  G" k) o1 w, `STM32CUBEMX配置

. U( J" U# f- ~5 `9 Q1 Y" T4 L
# o. F+ @! ^+ ?6 q3 @+ Q c4fe16c2aaea45119a5daa062b968954.png
9 N2 g! J8 k# \& J" P' Q

/ v* Q  L: d& D$ m 56358fb491734df498392b9e93ba9366.png
" T8 r5 s0 @3 e$ d, f+ v, X' d% G  A4 Z: T. D1 u) D
keil配置
- }$ P$ q* I2 `( w
microlib 进行了高度优化以使代码变得很小。 它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。 某些库函数的运行速度也比较慢,如果要使用printf(),必须开启。
# v7 J3 ?- z/ }1 w; f% @
' @% Q# n$ w0 @5 t3 J5 h 04d2a6fc929b48698acad08f27bf4dcb.png " \0 W7 _. `# _, t# x
, ^) w& F1 ]% ]
代码
) q9 [  Q/ D7 \7 c/ W1 q; y在main.c中,添加头文件,若不添加会出现 identifier “FILE” is undefined报错。
  1. /* USER CODE BEGIN Includes */
    6 d3 P9 h9 u1 W$ n5 ?; M
  2. #include "stdio.h"( p& Q6 x, R$ }) ~& K% n
  3. /* USER CODE END Includes */
复制代码
9 ^; `! F& t# W! n; H& B( u- E
函数声明和串口重定向:
+ \: J! @' F6 X* M1 p. Y# m- L% F
  1. /* USER CODE BEGIN PFP */
    ) G' f9 u- e& G
  2. void uart1_data(void);                                        //接收函数
    . `0 Q% F4 J2 o
  3. #ifdef __GNUC__                                                                        //串口重定向7 m1 T, |6 U/ h4 F) u
  4. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)5 F  O; G8 N( E' i
  5. #else
    ; L$ y' x2 g. Y; G
  6. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)2 H* J) ^' z0 I
  7. #endif 2 o; L. E0 k/ i5 b. F6 r
  8. PUTCHAR_PROTOTYPE4 t' v1 i1 U# y7 T
  9. {# j  h: m8 A+ }4 q( j) F( v
  10.     HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);# x5 z1 q7 I$ N+ ?; a
  11.     return ch;
    3 q  `0 }( R) C: Y4 z' }% _  k% }
  12. }" E# l8 u( j! \1 D$ k) |0 [
  13. /* USER CODE END PFP */
复制代码
7 i! W7 n& Z. H- H# I$ Y. m
printf()打印。/ F' W. ~: G, z1 u4 q, \

% R( I2 g5 ^9 V
  1.   /* USER CODE BEGIN WHILE */
    . f8 \$ E& s" W: {0 [
  2.   while (1). j+ S8 M. w% w2 ^' F* n) M
  3.   {
    ) T1 V2 z1 I2 A: ]) K% l* L
  4.     /* USER CODE END WHILE */
    2 g7 H) ^+ L4 i1 ?8 \( n: U# _

  5. ' \! P/ b( g; x% ?, Q2 C5 j
  6.     /* USER CODE BEGIN 3 */        
    6 U' X9 X+ K! R3 p( u  g& \
  7.     printf("串口打印例程\r\n");! ^4 S' `' D: U- S& ^) `* S0 c
  8.     HAL_Delay(1000);                        
    * s  k6 ], R& I- w
  9.   }7 x! R1 L3 U0 |" A$ H
  10.   /* USER CODE END 3 */
复制代码

9 v- Q0 ^3 n+ r) A, s+ u; d结果演示
' c9 u6 @! k2 r
. Y. p/ w6 N' @5 [; l0 N: i
6492c4beb1364c979c9c49a28900074b.png
' a7 Q( Z: ^' I9 ^1 P  l$ V3 e6 \: }) H

' N: p9 M5 y. K2 ~- O
赞 收藏 评论0 发布时间:2022-8-18 17:38

举报

0个回答

所属标签

相似技术帖

官网相关资源

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