core
USER:存放工程文件、主函数文件 main.c,以及其他包括system_stm32f10x.c等
CORE :用来存放核心文件和启动文件
OBJ :是用来存放编译过程文件以及hex 文件
STM32F10x_FWLib :用来存放 ST 官方提供的库函数源码文件
SYSTEM:此文件夹里面的代码由 ALIENTEK 提供,是STM32F10x 系列的底层核心驱动函数,可以用在 STM32F10x 系列的各个型号上面,方便大家快速构建自己的工程。
HARDWARE:存放我们其他硬件的代码
1.FATFS简介:
适合嵌入式小型单片机,是一个 独立 的软件层文件系统,我们只需要将底层硬件的读取函数移植到FATFS提供的向下的接口(Media Access Interface),完成之后,就可以像电脑一样使用文件的操作函数(FATFS提供的向上的供我们使用的API函数 (Application Interface) )。
FAFTS中的函数参数介绍中的,IN表示该参数是传入数值;OUT表示,该参数是介质用于存放需要传出数据的载体。
C/C++ Extension Pack什么扩展安装了
USMART是什么?
有了 USMART,你可以轻易的修改函数参数、查看函数运行结果,从而快速解决问题。比如你调试一个摄像头模块,需要修改其中的几个参数来得到最佳的效果,普通的做法:写函数修改参数下载看结果不满意修改参数下载看结果不满意….不停的循环,直到满意为止。这样做很麻烦不说,单片机也是有寿命的啊,老这样不停的刷,很折寿的。而利用USMART,则只需要在串口调试助手里面输入函数及参数,然后直接串口发送给单片机,就执行了一次参数调整,不满意的话,你在串口调试助手修改参数在发送就可以了,直到你满意为
止。这样,修改参数十分方便,不需要编译、不需要下载、不会让单片机折寿。
主要作用,方便代码的测试和调试。
USMART怎么用?
1.添加USMAR文件到你创建的工程下面,然后添加文件夹 内容和头文件。
2.注释掉原来调用的外部函数。
3.USMART用到了定时器,在FWLIB文件中添加官方的定时器库函数文件。
4.在主函数中添加USMART的头文件,在函数初始处调用USMART的初始化函数usmart_dev.init(SystemCoreClock/1000000);
5.自己在主函数中定义的函数,除了要在usmart_config.h中添加外,还要在最前面定义一个外部声明,extern void … 。同时注意若是调用的函数记得在usmart_config.h文件中加入头文件
这个配置文件似乎与嵌入式系统或微控制器的调试和编程有关。我会为你解释每个部分和参数的含义:
- [BREAKPOINTS]
ForceImpTypeAny = 0
: 这可能是关于断点类型的设置。值为0可能表示不使用特定的强制实现类型。ShowInfoWin = 1
: 在某些操作中可能显示信息窗口。EnableFlashBP = 2
: 允许在Flash存储器上设置断点。具体的值“2”可能表示某种特定的模式或状态。BPDuringExecution = 0
: 在执行期间不允许设置断点。
- [CFI]
CFISize = 0x00
:CFI(Call Frame Information)的大小。它通常用于调试时的堆栈展开。CFIAddr = 0x00
: CFI的起始地址。
- [CPU]
OverrideMemMap = 0
: 不覆盖默认的内存映射。AllowSimulation = 1
: 允许模拟模式。ScriptFile=""
: 用于CPU的脚本文件路径,当前为空。
- [FLASH]
- 与Flash存储器相关的设置。
CacheExcludeSize = 0x00
: 不从缓存中排除的Flash区域的大小。CacheExcludeAddr = 0x00
: 不从缓存中排除的Flash区域的起始地址。MinNumBytesFlashDL = 0
: Flash下载的最小字节数。SkipProgOnCRCMatch = 1
: 如果CRC匹配,则跳过编程。VerifyDownload = 1
: 下载后验证数据。AllowCaching = 1
: 允许缓存。EnableFlashDL = 2
: 启用Flash下载。具体的值“2”可能有特定的意义。Override = 0
: 不覆盖Flash的默认设置。Device="UNSPECIFIED"
: Flash设备未指定。
- [GENERAL]
WorkRAMSize = 0x00
: 工作RAM的大小。WorkRAMAddr = 0x00
: 工作RAM的起始地址。RAMUsageLimit = 0x00
: RAM使用的限制。
- [SWO]
SWOLogFile=""
: SWO(Single Wire Output)的日志文件路径,当前为空。
- [MEM]
- 关于内存读取和写入的覆盖设置。
RdOverrideOrMask
,RdOverrideAndMask
,RdOverrideAddr
: 读取覆盖的或掩码、与掩码和地址。WrOverrideOrMask
,WrOverrideAndMask
,WrOverrideAddr
: 写入覆盖的或掩码、与掩码和地址。
这个配置文件可能是一个调试器或编程器的设置,用于配置如何与目标设备(如微控制器)进行交互。不同的值可能会改变工具的行为,如是否验证下载、是否缓存以及如何处理断点等。
OSC_IN和OSC_OUT默认是外部晶振引脚的。
在STM32上如果不使用外部晶振,OSC_IN和OSC_OUT的接法
如果使用内部RC振荡器而不使用外部晶振,请按照下面方法处理:
1)对于100脚或144脚的产品,OSC_IN应接地,OSC_OUT应悬空。
2)对于少于100脚的产品,有2种接法:
2.1)OSC_IN和OSC_OUT分别通过10K电阻接地。此方法可提高EMC性能。
2.2)分别重映射OSC_IN和OSC_OUT至PD0和PD1,再配置PD0和PD1为推挽输出并输出'0'。此方法可以减小功耗并(相对上面2.1)节省2个外部电阻。
VDD、VSS、VREF+、VSSA、VDDA、NRST、VBAT,我在此处做些解释,防止有些同学不明白还懒。
① VCC: 学过 51 的同学都知道 51 供电引脚是个 VCC,VCC 就是接入电路的电压。(V代表电压,C 字母代表电路)
② VDD: 器件内部的工作电压,咱们一般直接接 3.3V 了。(D 为 device器件的首字母,表示器件)
③VSS: 通常指电路公共接地端电压,所以可以看到往往咱们都把其接到GND 去了。(S为 series 表示公共连接的意思)
④VDDA: 通对比 VDD 多了个A,不用想,这肯定和模拟电路有关,所以这玩意是对所有的模拟电路部分供电。需要注意的是VDDA 和 VDD 之间的电压差不能超过 300mV,VDD 与 VDDA应该同时上电或调电,所以咱们就不自找麻烦整写花里胡哨的电路了,这两玩意直接连同一个电源就是了。
⑤VSSA:接地的玩意后面跟了个 A,毫无疑问,这是 VDDA
的地,所以我们可以理解出来,VDDA 和 VSSA是单片机内部模拟电路的正负(电源),所以啊,你要是这两玩意不接好,怕是不能使得单片机正常工作了。那为啥我右边这张图的VSSA(31
号引脚)接了一个数字地呢?不该是接到模拟地吗?那是因为我这个芯片画错了,这里 31号引脚是 VREF-,而不是 VSSA。但真的就是错的?这里画错是有一定道理的,在VREF-可用时,必须绑定到 VSSA。
⑥VREF+、VREF-:关于这个,看到 ref,大家就应该知道这玩意是个参考电压,结合stm32 的引脚具备 A/D 转换的功能这点,就能清楚这玩意是用来提高 ADC精度的。在引脚数目上了 100后,为了保证更好的低电压输入精度,连接一个单独的参考电压输入到VREF+中,VREF+输入电压范围为 2.0V 到 VDDA,VREF-可用时,必须绑定到VSSA。在引脚数为 64 时,将没有这个 VREF(实际上不是没有,而是不引出了,VREF+、VREF-在内部被接到 VDDA、VSSA 上去了)对于 NRST 和VBAT,电路如图 7 所示:
Header 在电路中一般表示插针连接器。
如果Header后直接跟数字 x ,则表示该连接器有 x 列插针;
如果Header后不仅有数字 x 还有数字 2 ,则表示该连接器为双排 x 列插针。
如果Header最后一位是字母 H ,则表示该排针为90°转角插针。