STM32软件笔记

1 KEIL环境下指定输出文件路径
我们在KEIL 上面建立的工程,如果不作任何设置而进行编译、链接等等动作,必定在工程文件当前目录产生后缀为 .o .crf .dep .d .lst 等文件。简单的工程,其生成的文件数量尚能容忍,一旦工程里头包含的源文件有一定的规模,到达那个编程水平的你一定不能容忍这么乱糟糟的文件结构吧。本博文仅介绍一种非常简单实用的方法以分类这些"没用"的文件。

  打开我们熟悉的Options for Target 选项框,选择Output 选项卡,找到Select Folder for Objects,找到你要存放的路径即可。以我自己作为例子,我喜欢在工程的第一级目录下建立一个out 文件夹,专门存放这些“繁杂”的文件。

  随着工作、学习的深入,我们无可避免地接触更复杂的工程项目,在日常就应该养成工程管理的概念,本博文所谈之内容非常浅薄,仅仅是提出一种思想而已,权当抛砖引玉,希望有前辈能够给予新手一些关于工程管理上面的经验!

2 Keil修改工程名

1.在工程文件目录中,将first.uvopt和first.uvproj名字改成second.uvopt和second.uvproj。
2.其他first文件统统删除。
3.打开second.uvproj,
4.点击品字形图标,在弹出的界面上,双击“Progect Components”下面的工程名,修改成second
5.点击project》Options for..》Output,将Name of Executeable中的名称改为second即可
6.从新编译,若编译后还有带first名的文件,删除后重新编译即可。

3 Keil5 点击Debug Setting 使软件奔溃的解决方法
今天再网上下了一个别人Dome工程,在本地编译通过,正准备选择调试器的时候发现IDE奔溃了
这里写图片描述
在这里插入图片描述
重新进软件和重新编译都无法解决,

再工程路径下找到与项目同名的 .UVOPTX 文件 uvoptx文件记录了工程的配置选项,如下载器的类型、变量跟踪配置、断点位置以及当前已打开的文件等等,闪退的原因就是这个文件引起的 删除后 重新编译保存项目便可解决闪退奔溃问题。

4 如果在STM32工程编译时没有添加USE_STDPERIPH_DRIVER, STM32F10X_HD时会出现如下错误:

…\library\cortex_m3\stm32f10x.h(96): error: #35: #error directive: “Please select first the target STM32F10x device used in your application (in stm32f10x.h file)”

这时候我们需要在“Target Options”中的“C/C++”选项卡中添加USE_STDPERIPH_DRIVER、STM32F10X_HD。这样才能使编顺利通过。

那么这个错误是怎么产生的呢?

这是由于程序编译的过程中调用stm32f10x_conf.h头文件。为什么我们没有在“main.c”中包含"stm32f10x_conf.h",而在编译之后却被包含进了"main.c"中,"stm32f10x_conf.h"文件相当于一个开关文件,如果要用到STM32固件库驱动标准外设,则外设驱动头文件是必不可少的,如“stm32f10x_gpio.h”。在"stm32f10x_conf.h"中我们通过代码#include "stm32f10x_gpio.h"来实现这个操作。其实单从字面意思理解就是“使用标准外设驱动”,在C/C++预定义中加入“USE_STDPERIPH_DRIVER”就是允许“使用标准外设驱动”了。至于加入的“STM32F10X_HD“同样能在文件”stm32f10x.h“通过如上所述的方法通过功能查找来进行解释,其实它也是对于对应硬件的某些定义起开关作用罢了。

二. STM32F10X_LD STM32F10X_MD STM32F10X_HD STM32F10X_CL宏定义的选择

如果你使用stm32f10x_stdperiph_lib,会发现在stm32f10x.h文件会有一段关于宏选择的代码,如:

[cpp] view plaincopy
#if !defined (STM32F10X_LD) && !defined (STM32F10X_MD) && !defined (STM32F10X_HD) && !defined (STM32F10X_CL)
/* #define STM32F10X_LD / /!< STM32F10X_LD: STM32 Low density devices /
/
#define STM32F10X_MD / /!< STM32F10X_MD: STM32 Medium density devices /
/
#define STM32F10X_HD / /!< STM32F10X_HD: STM32 High density devices /
#define STM32F10X_CL /
!< STM32F10X_CL: STM32 Connectivity line devices */
#endif
至于要使用哪个宏,则需要根据具体的芯片来进行选择。那么,这些宏又对应着哪些具体的芯片呢?其实我们可以在《Reference manual》的第九章中找到答案,如文档截图
在这里插入图片描述
这段话的意思很明显,如果是STM32F105xx和STM32F107xx,是Connectivity Line Devices,则宏定义选择的是STM32F10X_CL;如果是别的型号,则根据FLASH的容量来进行选择。可能文字写的有点不太清楚,还是以表格来说明:

在这里插入图片描述

这些参数,和MDK的设备参数一致,如图所示:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值