求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
要资料
 
追随技术信仰

随时听讲座
每天看新闻
 
 
STM32单片机自学教程
0.前言
1.STM32单片机入门
2.STM32开发C语言
3.STM32F1x系统架构
4.STM32单片机系统电路
5.STM32F1x的寄存器
6.STM32开发环境介绍
7.嵌入式开发常见概念简介
8.STM32开发方式(库函数)介绍
9. Keil5-MDK软件简介
10.创建MDK工程-寄存器版
11.创建MDK工程-基于自建库函数
12.STM32标准库简介
13.创建MDK工程-基于标准库版
14.GPIO简介
15.GPIO输入-按键检测
16.GPIO位带操作
17.RCC-STM32时钟配置
18.STM32中断系统概述
19.基本定时器
 

 
目录
 
第13章.创建MDK工程-基于标准库版
来源:CSDN,作者:村里大明白
39 次浏览
4次  

上节我们介绍了STM32的标准库,现在我们就可以基于标准库来建立工程了。基于标准库的模版比较固定,而且还是稍微有点麻烦的。所以我们经常是建立一个空的工程模版,后面开发的时候直接复制工程模板进行开发。现在我们就一步步的操作一下。

13.1 新建本地工程文件夹

在本地我们新建文件夹“Led_StdLibVersion”用于存放工程。然后新建4个文件夹:“Doc”,“StdLibrary”,” System”,”User”,如图13.1-1所示。当然这个不是固定的,按自己的喜好建立即可,只要文件夹清晰,一看文件夹就知道作用是干什么的就行了。

​图13.1-1 新建文件夹目录

下面针对每个文件夹需要放的文件进行说明:

Doc文件夹:

用来存放程序相关的说明文件,比如程序怎么使用,注意事项等等。

StdLibrary文件夹:

主要是把外设相关的库函数放入,即\Libraries\STM32F10x_StdPeriph_Driver下inc和src两个文件夹下的所有文件。如图13.1-2.

图13.1-2 StdLibrary文件夹

System文件:

放入系统相关的文件,包含启动,内核及外设的寄存器映射,系统时钟配置等核心函数。主要是STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3中的文件:core_cm3.c, core_cm3.h, stm32f10x.h, system_stm32f10x.c, system_stm32f10x.h以及启动汇编文件startup_stm32f10x_md.s(注意,不同型号的启动文件不一样,md的是STM32F103C8T6型号的,选择方法前面章节有介绍,这里不再赘述。)如图13.1-3.

图13.1-3 system文件夹

User文件夹:

存放用户编写的函数,如main.c,以及中断服务函数system_stm32f10x.c, system_stm32f10x.h以及stm32f10x_conf.h。如图13.1-4.

图13.1-4 User文件夹

13.2 新建工程

13.2.1 新建工程

在我们新建的“Led_StdLibVersion”文件夹下新建工程,命名“project”。这个过程前面讲解过,这里不再赘述

13.2.2 新建组

我们新建3个组,和我们新建的文件夹同名:“StdLibrary”,” System”,”User”。如图13.2-1所示。

图13.2-1 新建组

13.2-3 添加文件

图13.2-2 添加文件

如上图所示,将同名文件夹下的文件,全部添加到MDK的同名组中。添加完成后如图13.2-3所示。

13.3 配置魔术棒选项卡

13.3.1 Output 选项卡

在Output 选项卡中把输出文件夹定位可以定位到指定文件夹,这里我一般习惯默认系统自动生成的文件夹object,这一步可不用操作。如果想在编译的过程中生成 hex 文件,可以把 Create HEX File 选项勾上。如下图:

图13.3-1 output选项卡

图13.3-2 工程组添加文件后

13.3.2 C/C++选项配置

图13.3-3 C/C++选项卡设置

如上图,C/C++选项开主要配置2个地方:

①Define配置:

在这个选项中添加宏,就相当于我们在程序中使用“#define”定义宏的效果是一样的。但是如果放在编译器中添加这个宏,优势就是后面我们新建工程的时候只要用了这个模版,就不用再在程序文件中修改代码。在上图Define位置我们需要输入:USE_STDPERIPH_DRIVER。目的就是为了让stm32f10x.h包含stm32f10x_conf.h头文件,把所有外设都包含进来。stm32f10x.h相关代码如下图13.3-4:

图13.3-4 stm32f10x.h代码设计外设包含部分

②Include Paths:

此处添加的头文件的路径,没有这一步编译的时候会报错提示找不到头文件。头文件放到了哪个文件夹,我们就把该文件夹添加到这里。

13.3.3 Dubug选项配置

图13.3-5 Debug选项卡配置

下拉列表选择对应调试器,Settings/Flash Download里勾选Reset and Run。这个前面讲过,就不再赘述。

13.4 使用标准库点亮LED

为区别前面2种点亮LED的方式,本次我们LED连接PB10这个IO口。

图13.4-1 简易接线图

代码如下:

  1. #include "stm32f10x.h" // Device header
  2. int main(void)
  3. {
  4. //开启APB2,GPIOB外设时钟
  5. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  6. //初始化
  7. GPIO_InitTypeDef GPIO_InitStructure;
  8. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
  9. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  10. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  11. GPIO_Init(GPIOB, &GPIO_InitStructure);
  12. //开启PB2
  13. GPIO_ResetBits(GPIOB,GPIO_Pin_2);
  14. while (1)
  15. {
  16. }
  17. }

您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



39 次浏览
4次