如何新建工程 |
对于STM32那众多文件,我确实一下懵了(MDK)
都说,学STM32有用库和用寄存器两种。对于初学者来说,那么一大堆寄存器是没可能记住的。
而用库函数的话就好多了。可是,真的是有好多的库函数。
开始的时候,不要去看说明书,也不要去看固件库的具体函数了。我认为,最重要的是理解各个文件之间的关系,整理出适合自己工程模板来。
这就是各个文件关系图
如何建立工程模板放在下面这个链接里(教程可能会有一点点出入,请自己摸索),还有我自己建的模板(基于3.5固件库)。
请点击
这里!
新建工程出现的问题 |
- #include <stm32f10x_lib.h>在V3.0以后的固件库中已经改为#include <stm32f10x.h>。
- 如果只是用寄存器操作,可以不添加库文件,只需要#include<stm32f10x.h>。在这个文件里定义了所有需要用到的寄存器。
- STM32F10x*.LIB是ST公司提供的静态链接库(不能查看里面的函数),以前没有公开源代码,在最新的MDK4.5可以发现已经是V3.5的固件库了,而且已经开放了源代码。
- Target选项中勾选 Use MicroLIB(迷你库)就能够使用printf函数,但会增加代码大小。
- Output选项中的Create Library能创建自己的lib文件。
- C/C++选项中的Define USE_STDPERIPH_DRIVER代表使用标准外设固件库,而不是MDK安装目录下的库。STM32F10X_HD代表芯片类型。include Paths包含头文件的路径。
- GPIO各种模式的区别:
-
- 作为普通GPIO输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,
同时不要使能该引脚对应的所有复用功能模块。 - 作为普通GPIO输出:根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引
脚对应的所有复用功能模块。 - 作为普通模拟输入:配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有
复用功能模块。 - 作为内置外设的输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,
同时使能该引脚对应的某个复用功能模块。 - 作为内置外设的输出:根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能
该引脚对应的所有复用功能模块。
- 模拟输入模式下,是用于AD输入时输入模拟量,此时施密特触发器输入关闭,施密特触发器输出为0。
- 下拉输入:打开内部下拉电阻。
- 上拉输入:打开内部上拉电阻。
- 浮空输入 :这个输入模式,输入电平必须由外部电路确定,要根据具体电路,加外部上拉电阻或下拉电阻。
- 推挽输出:可以输出高,低电平,连接数字器件。推挽式输出输出电阻小,带负载能力强。
- 、开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强
(一般20ma以内).能驱动大电流和大电压。LED就使用这种模式。
- 作为普通GPIO输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,
- GPIO有一些能耐5V的管脚,数据手册中标有FT的即是。
- 管脚设为输出时,放弃控制权(拉高)时也可以输入,但拉低的时候不能输入。
- CODE-->程序占用flash大小,RO-data-->程序定义的常量大小(flash),RW-->程序定义的变量大小(sram),ZI-data-->初始化为0的常量大小(sram)。程序总大小为CODE+RO-data的大小。