stm32工程建立中关于宏定义和启动文件的选择

在STM32的学习过程中,第一步关于stm32工程的建立就会难倒很多人,因为他不像其他AVR 51单片机这些,options中的配置比较复杂,其中最让人头疼的就是关于c/c++ compiler选项中preprocessor这个选择框,现在我就对其中的两项进行说明,一是为了让以后学习STM32的同学能更快的了解,二是为了让我自己更好的复习。

如上图所示  其中 additional include directories下面的框需要添加工程内头文件所在的路径,‘$PROJ_DIR$‘表示的是工程所在的路径,‘\..‘表示回到上一个目录,需要把所有的头文件的路径都给加上来,每一行写一个路径。这样使用相对路径的好处就是方便在整个工程拷贝移动后还能够正确的运行。

  下面defined symbols需要选择填写一些宏定义,这是我今天写这篇博文的主要原因:

USE_STDPERIPH_DRIVER     //表示要使用stm32的外设库来进行程序开发

USE_STM3210E_EVAL         //表示要使用stm32官方提供的stm32_eval文件,这里面包含了一些对LED和按键的一些简单处理,当然我们可以对立面的这些管脚进行修改,以便于适合我们的开发板

STM32F10X_LD                  //stm32f101系列 102系列 103系列的单片机 Flash容量是在16k和32k之间的

STM32F10X_LD_VL            //stm32f100系列的单片机  Flash容量在16k和32k之间

STM32F10X_MD                //stm32f101系列 102系列 103系列的单片机 Flash容量是在64k和128k之间的

STM32F10X_MD_VL          //stm32f100系列的单片机  Flash容量在64k和128k之间

STM32F10X_HD                //stm32f101系列 102系列 103系列的单片机 Flash容量是在256k和512k之间的

STM32F10X_HD_VL          //stm32f100系列的单片机  Flash容量在256k和512k之间

 STM32F10X_XL                //STM32F101系列和103系列的产品   Flash容量在512k和1024k之间

STM32F10X_CL                //STM32F105系列和STM32F107系列的产品

上面的几个宏定义可以连起来一起说,以便于理解,首先说说各个符号的意义:

LD:表示低密度产品 Flash容量在16k和32k之间的处理器

MD:表示中密度产品 Flash容量在64k和128之间的处理器

HD:表示高密度产品 Flash容量在256k和512k之间的处理器

XL:表示超高密度产品 Flash容量在512k和1024k之间的STM32F101x和STM32F103x处理器

CL:表示的是互联网型的处理器  是指STM32F105X和STM32F107X型处理器

VL:表示超值型的处理器,即STM32F100系列的处理器

所以根据每个符号的意义,也可以推算出我们在新建工程的时候需要选择那些宏定义。

还有关于启动文件的选择问题,相信看完每个符号的意义以后,就会知道选择哪个需要的启动文件了,可以参考宏定义选择,如果我再一个个列出来就太看不起大家智商了

startup_stm32f10x_ld_vl.s

startup_stm32f10x_ld.s

startup_stm32f10x_md_vl.s

startup_stm32f10x_md.s

startup_stm32f10x_hd.s

startup_stm32f10x_xl.s

startup_stm32f10x_cl.s

希望这篇文章能对大家有帮助,这是我自己第一次写文章,如果有错误的话,希望大家能够指出

stm32工程建立中关于宏定义和启动文件的选择

时间: 2024-10-17 02:10:06

stm32工程建立中关于宏定义和启动文件的选择的相关文章

iOS开发中使用宏定义提高开发效率

iOS开发中使用宏定义提高开发效率 (2013-07-10 10:47:33) 转载▼ iOS开发中,巧妙的使用宏定义,可以提高开发效率,本篇简单介绍一下宏的定义,设置,应用,并在未来实践中不断追加一些常用的宏定义. 调试Log iPhone应用程序开发调试的时候,在代码中加入NSLog的暴力调试方法是很频繁的,但是在release的时候要删除这些调试代码,那工作量是烦躁,这样的情况下,试用宏就会显得非常的方便. 看下面的例子: #ifdef DEBUG #define LOG(...) NSL

swift中类似宏定义

建一个类 如,在Contans.swift中 import UIKit let kMAIN_SIZE = UIScreen.mainScreen().bounds 在其他地方直接用 比如在 MyTabbarViewController.swift中 var bgView = UIView(frame:CGRectMake(0, 0, kMAIN_SIZE.width, kMAIN_SIZE.height - 20 - 44)); swift中类似宏定义,布布扣,bubuko.com

Makefile中进行宏定义

实际上是gcc命令支持-D宏定义,相当于C中的全局#define: gcc -D name gcc -D name=definition Makefile中可以定义变量(和宏很像),但是是给make解释器用的,对所编译的文件完全没有作用. 关键词: Make宏定义 Make传递宏定义 Makefile中添加宏定义 Makefile -D 在Makefile中我们可以通过宏定义来控制源程序的编译.只要在Makefile中的CFLAGS中通过选项-D来指定你于定义的宏即可. 如:CFLAGS +=

C++中的内联函数和C中的宏定义的区别

在C++中内联函数: 内联函数即是在函数的声明和和定义前面加上“inline”关键字,内联函数和常规函数一样,都是按照值来传递参数的,如果参数为表达式,如4.5+7.5,则函数将传递表达式的值(这里为12),而宏定义则不同. 在C中的宏定义: C语言使用的预处理器语句#define来提供宏,例如:#define SQUARE(X)  X*X,这里宏并不是通过值传递来实现的,而是通过文本替换来实现的. 内联函数和宏定义的区别用下面的代码来观察: //内联函数 inline double squar

C语言学习笔记--C语言中的宏定义

1. C 语言中的宏定义 (1)#define 是预处理器处理的单元实体之一(因此,预处理器只是简单的进行替换,并不(2)#define 定义的宏可以出现在程序的任意位置(包括函数体的内部)(3)#define 定义之后的代码都可以使用这个宏 2. 定义宏常量 (1)#define 定义的宏常量可以直接使用(2)#define 定义的宏常量本质为字面量 3. 宏定义表达式 (1)#define 表达式的使用类似函数调用(2)#define 表达式可以比函数更强大(3)#define 表达式比函数

黑马程序员------C 语言学习笔记---C语言中的宏定义

1.5    C语言程序的运行过程 01 源程序:由高级语言或汇编语言编写,C语言源程序的扩展名为.C 02 目标程序:源程序经“编译程序”翻译所得的二进制代码为目标程序,其扩展名为.obj 03 可执行程序:目标程序与库函数连接,形成可执行程序,.out #include <stdio.h> int main() { #define PI 3.14 double r,len,area; printf("请输入半径:\n"); // 提示用户输入半径 scanf("

Atl(COM)编程如何在idl文件中使用宏定义(如#ifndefine XXX)

使用Atl进行Arcgis engine二次开发中经常会涉及到多个版本的(9.3.10.0.10.1......)develop kit,在接口声明的时候一般会把具体的接口转换成IUnknow*或者IDispatch*接口对象,而这两个对象是com通用的接口,不需要我们再自己引入:importlib("stdole2.tlb");但是如果这样操作的话就可能导致不能形象的表达出我们实际传递的对象类型,可能造成用户使用错误(毕竟用户不是我们设计人员,不能全部明白其用途),所以我们尽可能的传

内核中的宏定义__init、__initdata和__exit、__exitdata

__init.__initdata和__exit.__exitdata的定义位于<kernel/include/linux/init.h> 1 /* These are for everybody (although not all archs will actually 2 discard it in modules) */ 3 #define __init __section(.init.text) __cold notrace 4 #define __initdata __section

怎么找回Eclipse 项目(工程)中丢失的R包(文件)

我想很多人也会遇到和我一样的问题,但是在短时间内不知道如何是好,只能抓耳挠腮的"狂躁"! 现在CSDN就是我的一个笔记本,我会把我在做项目中遇到的各个问题意义的列举出来: 但是总不能把自己写的项目删掉,再重新建立吧!(如果使用了SVN,可能重新再弄会轻松点)  但是我想要更加方便的方法: 一般情况下: 方法一:选中项目>clean一下 方法二:选中项目>Android Tools>Fix 一下 如果还不行的话,还有一种方式: 第一:进入你的XXX.XML文件中,首先找