㈠ STM32 使用printf:MicroLIB与printf重定向
在STM32开发中,微控制器库(MicroLIB)与printf函数重定向是解决在嵌入式系统中进行调试输出的关键步骤。添加MicroLIB库是必须的,因为默认编译器的C标准库在Keil环境中可能无法正常执行printf函数。
添加MicroLIB库的方法如下图所示,确保在项目的链接器配置中包含了这个库。
不添加库或者使用错误的库配置会导致编译错误或警告,因此确保正确地包含了库是至关重要的。
在嵌入式系统中,由于缺乏传统计算机屏幕,通常需要将printf函数的输出重定向到串口。此外,嵌入式系统中使用的是微控制器库,其中包含了一个轻量级的printf实现。为了在嵌入式系统中使用printf,必须将标准库中的printf函数重定向到MicroLIB。
printf函数重定向的目的是为了在嵌入式系统中实现类似计算机屏幕的输出功能,通常通过串口实现。在嵌入式系统中,printf函数位于MicroLIB中,因此在开发时,必须包含MicroLIB库。
实现printf函数重定向的关键步骤涉及修改标准库中与文件输入输出相关的函数。具体来说,需要替换标准库中的fputc和fgetc函数。这些函数通常用于处理文件的读写操作,但在printf函数的上下文中,它们需要被重写以适应串口输出。
正确的重定向函数看起来类似于这样:
int fputc(int ch, FILE *f)
int fgetc(FILE * f)
这些函数的修改是为了将字符输出到串口而不是传统的文件,从而实现在嵌入式系统中的调试输出。
㈡ 怎么学习嵌入式STM32
1、首先选择菜单栏上面的project的按钮,在弹出的右键菜单中点击new uVision Project...的选项。
㈢ stm32的嵌入式闪存:大容量产品主存储块最大为64k*64位,每个存储块划分为256个2k 字节的页,这两句话
按照存储单元的元[位]来讲,这两种说法是相等的:
64K * 64bits = 64 * 4 *2K * 8bits = 256个2K字节;
也就是说,总的存储容量还是没变的。
我的理解是这样的:
前者侧重页外,后者侧重页内,两种说法是和存储器的组织形式有关的:
主存储块的最大数目 = 64K * 64位,而每个单独的页(也就是存储芯片)的构成形式是2K*8位,那么就需要进行扩展:
首先应进行位扩展,即2K * 8位扩展为2K * 64位,则需要8个存储芯片,3根片选线,11根地址线;
然后进行字扩展,即2K 扩展为 64K,此时需要32个位扩展后的存储芯片,5根地址线;
如此共需要存储芯片数量为:32 * 8 = 256个,也就是存储块内共需要256个页,19根地址线。
㈣ 配置CLion用于STM32开发【优雅の嵌入式开发】
前言
最近尝试配置CLion用于STM32开发,以替代使用已久的Keil,以期获得更强大的IDE支持。以下记录了配置过程,供参考。
STM32作为广泛应用的MCU平台,国内开发人员常采用Keil进行开发,主要基于历史学习背景和简易操作性。然而,Keil的界面和操作风格已较为过时,其他如STM32CubeIDE和TrueStudio等基于Eclipse的IDE虽有改进,仍难以满足部分开发者的期待。
本文介绍如何将CLion作为STM32开发环境,着重于配置步骤和注意事项。CLion,面向C/C++开发,提供了高效的代码补全、界面设计与插件支持,有效提升开发效率。配置CLion需考虑环境安装、工具链配置以及使用CMake进行项目管理。
在配置过程中,需注意使用STM32的HAL库,它提供更方便的移植性和开发效率。本文将主要围绕基于HAL库开发的步骤进行介绍。
配置步骤
配置环境及工具
软件和硬件环境的准备,安装CLion所需的组件,如OpenOCD,配置环境变量以支持MinGW和CMake。
在CLion中创建STM32工程
通过CLion的项目创建功能,使用STM32CubeMX生成项目。配置项目名称与生成的IDE类型,确保与CMake项目相匹配,以实现文件覆盖。
编译与烧录程序
在IDE中通过CMake选项卡进行工程配置与编译,使用配置文件进行下载与调试设置。配置OpenOCD下载程序,并自定义配置文件以适应不同的下载器。
其他问题解决
解决编译错误与printf重定向问题。通过重定向fputc函数,解决在CLion中使用printf时的输出问题,并修改CMakeList.txt添加编译选项,以支持浮点数的正常读取。
总结
配置CLion用于STM32开发,提供了更强大、更现代化的IDE环境。通过上述步骤,可有效提升开发效率与项目管理,实现更灵活的调试与烧录功能。在配置过程中,需关注环境兼容性与工具链的正确配置,确保开发流程顺畅无阻。