蓝桥杯嵌入式_STM32_新建工程文件_详解

注:此学习基于野火学习视频,推荐先看完固件库之前的所有视频,以打下一个良好的基础。详见野火论坛

(因为这里还是需要一些野火的基础的,我就先按照自己理解的逻辑编写,看不懂的同学推荐补完野火关于寄存器到固件库的视频)

猜想固件库

根据我们学过的51单片机,可以推断固件库中会包含哪些文件。
(以下猜想来源于野火)

1、汇编编写的启动文件
Starup_stm32f10x_hd.s:设置堆栈指针、设置PC指针、初始化中断向量表、配置系统时钟、调用C库函数_main最终去到C的世界;

2、时钟配置文件
system_stm32f10x.c:把外部时钟HSE=8M,经过PLL倍频为72M;

3、外设相关
stm32f10x.h:实现内核外面外设的寄存器映射;
xxx:GPIO、USRAT、I2C、SPI、FSMC;
stm32f10x_xx.c:外设的驱动函数库文件;
stm32f10x_xx.h:用来存放外设的初始化结构体,外设初始化结构体成员的参数列表,外设固件库函数的声明;

4、内核相关
CMSIS - Cortex 微控制器软件接口标准;
core_cm3.h:实现内核里面外设的寄存器映射;
core_cm3.c;

NVIC(嵌套向量中断控制器)、SysTick(系统嘀嗒定时器)
misc.h;
misc.c;

5、头文件的配置文件
stm32f10x_conf.h:头文件的头文件(包含了所有外设头文件的头文件);

6、专门存放中断服务函数的C文件
stm32f10x_it.c;
stm32f10x_it.h;

了解固件库

打开赛点资源包里的固件库文件——请添加图片描述
上面有路径(其实一开始就一个文件夹,疯狂点击就行了)。

打开后我们可以看到有四个文件夹——
(图片来源:野火)
请添加图片描述
第一个文件夹里是几个图标,不用管他;
第二个文件夹里是库源码及启动文件,我们要调用的库文件就在这里面;
第三个文件夹里是官方评估版的例程,我们可以在里面复制配置代码,通过修改参数来达到我们需要的功能,可以方便我们快速配置代码;
第四个文件是库使用帮助文档,可以看一下,但他是全英文的。

了解 Libraries文件夹

打开第二个文件夹 Libraries——
请添加图片描述
里面有两个文件夹:CMSIS,STM32F10x_StdPeriph_Driver.

通过名称我们可以知道第一个是内核文件,第二个是外设驱动文件。
(CMSIS - Cortex 微控制器软件接口标准)
(Peripheral 外设 ,Driver 驱动程序 )

了解CMSIS文件夹

我们先打开CMSIS文件夹——
请添加图片描述
其他文件都是没有用的,我们继续点开CM3文件夹——
(没用是因为。。。啊这,怎么说呢,程序里不能调用这些文件,那些有兴趣就直接看看吧)
请添加图片描述
这里就用一个脑图示意下了。(脑图是参考野火做的)
启动文件选ARM是因为我们是ARM为核心的板子;
选md的启动文件是因为蓝桥杯是 STM32F103RBT6 的板子,R是64个引脚,B是128K,T是QFR封装,6是工作温度-40-85摄氏度。
具体可参考这个博客@chiaixian2107-STM32F103RBT6 型号说明

(我不是参考这个博客的哈,我是之前就记住的)
请添加图片描述
请添加图片描述
(来源:参考数据中文版第一章1.2术语表)
根据官方的讲解,我们就知道应该选md中容量的了。

了解STM32F10x_StdPeriph_Driver文件夹

接下来就看 STM32F10x_StdPeriph_Driver 文件夹了。请添加图片描述
里面就两个文件夹(那个HTML文件别管),
其中 inc 表示include,里面是各个外设的头文件;
那么相对应的,src 里就是各个外设的.c文件了。
请添加图片描述
这里就附上.c文件的图,头文件的就自己看吧。
请添加图片描述

了解Project文件夹

打开 Project 文件夹——
在这里插入图片描述
根据名称,我们可以知道——
第一个是外设例程文件,里面有每个外设的例程,我们后面写程序可以直接这里面复制;
第二个是模版文件,类似于官方给我们的LCD模版文件,里面有些驱动在刚刚的Libraries文件里没有,我们可以在这里复制过去。

打开 STM32F10x_StdPeriph_Template 文件——
请添加图片描述
里面的 stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h 等会儿需要加入到我们的工程中。

打开 STM32F10x_StdPeriph_Examples 文件——请添加图片描述
里面就是各个外设的例程啦,等我们正式开始学程序的时候就可以用到。

开始新建工程

新建文件夹

OK,了解完库文件后,我们就正式开始新建工程了。

首先,新建一个文件夹,然后在文件夹里再新建下面几个文件夹——在这里插入图片描述
(这是我学野火建的)
第一个 Doc 文件夹,装一个readme.txt文件,用来写程序的作用和一些小备注;
第二个 Libraries 文件夹,用来装我们一会儿要从库里拷贝的文件;
第三个 Output 文件夹,用来装程序的生成文件;
第四个 Project 文件夹,用来装工程,我们把工程就新建在这个里面;
第五个 User 文件夹,用来装我们自己写的.c和.h文件。

添加库文件

先把整个库都添加到 Libraries 文件夹中。

CMSIS文件夹

按照我们之前说的,只把框出来的文件保留,其他都删掉,并将它们都放到CMSIS,而不是留在CMSIS里的文件夹里(不然后面添加头文件很麻烦)——
请添加图片描述
在这里插入图片描述

STM32F10x_StdPeriph_Driver文件夹

这个就整个搬过来,毕竟这是所有外设的驱动文件——在这里插入图片描述

STM32F10x_StdPeriph_Template文件夹

这个是官方的例程文件,我们只要把里面的 stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h 加入到我们的工程中就行了——在这里插入图片描述

配置工程

新建工程文件

然后打开Keil4,点击新建工程,选择芯片类型为 stm32f103rb——在这里插入图片描述

在这里插入图片描述

添加工程文件夹

然后点击这个“品”——在这里插入图片描述
增加下面几个文件夹——在这里插入图片描述
(双击那个名称可以改名,添加是按那个红叉左边的虚线框)

添加文件

然后按照下面的图来配置好工程里的文件夹——
在这里插入图片描述

设置工程

点击这个魔术棒——
在这里插入图片描述

调试与生成

把下面三个都勾上——
(第一个是调试信息,第二个是生成hex文件,第三个是浏览信息,就是点击某个函数可以跳转到他的定义或声明)

在这里插入图片描述
然后就是更改生成文件的地址——
同一页面,点击下面这按键——
在这里插入图片描述
然后选择 Output 文件夹,然后点确定就行了——
在这里插入图片描述

配置预处理器声明在这里插入图片描述

我这个图里是已经配置好了的,下面我们来看为什么要这样配置(都在 stm32f10x.h 文件中)——

STM32F10X_MD

在这里插入图片描述
第一段:Library_configuration_section 库配置部分
第二段:Uncomment the line below according to the target STM32 device used in you application 根据应用程序中使用的目标 stm32设备取消注释下面的行
(说明我们需要选择我们的设备,而之前我们说过了我们的设备是中容量的,所以选择STM32F10X_MD)
第三段:To avoid modifying this file each time you need to switch between these devices, you can define the device in your toolchain compiler preprocessor.
为了避免每次需要在这些文件之间切换时修改该文件设备,你可以在工具链编译器预处理器中定义设备。
(所以我们需要把 STM32F10X_MD 定义在预处理器中)

那为什么一定要配置呢?
在这里插入图片描述
下面就说了,如果你没有定义这个设备类型的话,“Please select first the target STM32F10x device used in your application (in stm32f10x.h file)”(“请首先选择在您的应用程序中使用的目标STM32F10x设备(在STM32F10x .h文件中)”)。

USE_STDPERIPH_DRIVER

在这里插入图片描述
Comment the line below if you will not use the peripherals drivers.
In this case, these drivers will not be included and the application code will be based on direct access to peripherals registers
如果您不使用外围设备驱动程序,请在下面的行中注释。
在这种情况下,这些驱动程序将不包括在内,应用程序代码将基于对外设寄存器的直接访问。

也就是说,如果不定义这个 USE_STDPERIPH_DRIVER ,那么我们就用不了外设了。所以当然要定义啦。
跟上面一样,为了方便,也在预处理器中定义他。

注意,用英文逗号隔开,不要用分号等其他符号!

添加头文件路径

这个相信大家都很熟悉,放一张我的路径来作为参考就行了——
在这里插入图片描述
在这里插入图片描述

配置调试工具

我们是选择 CooCox Debugger——
在这里插入图片描述
然后点旁边的 settings——
前面两个按照这个选,第三个都无所谓吧。
一般插了板子的话,你选好了右边会显示板子的型号,如果没有就重启工程,JTAG有时候是这样——
在这里插入图片描述
然后点 Flash Download——
点Add,然后找到下面我已经添加的型号,添加就行了(因为我们是RBT6嘛,B就是128K)——
在这里插入图片描述

在这里插入图片描述

最后这个,取消掉右边那个圈的勾选(默认选中,选中的话,左边的圈就不能改),然后把左边的圈选择 CooCox Debugger 就行了——
在这里插入图片描述

测试

main.c 文件里写一个最简单的

#include <stm32f10x.h>
int main(){
  return 0;
}

然后,运行!

若显示下图,
请添加图片描述
就表示工程文件配置好了!

觉得有用的点个赞哈,谢谢~

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Moqim Flourite.

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值