欢迎光临散文网 会员登陆 & 注册

STM32G0 printf()实现

2023-11-15 16:13 作者:陈伟国AE  | 我要投稿

前言

ST对于Cortex-M0系列的单片机,只提供了HAL库和LL库两种开发模式。如果你想生成gcc工程,然后用VS,Clion等环境进行开发的话,就会遇到一个十分尴尬的问题:gcc编译的bin文件太大了,M0系列单片机下载不进去。。

当然,如果你只是用LL库和HAL库中的函数,基本不会遇到Flash不够用问题。但是,开发过程中难免需要使用printf()等标准库函数,而一旦你引入#include<stdio.h>,并调用printf("PI: %f",3.14); 你就会惊讶的发现:卧槽,Flash占用34KB!生成bin文件大小超出单片机总存储空间,生成失败!

解决

那就只调用HAL库或LL库函数,自己实现一个printf()函数。这里以LL库为例:

在main.c中进行测试:

如果你生成的MDK工程,就不需要考虑这些问题了,直接调printf()就完了,MDK使用的标准库是精简的,生成的bin文件是非常小的,基本不会超出芯片Flash。

直接复制就能用,没效果你来砍我。

STM32G0 printf()实现的评论 (共 条)

分享到微博请遵守国家法律